From 1aba986d9f219a872c83b5f8b46f641e2699a222 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Sat, 9 Feb 2013 12:42:18 +0000 Subject: [PATCH 001/575] Fixed bug causing nested file read over webdav to fail --- apps/files_encryption/lib/proxy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 55cddf2bec..7ae36e34ce 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -281,7 +281,7 @@ class Proxy extends \OC_FileProxy { // Reformat path for use with OC_FSV $path_split = explode( '/', $path ); - $path_f = implode( array_slice( $path_split, 3 ) ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; From b3e59ca1e31f162d7ac720d8729958f438b23a02 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Sat, 9 Feb 2013 18:39:32 +0000 Subject: [PATCH 002/575] Work on post_share hook for files_encryption New method in OCP\Share{}:: getUsersSharingFile() Development shapshot --- apps/files_encryption/hooks/hooks.php | 71 ++- apps/files_encryption/lib/keymanager.php | 583 +++++++++++------------ apps/files_encryption/lib/proxy.php | 32 +- lib/public/share.php | 54 +++ 4 files changed, 429 insertions(+), 311 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 8bdeee0937..c6d4c16115 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -166,14 +166,77 @@ class Hooks { */ public static function postShared( $params ) { - // Delete existing catfile - Keymanager::deleteFileKey( ); + // NOTE: $params is an array with these keys: + // itemSource -> int, filecache file ID + // shareWith -> string, uid of user being shared to + // fileTarget -> path of file being shared + // uidOwner -> owner of the original file being shared - // Generate new catfile and env keys - Crypt::multiKeyEncrypt( $plainContent, $publicKeys ); + $view = new \OC_FilesystemView( '/' ); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + + $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'] ); + + $userIds = array(); + + foreach ( $shares as $share ) { + + $util = new Util( $view, $share['userId'] ); + + // Check that the user is encryption capable + if ( $util->ready() ) { + + // Construct array of just UIDs for Keymanager{} + $userIds[] = $share['userId']; + + } else { + + // Log warning; we can't do necessary setup here + // because we don't have the user passphrase + // TODO: Provide user feedback indicating that + // sharing failed + \OC_Log::write( 'Encryption library', 'File cannot be shared: user "'.$share['userId'].'" is not setup for encryption', \OC_Log::WARN ); + + } + + } + + trigger_error("UIDS = ".var_export($userIds, 1)); + + $userPubKeys = Keymanager::getPublicKeys( $view, $userIds ); + +// trigger_error("PUB KEYS = ".var_export($userPubKeys, 1)); + + // TODO: Fetch path from Crypt{} getter + $plainContent = $view->file_get_contents( $userId . '/' . 'files'. '/' . $params['fileTarget'] ); + + // Generate new catfile and share keys + if ( ! $encrypted = Crypt::multiKeyEncrypt( $plainContent, $userPubKeys ) ) { + + // If the re-encryption failed, don't risk deleting data + return false; + + } + + trigger_error("ENCRYPTED = ". var_export($encrypted, 1)); // Save env keys to user folders + foreach ( $encrypted['keys'] as $key ) { +// Keymanager::setShareKey( $view, $params['fileTarget'], $userId, $key ); + + } + + // Delete existing catfile + // Check if keyfile exists (it won't if file has been shared before) + // Do this last to ensure file is recoverable in case of error + if ( $util->isEncryptedPath( $params['fileTarget'] ) ) { + + // NOTE: This will trigger an error if keyfile isn't found +// Keymanager::deleteFileKey( $params['fileTarget'] ); + + } } diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 0d0380db6e..3160572ba1 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -1,267 +1,244 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -namespace OCA\Encryption; - -/** - * @brief Class to manage storage and retrieval of encryption keys - * @note Where a method requires a view object, it's root must be '/' - */ -class Keymanager { + + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Encryption; + +/** + * @brief Class to manage storage and retrieval of encryption keys + * @note Where a method requires a view object, it's root must be '/' + */ +class Keymanager { - /** - * @brief retrieve the ENCRYPTED private key from a user - * - * @return string private key or false - * @note the key returned by this method must be decrypted before use - */ - public static function getPrivateKey( \OC_FilesystemView $view, $user ) { - - $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; - - $key = $view->file_get_contents( $path ); - - return $key; - } - - /** - * @brief retrieve public key for a specified user + /** + * @brief retrieve the ENCRYPTED private key from a user + * + * @return string private key or false + * @note the key returned by this method must be decrypted before use + */ + public static function getPrivateKey( \OC_FilesystemView $view, $user ) { + + $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; + + $key = $view->file_get_contents( $path ); + + return $key; + } + + /** + * @brief retrieve public key for a specified user * @param \OC_FilesystemView $view * @param $userId - * @return string public key or false - */ - public static function getPublicKey( \OC_FilesystemView $view, $userId ) { - - return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); - - } - - /** - * @brief retrieve both keys from a user (private and public) + * @return string public key or false + */ + public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + + return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); + + } + + /** + * @brief Retrieve a user's public and private key * @param \OC_FilesystemView $view * @param $userId - * @return array keys: privateKey, publicKey - */ - public static function getUserKeys( \OC_FilesystemView $view, $userId ) { - - return array( - 'publicKey' => self::getPublicKey( $view, $userId ) - , 'privateKey' => self::getPrivateKey( $view, $userId ) - ); - - } - - /** - * @brief Retrieve public keys of all users with access to a file - * @param string $path Path to file - * @return array of public keys for the given file - * @note Checks that the sharing app is enabled should be performed - * by client code, that isn't checked here - */ - public static function getPublicKeys( \OC_FilesystemView $view, $userId, $filePath ) { - - $path = ltrim( $path, '/' ); - - $filepath = '/' . $userId . '/files/' . $filePath; - - // Check if sharing is enabled - if ( OC_App::isEnabled( 'files_sharing' ) ) { - - - - } else { - - // check if it is a file owned by the user and not shared at all - $userview = new \OC_FilesystemView( '/'.$userId.'/files/' ); - - if ( $userview->file_exists( $path ) ) { - - $users[] = $userId; - - } - - } - - $view = new \OC_FilesystemView( '/public-keys/' ); - - $keylist = array(); - - $count = 0; - - foreach ( $users as $user ) { - - $keylist['key'.++$count] = $view->file_get_contents( $user.'.public.key' ); - - } - - return $keylist; - - } - - /** - * @brief store file encryption key - * - * @param string $path relative path of the file, including filename - * @param string $key - * @return bool true/false - * @note The keyfile is not encrypted here. Client code must - * asymmetrically encrypt the keyfile before passing it to this method - */ - public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { - - $basePath = '/' . $userId . '/files_encryption/keyfiles'; - - $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - - if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { - - - - } else { - - // Save the keyfile in parallel directory - return $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - - } - - } - - /** - * @brief retrieve keyfile for an encrypted file + * @return array keys: privateKey, publicKey + */ + public static function getUserKeys( \OC_FilesystemView $view, $userId ) { + + return array( + 'publicKey' => self::getPublicKey( $view, $userId ) + , 'privateKey' => self::getPrivateKey( $view, $userId ) + ); + + } + + /** + * @brief Retrieve public keys for given users + * @param \OC_FilesystemView $view + * @param array $userIds + * @return array of public keys for the specified users + */ + public static function getPublicKeys( \OC_FilesystemView $view, $userIds ) { + + $i = 0; + $keys = array(); + + foreach ( $userIds as $userId ) { + + $i++; + $keys[$userId] = self::getPublicKey( $view, $userId ); + + } + + $keys['total'] = $i; + + return $keys; + + } + + /** + * @brief store file encryption key + * + * @param string $path relative path of the file, including filename + * @param string $key + * @return bool true/false + * @note The keyfile is not encrypted here. Client code must + * asymmetrically encrypt the keyfile before passing it to this method + */ + public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + + $basePath = '/' . $userId . '/files_encryption/keyfiles'; + + $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); + + if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { + + + + } else { + + // Save the keyfile in parallel directory + return $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + + } + + } + + /** + * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view * @param $userId * @param $filePath * @internal param \OCA\Encryption\file $string name * @return string file key or false - * @note The keyfile returned is asymmetrically encrypted. Decryption - * of the keyfile must be performed by client code - */ - public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - - $filePath_f = ltrim( $filePath, '/' ); - - $catfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - - if ( $view->file_exists( $catfilePath ) ) { - - return $view->file_get_contents( $catfilePath ); - - } else { - - return false; - - } - - } - - /** - * @brief Delete a keyfile - * + * @note The keyfile returned is asymmetrically encrypted. Decryption + * of the keyfile must be performed by client code + */ + public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + + $filePath_f = ltrim( $filePath, '/' ); + + $catfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + + if ( $view->file_exists( $catfilePath ) ) { + + return $view->file_get_contents( $catfilePath ); + + } else { + + return false; + + } + + } + + /** + * @brief Delete a keyfile + * * @param OC_FilesystemView $view * @param string $userId username * @param string $path path of the file the key belongs to * @return bool Outcome of unlink operation * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT * /data/admin/files/mydoc.txt - */ - public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { - - $trimmed = ltrim( $path, '/' ); - $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed . '.key'; - - // Unlink doesn't tell us if file was deleted (not found returns - // true), so we perform our own test - if ( $view->file_exists( $keyPath ) ) { - - return $view->unlink( $keyPath ); - - } else { - - \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); - - return false; - - } - - } - - /** - * @brief store private key from the user - * @param string key - * @return bool - * @note Encryption of the private key must be performed by client code - * as no encryption takes place here - */ - public static function setPrivateKey( $key ) { - - $user = \OCP\User::getUser(); - - $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); - - \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - return $view->file_put_contents( $user . '.private.key', $key ); - - \OC_FileProxy::$enabled = true; - - } - - /** - * @brief store private keys from the user - * - * @param string privatekey - * @param string publickey - * @return bool true/false - */ - public static function setUserKeys($privatekey, $publickey) { - - return ( self::setPrivateKey( $privatekey ) && self::setPublicKey( $publickey ) ); - - } - - /** - * @brief store public key of the user - * - * @param string key - * @return bool true/false - */ - public static function setPublicKey( $key ) { - - $view = new \OC_FilesystemView( '/public-keys' ); - - \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - return $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); - - \OC_FileProxy::$enabled = true; - - } - - /** + */ + public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { + + $trimmed = ltrim( $path, '/' ); + $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed . '.key'; + + // Unlink doesn't tell us if file was deleted (not found returns + // true), so we perform our own test + if ( $view->file_exists( $keyPath ) ) { + + return $view->unlink( $keyPath ); + + } else { + + \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); + + return false; + + } + + } + + /** + * @brief store private key from the user + * @param string key + * @return bool + * @note Encryption of the private key must be performed by client code + * as no encryption takes place here + */ + public static function setPrivateKey( $key ) { + + $user = \OCP\User::getUser(); + + $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); + + \OC_FileProxy::$enabled = false; + + if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); + + return $view->file_put_contents( $user . '.private.key', $key ); + + \OC_FileProxy::$enabled = true; + + } + + /** + * @brief store private keys from the user + * + * @param string privatekey + * @param string publickey + * @return bool true/false + */ + public static function setUserKeys($privatekey, $publickey) { + + return ( self::setPrivateKey( $privatekey ) && self::setPublicKey( $publickey ) ); + + } + + /** + * @brief store public key of the user + * + * @param string key + * @return bool true/false + */ + public static function setPublicKey( $key ) { + + $view = new \OC_FilesystemView( '/public-keys' ); + + \OC_FileProxy::$enabled = false; + + if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); + + return $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); + + \OC_FileProxy::$enabled = true; + + } + + /** * @brief store file encryption key * * @param string $path relative path of the file, including filename @@ -271,70 +248,70 @@ class Keymanager { * @return bool true/false * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method - */ - public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - - $basePath = '/' . $userId . '/files_encryption/share-keys'; - - $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - - return $view->file_put_contents( $basePath . '/' . $shareKeyPath . '.shareKey', $shareKey ); - + */ + public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + + $basePath = '/' . $userId . '/files_encryption/share-keys'; + + $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); + + return $view->file_put_contents( $basePath . '/' . $shareKeyPath . '.shareKey', $shareKey ); + } /** * @brief Make preparations to vars and filesystem for saving a keyfile */ public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { - - $targetPath = ltrim( $path, '/' ); - - $path_parts = pathinfo( $targetPath ); - - // If the file resides within a subdirectory, create it + + $targetPath = ltrim( $path, '/' ); + + $path_parts = pathinfo( $targetPath ); + + // If the file resides within a subdirectory, create it if ( isset( $path_parts['dirname'] ) && ! $view->file_exists( $basePath . '/' . $path_parts['dirname'] ) - ) { - - $view->mkdir( $basePath . '/' . $path_parts['dirname'] ); - - } - + ) { + + $view->mkdir( $basePath . '/' . $path_parts['dirname'] ); + + } + return $targetPath; - } - - /** - * @brief change password of private encryption key - * - * @param string $oldpasswd old password - * @param string $newpasswd new password - * @return bool true/false - */ - public static function changePasswd($oldpasswd, $newpasswd) { - - if ( \OCP\User::checkPassword(\OCP\User::getUser(), $newpasswd) ) { - return Crypt::changekeypasscode($oldpasswd, $newpasswd); - } - return false; - - } - - /** - * @brief Fetch the legacy encryption key from user files - * @param string $login used to locate the legacy key - * @param string $passphrase used to decrypt the legacy key - * @return true / false - * - * if the key is left out, the default handeler will be used - */ - public function getLegacyKey() { - - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView( '/' . $user ); - return $view->file_get_contents( 'encryption.key' ); - - } - + } + + /** + * @brief change password of private encryption key + * + * @param string $oldpasswd old password + * @param string $newpasswd new password + * @return bool true/false + */ + public static function changePasswd($oldpasswd, $newpasswd) { + + if ( \OCP\User::checkPassword(\OCP\User::getUser(), $newpasswd) ) { + return Crypt::changekeypasscode($oldpasswd, $newpasswd); + } + return false; + + } + + /** + * @brief Fetch the legacy encryption key from user files + * @param string $login used to locate the legacy key + * @param string $passphrase used to decrypt the legacy key + * @return true / false + * + * if the key is left out, the default handeler will be used + */ + public function getLegacyKey() { + + $user = \OCP\User::getUser(); + $view = new \OC_FilesystemView( '/' . $user ); + return $view->file_get_contents( 'encryption.key' ); + + } + } \ No newline at end of file diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7ae36e34ce..58b9bc0725 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -95,7 +95,8 @@ class Proxy extends \OC_FileProxy { if ( self::shouldEncrypt( $path ) ) { - if ( !is_resource( $data ) ) { //stream put contents should have been converted to fopen + // Stream put contents should have been converted to fopen + if ( !is_resource( $data ) ) { $userId = \OCP\USER::getUser(); @@ -107,10 +108,33 @@ class Proxy extends \OC_FileProxy { // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; - // TODO: Check if file is shared, if so, use multiKeyEncrypt + $fileOwner = \OC\Files\Filesystem::getOwner( $path ); - // Encrypt plain data and fetch key - $encrypted = Crypt::keyEncryptKeyfile( $data, Keymanager::getPublicKey( $rootView, $userId ) ); + // Check if the keyfile needs to be shared + if ( + $fileOwner !== true + or $fileOwner !== $userId + ) { + + // Shared storage backend isn't loaded + + $users = \OCP\Share::getItemShared( 'file', $path, \OC_Share_backend_File::FORMAT_SHARED_STORAGE ); +// + trigger_error("SHARE USERS = ". var_export($users, 1)); +// +// $publicKeys = Keymanager::getPublicKeys( $rootView, $users); +// +// // Encrypt plain data to multiple users +// $encrypted = Crypt::multiKeyEncrypt( $data, $publicKeys ); + + } else { + + $publicKey = Keymanager::getPublicKey( $rootView, $userId ); + + // Encrypt plain data to a single user + $encrypted = Crypt::keyEncryptKeyfile( $data, $publicKey ); + + } // Replace plain content with encrypted content by reference $data = $encrypted['data']; diff --git a/lib/public/share.php b/lib/public/share.php index af2a538e25..936f85021c 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -91,6 +91,60 @@ class Share { } return false; } + + /** + * @brief Find which users can access a shared item + * @param string Item type + * @param int Format (optional) Format type must be defined by the backend + * @param int Number of items to return (optional) Returns all by default + * @return Return depends on format + */ + public static function getUsersSharingFile( $path ) { + + // Fetch all shares of this file path from DB + $query = \OC_DB::prepare( + 'SELECT + share_type + , share_with + , permissions + FROM + `*PREFIX*share` + WHERE + file_target = ?' + ); + + $result = $query->execute( array( $path ) ); + + if ( \OC_DB::isError( $result ) ) { + + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result) . ', path=' . $path, \OC_Log::ERROR ); + + } + + $shares = array(); + + while( $row = $result->fetchRow() ) { + + // Set helpful array keys + $shares[] = array( + 'userId' => $row['share_with'] + , 'shareType' => $row['share_type'] + , 'permissions' => $row['permissions'] + ); + + } + + if ( ! empty( $shares ) ) { + + return $shares; + + } else { + + return false; + + } + + } /** * @brief Get the items of item type shared with the current user From 9c1196d73e0dc57f1f20a57e459ce053264172b8 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 10 Feb 2013 12:05:41 +0100 Subject: [PATCH 003/575] Cache: add seccond mtime field --- db_structure.xml | 8 ++++++++ lib/util.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/db_structure.xml b/db_structure.xml index fc7f1082ff..a86e5e6a8f 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -261,6 +261,14 @@ 4 + + storage_mtime + integer + + true + 4 + + encrypted integer diff --git a/lib/util.php b/lib/util.php index a5fe4cb175..7950586b58 100755 --- a/lib/util.php +++ b/lib/util.php @@ -74,7 +74,7 @@ class OC_Util { */ public static function getVersion() { // hint: We only can count up. So the internal version number of ownCloud 4.5 will be 4.90.0. This is not visible to the user - return array(4, 91, 9); + return array(4, 91, 10); } /** From 3e70d563a6774567ec77e9d9adf6b9ccb1e9619d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 10 Feb 2013 12:27:35 +0100 Subject: [PATCH 004/575] Cache: bookkeeping of storage_mtime --- lib/files/cache/cache.php | 17 ++++++++++++++--- lib/files/cache/scanner.php | 1 + lib/files/cache/watcher.php | 2 +- tests/lib/files/cache/cache.php | 18 ++++++++++++++++++ tests/lib/files/cache/watcher.php | 10 +++++----- tests/lib/files/view.php | 2 +- 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index dcb6e8fd39..d696f003c5 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -114,7 +114,7 @@ class Cache { $params = array($file); } $query = \OC_DB::prepare( - 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `etag` FROM `*PREFIX*filecache` ' . $where); $result = $query->execute($params); $data = $result->fetchRow(); @@ -133,6 +133,9 @@ class Cache { $data['storage'] = $this->storageId; $data['mimetype'] = $this->getMimetype($data['mimetype']); $data['mimepart'] = $this->getMimetype($data['mimepart']); + if ($data['storage_mtime'] == 0) { + $data['storage_mtime'] = $data['mtime']; + } } return $data; @@ -148,13 +151,16 @@ class Cache { $fileId = $this->getId($folder); if ($fileId > -1) { $query = \OC_DB::prepare( - 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_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']); + if ($file['storage_mtime'] == 0) { + $file['storage_mtime'] = $file['mtime']; + } } return $files; } else { @@ -226,7 +232,7 @@ class Cache { * @return array */ function buildParts(array $data) { - $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'encrypted', 'etag'); + $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted', 'etag'); $params = array(); $queryParts = array(); foreach ($data as $name => $value) { @@ -238,6 +244,11 @@ class Cache { $params[] = $this->getMimetypeId(substr($value, 0, strpos($value, '/'))); $queryParts[] = '`mimepart`'; $value = $this->getMimetypeId($value); + } elseif ($name === 'storage_mtime') { + if (!isset($data['mtime'])) { + $params[] = $value; + $queryParts[] = '`mtime`'; + } } $params[] = $value; $queryParts[] = '`' . $name . '`'; diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index 9a5546dce3..2623a167e9 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -51,6 +51,7 @@ class Scanner { $data['size'] = $this->storage->filesize($path); } $data['etag'] = $this->storage->getETag($path); + $data['storage_mtime'] = $data['mtime']; return $data; } diff --git a/lib/files/cache/watcher.php b/lib/files/cache/watcher.php index 31059ec7f5..8bfd4602f3 100644 --- a/lib/files/cache/watcher.php +++ b/lib/files/cache/watcher.php @@ -43,7 +43,7 @@ class Watcher { */ public function checkUpdate($path) { $cachedEntry = $this->cache->get($path); - if ($this->storage->hasUpdated($path, $cachedEntry['mtime'])) { + if ($this->storage->hasUpdated($path, $cachedEntry['storage_mtime'])) { if ($this->storage->is_dir($path)) { $this->scanner->scan($path, Scanner::SCAN_SHALLOW); } else { diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index c466fbb63e..794664c889 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -204,6 +204,23 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertEquals(array($storageId, 'foo'), \OC\Files\Cache\Cache::getById($id)); } + function testStorageMTime() { + $data = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + $this->cache->put('foo', $data); + $cachedData = $this->cache->get('foo'); + $this->assertEquals($data['mtime'], $cachedData['storage_mtime']);//if no storage_mtime is saved, mtime should be used + + $this->cache->put('foo', array('storage_mtime' => 30));//when setting storage_mtime, mtime is also set + $cachedData = $this->cache->get('foo'); + $this->assertEquals(30, $cachedData['storage_mtime']); + $this->assertEquals(30, $cachedData['mtime']); + + $this->cache->put('foo', array('mtime' => 25));//setting mtime does not change storage_mtime + $cachedData = $this->cache->get('foo'); + $this->assertEquals(30, $cachedData['storage_mtime']); + $this->assertEquals(25, $cachedData['mtime']); + } + public function tearDown() { $this->cache->clear(); } @@ -213,3 +230,4 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->cache = new \OC\Files\Cache\Cache($this->storage); } } + diff --git a/tests/lib/files/cache/watcher.php b/tests/lib/files/cache/watcher.php index e8a1689cab..1ea0c2eb47 100644 --- a/tests/lib/files/cache/watcher.php +++ b/tests/lib/files/cache/watcher.php @@ -35,7 +35,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('', array('mtime' => 10)); + $cache->put('', array('storage_mtime' => 10)); $this->assertTrue($cache->inCache('folder/bar.txt')); $this->assertTrue($cache->inCache('folder/bar2.txt')); @@ -47,14 +47,14 @@ class Watcher extends \PHPUnit_Framework_TestCase { $cachedData = $cache->get('bar.test'); $this->assertEquals(3, $cachedData['size']); - $cache->put('bar.test', array('mtime' => 10)); + $cache->put('bar.test', array('storage_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)); + $cache->put('folder', array('storage_mtime' => 10)); $storage->unlink('folder/bar2.txt'); $updater->checkUpdate('folder'); @@ -69,7 +69,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('', array('mtime' => 10)); + $cache->put('', array('storage_mtime' => 10)); $storage->unlink('foo.txt'); $storage->rename('folder', 'foo.txt'); @@ -86,7 +86,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('foo.txt', array('mtime' => 10)); + $cache->put('foo.txt', array('storage_mtime' => 10)); $storage->unlink('foo.txt'); $storage->rename('folder', 'foo.txt'); diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index a064e44f3e..c9a8a0fb08 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -220,7 +220,7 @@ class View extends \PHPUnit_Framework_TestCase { $cachedData = $rootView->getFileInfo('foo.txt'); $this->assertEquals(16, $cachedData['size']); - $rootView->putFileInfo('foo.txt', array('mtime' => 10)); + $rootView->putFileInfo('foo.txt', array('storage_mtime' => 10)); $storage1->file_put_contents('foo.txt', 'foo'); clearstatcache(); From 9738fae3cf1ad18593d21eb62e138e00c01f5f36 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 10 Feb 2013 12:44:27 +0100 Subject: [PATCH 005/575] Emulate touch() for backends that don't support it --- lib/files/view.php | 16 ++++++++++------ tests/lib/files/view.php | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/lib/files/view.php b/lib/files/view.php index 1a234228ea..69e2f1ad34 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -242,7 +242,11 @@ class View { if (!is_null($mtime) and !is_numeric($mtime)) { $mtime = strtotime($mtime); } - return $this->basicOperation('touch', $path, array('write'), $mtime); + $result = $this->basicOperation('touch', $path, array('write'), $mtime); + if (!$result) { //if native touch fails, we emulate it by changing the mtime in the cache + $this->putFileInfo($path, array('mtime' => $mtime)); + } + return true; } public function file_get_contents($path) { @@ -917,11 +921,11 @@ class View { } /** - * Get the owner for a file or folder - * - * @param string $path - * @return string - */ + * Get the owner for a file or folder + * + * @param string $path + * @return string + */ public function getOwner($path) { return $this->basicOperation('getOwner', $path); } diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index c9a8a0fb08..af97761bbb 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -7,6 +7,12 @@ namespace Test\Files; +class TemporaryNoTouch extends \OC\Files\Storage\Temporary { + public function touch($path, $mtime = null) { + return false; + } +} + class View extends \PHPUnit_Framework_TestCase { /** * @var \OC\Files\Storage\Storage[] $storages; @@ -228,12 +234,36 @@ class View extends \PHPUnit_Framework_TestCase { $this->assertEquals(3, $cachedData['size']); } + function testTouch() { + $storage = $this->getTestStorage(true, '\Test\Files\TemporaryNoTouch'); + + \OC\Files\Filesystem::mount($storage, array(), '/'); + + $rootView = new \OC\Files\View(''); + $oldCachedData = $rootView->getFileInfo('foo.txt'); + + $rootView->touch('foo.txt', 500); + + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertEquals(500, $cachedData['mtime']); + $this->assertEquals($oldCachedData['storage_mtime'], $cachedData['storage_mtime']); + + $rootView->putFileInfo('foo.txt', array('storage_mtime' => 1000)); //make sure the watcher detects the change + $rootView->file_put_contents('foo.txt', 'asd'); + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertGreaterThanOrEqual($cachedData['mtime'], $oldCachedData['mtime']); + $this->assertEquals($cachedData['storage_mtime'], $cachedData['mtime']); + } + /** * @param bool $scan * @return \OC\Files\Storage\Storage */ - private function getTestStorage($scan = true) { - $storage = new \OC\Files\Storage\Temporary(array()); + private function getTestStorage($scan = true, $class = '\OC\Files\Storage\Temporary') { + /** + * @var \OC\Files\Storage\Storage $storage + */ + $storage = new $class(array()); $textData = "dummy file data\n"; $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); $storage->mkdir('folder'); From 92f06243be62945b5ff5e7542e9984f7bb45d74b Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Mon, 11 Feb 2013 10:21:23 +0000 Subject: [PATCH 006/575] Implementing sharing support New file-specific methods in lib/public/share Changes to how keyfiles are stored --- apps/files_encryption/hooks/hooks.php | 51 +++++----- apps/files_encryption/lib/crypt.php | 41 +++++--- apps/files_encryption/lib/keymanager.php | 97 ++++++++++++++++-- apps/files_encryption/lib/proxy.php | 119 +++++++++++++---------- apps/files_encryption/test/crypt.php | 8 +- lib/public/share.php | 84 ++++++++++++++-- 6 files changed, 289 insertions(+), 111 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c6d4c16115..9252a341fb 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -82,8 +82,12 @@ class Hooks { } + \OC_FileProxy::$enabled = false; + $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); + \OC_FileProxy::$enabled = false; + // Encrypt existing user files: // This serves to upgrade old versions of the encryption // app (see appinfo/spec.txt) @@ -175,8 +179,9 @@ class Hooks { $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); + $session = new Session(); - $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'] ); + $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 ); $userIds = array(); @@ -202,41 +207,35 @@ class Hooks { } - trigger_error("UIDS = ".var_export($userIds, 1)); - $userPubKeys = Keymanager::getPublicKeys( $view, $userIds ); -// trigger_error("PUB KEYS = ".var_export($userPubKeys, 1)); + \OC_FileProxy::$enabled = false; - // TODO: Fetch path from Crypt{} getter - $plainContent = $view->file_get_contents( $userId . '/' . 'files'. '/' . $params['fileTarget'] ); + // get the keyfile + $encKeyfile = Keymanager::getFileKey( $view, $userId, $params['fileTarget'] ); - // Generate new catfile and share keys - if ( ! $encrypted = Crypt::multiKeyEncrypt( $plainContent, $userPubKeys ) ) { + $privateKey = $session->getPrivateKey(); - // If the re-encryption failed, don't risk deleting data - return false; + // decrypt the keyfile + $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + + // re-enc keyfile to sharekeys + $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + + // save sharekeys + if ( ! Keymanager::setShareKeys( $view, $params['fileTarget'], $shareKeys['keys'] ) ) { + + trigger_error( "SET Share keys failed" ); } - trigger_error("ENCRYPTED = ". var_export($encrypted, 1)); - - // Save env keys to user folders - foreach ( $encrypted['keys'] as $key ) { - -// Keymanager::setShareKey( $view, $params['fileTarget'], $userId, $key ); - - } - - // Delete existing catfile - // Check if keyfile exists (it won't if file has been shared before) + // Delete existing keyfile // Do this last to ensure file is recoverable in case of error - if ( $util->isEncryptedPath( $params['fileTarget'] ) ) { - - // NOTE: This will trigger an error if keyfile isn't found -// Keymanager::deleteFileKey( $params['fileTarget'] ); +// Keymanager::deleteFileKey( $view, $userId, $params['fileTarget'] ); - } + \OC_FileProxy::$enabled = true; + + return true; } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index e3d23023db..fdee03eeaf 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -370,22 +370,41 @@ class Crypt { /** * @brief Create asymmetrically encrypted keyfile content using a generated key * @param string $plainContent content to be encrypted - * @returns array keys: key, encrypted - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file + * @param array $publicKeys array keys must be the userId of corresponding user + * @returns array keys: keys (array, key = userId), encrypted + * @note symmetricDecryptFileContent() can decrypt files created using this method */ public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { - + + // openssl_seal returns false without errors if $plainContent + // is empty, so trigger our own error + if ( empty( $plainContent ) ) { + + trigger_error( "Cannot mutliKeyEncrypt empty plain content" ); + throw new \Exception( 'Cannot mutliKeyEncrypt empty plain content' ); + + } + // Set empty vars to be set by openssl by reference $sealed = ''; - $envKeys = array(); + $shareKeys = array(); - if( openssl_seal( $plainContent, $sealed, $envKeys, $publicKeys ) ) { + if( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { + + $i = 0; + + // Ensure each shareKey is labelled with its + // corresponding userId + foreach ( $publicKeys as $userId => $publicKey ) { + + $mappedShareKeys[$userId] = $shareKeys[$i]; + $i++; + + } return array( - 'keys' => $envKeys - , 'encrypted' => $sealed + 'keys' => $mappedShareKeys + , 'data' => $sealed ); } else { @@ -404,7 +423,7 @@ class Crypt { * * This function decrypts a file */ - public static function multiKeyDecrypt( $encryptedContent, $envKey, $privateKey ) { + public static function multiKeyDecrypt( $encryptedContent, $shareKey, $privateKey ) { if ( !$encryptedContent ) { @@ -412,7 +431,7 @@ class Crypt { } - if ( openssl_open( $encryptedContent, $plainContent, $envKey, $privateKey ) ) { + if ( openssl_open( $encryptedContent, $plainContent, $shareKey, $privateKey ) ) { return $plainContent; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 3160572ba1..5f9eea1a0b 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -52,8 +52,11 @@ class Keymanager { */ public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + \OC_FileProxy::$enabled = false; + return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); + \OC_FileProxy::$enabled = true; } /** @@ -77,20 +80,16 @@ class Keymanager { * @param array $userIds * @return array of public keys for the specified users */ - public static function getPublicKeys( \OC_FilesystemView $view, $userIds ) { + public static function getPublicKeys( \OC_FilesystemView $view, array $userIds ) { - $i = 0; $keys = array(); foreach ( $userIds as $userId ) { - $i++; $keys[$userId] = self::getPublicKey( $view, $userId ); } - $keys['total'] = $i; - return $keys; } @@ -137,11 +136,11 @@ class Keymanager { $filePath_f = ltrim( $filePath, '/' ); - $catfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + $keyfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - if ( $view->file_exists( $catfilePath ) ) { + if ( $view->file_exists( $keyfilePath ) ) { - return $view->file_get_contents( $catfilePath ); + return $view->file_get_contents( $keyfilePath ); } else { @@ -239,7 +238,7 @@ class Keymanager { } /** - * @brief store file encryption key + * @brief store share key * * @param string $path relative path of the file, including filename * @param string $key @@ -255,7 +254,85 @@ class Keymanager { $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - return $view->file_put_contents( $basePath . '/' . $shareKeyPath . '.shareKey', $shareKey ); + $writePath = $basePath . '/' . $shareKeyPath . '.shareKey'; + + \OC_FileProxy::$enabled = false; + + $result = $view->file_put_contents( $writePath, $shareKey ); + + if ( + is_int( $result ) + && $result > 0 + ) { + + return true; + + } else { + + return false; + + } + + } + + /** + * @brief store multiple share keys for a single file + * @return bool + */ + public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { + + // $shareKeys must be an array with the following format: + // [userId] => [encrypted key] + + $result = true; + + foreach ( $shareKeys as $userId => $shareKey ) { + + if ( ! self::setShareKey( $view, $path, $userId, $shareKey ) ) { + + // If any of the keys are not set, flag false + $result = false; + + } + + } + + // Returns false if any of the keys weren't set + return $result; + + } + + /** + * @brief retrieve shareKey for an encrypted file + * @param \OC_FilesystemView $view + * @param $userId + * @param $filePath + * @internal param \OCA\Encryption\file $string name + * @return string file key or false + * @note The sharekey returned is encrypted. Decryption + * of the keyfile must be performed by client code + */ + public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + + \OC_FileProxy::$enabled = false; + + $filePath_f = ltrim( $filePath, '/' ); + + $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $filePath_f . '.shareKey'; + + if ( $view->file_exists( $shareKeyPath ) ) { + + $result = $view->file_get_contents( $shareKeyPath ); + + } else { + + $result = false; + + } + + \OC_FileProxy::$enabled = true; + + return $result; } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 58b9bc0725..b5e59e89b9 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -99,58 +99,65 @@ class Proxy extends \OC_FileProxy { if ( !is_resource( $data ) ) { $userId = \OCP\USER::getUser(); - $rootView = new \OC_FilesystemView( '/' ); - + $util = new Util( $rootView, $userId ); + $filePath = $util->stripUserFilesPath( $path ); // Set the filesize for userland, before encrypting $size = strlen( $data ); // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; - $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + // Encrypt data + $encData = Crypt::symmetricEncryptFileContentKeyfile( $data ); // Check if the keyfile needs to be shared - if ( - $fileOwner !== true - or $fileOwner !== $userId - ) { + if ( \OCP\Share::isSharedFile( $filePath ) ) { + +// $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + + // List everyone sharing the file + $shares = \OCP\Share::getUsersSharingFile( $filePath, 1 ); + + $userIds = array(); + + foreach ( $shares as $share ) { + + $userIds[] = $share['userId']; + + } + + $publicKeys = Keymanager::getPublicKeys( $rootView, $userIds ); + + \OC_FileProxy::$enabled = false; + + // Encrypt plain keyfile to multiple sharefiles + $multiEncrypted = Crypt::multiKeyEncrypt( $encData['key'], $publicKeys ); + + // Save sharekeys to user folders + Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); + + // Set encrypted keyfile as common varname + $encKey = $multiEncrypted['encrypted']; - // Shared storage backend isn't loaded - $users = \OCP\Share::getItemShared( 'file', $path, \OC_Share_backend_File::FORMAT_SHARED_STORAGE ); -// - trigger_error("SHARE USERS = ". var_export($users, 1)); -// -// $publicKeys = Keymanager::getPublicKeys( $rootView, $users); -// -// // Encrypt plain data to multiple users -// $encrypted = Crypt::multiKeyEncrypt( $data, $publicKeys ); } else { $publicKey = Keymanager::getPublicKey( $rootView, $userId ); // Encrypt plain data to a single user - $encrypted = Crypt::keyEncryptKeyfile( $data, $publicKey ); + $encKey = Crypt::keyEncrypt( $encData['key'], $publicKey ); } - // Replace plain content with encrypted content by reference - $data = $encrypted['data']; - - $filePath = explode( '/', $path ); - - $filePath = array_slice( $filePath, 3 ); - - $filePath = '/' . implode( '/', $filePath ); - - // TODO: make keyfile dir dynamic from app config - - $view = new \OC_FilesystemView( '/' ); + // TODO: Replace userID with ownerId so keyfile is saved centrally // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $view, $filePath, $userId, $encrypted['key'] ); + Keymanager::setFileKey( $rootView, $filePath, $userId, $encKey ); + + // Replace plain content with encrypted content by reference + $data = $encData['encrypted']; // Update the file cache with file info \OC\Files\Filesystem::putFileInfo( $path, array( 'encrypted'=>true, 'size' => $size ), '' ); @@ -168,8 +175,6 @@ class Proxy extends \OC_FileProxy { * @param string $data Data that has been read from file */ public function postFile_get_contents( $path, $data ) { - - // TODO: Use dependency injection to add required args for view and user etc. to this method // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; @@ -180,45 +185,55 @@ class Proxy extends \OC_FileProxy { && Crypt::isCatfile( $data ) ) { - $split = explode( '/', $path ); - - $filePath = array_slice( $split, 3 ); - - $filePath = '/' . implode( '/', $filePath ); - - //$cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); - - $view = new \OC_FilesystemView( '' ); - + $view = new \OC_FilesystemView( '/' ); $userId = \OCP\USER::getUser(); - - // TODO: Check if file is shared, if so, use multiKeyDecrypt - - $encryptedKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ); - $session = new Session(); + $util = new Util( $view, $userId ); + $filePath = $util->stripUserFilesPath( $path ); + $privateKey = $session->getPrivateKey( $userId ); - $decrypted = Crypt::keyDecryptKeyfile( $data, $encryptedKeyfile, $session->getPrivateKey( $split[1] ) ); + // Get the encrypted keyfile + $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ); + // Check if key is shared or not + if ( \OCP\Share::isSharedFile( $filePath ) ) { + + // If key is shared, fetch the user's shareKey + $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); + + \OC_FileProxy::$enabled = false; + + // Decrypt keyfile with shareKey + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + + } else { + + // If key is unshared, decrypt with user private key + $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + + } + + $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); + } elseif ( Crypt::mode() == 'server' && isset( $_SESSION['legacyenckey'] ) && Crypt::isEncryptedMeta( $path ) ) { - $decrypted = Crypt::legacyDecrypt( $data, $_SESSION['legacyenckey'] ); + $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); } \OC_FileProxy::$enabled = true; - if ( ! isset( $decrypted ) ) { + if ( ! isset( $plainData ) ) { - $decrypted = $data; + $plainData = $data; } - return $decrypted; + return $plainData; } diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/test/crypt.php index aa87ec3282..48ad2ee007 100755 --- a/apps/files_encryption/test/crypt.php +++ b/apps/files_encryption/test/crypt.php @@ -439,14 +439,14 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); - $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataUrl, array( $pair1['publicKey'] ) ); + $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); - $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); + $this->assertNotEquals( $this->dataShort, $crypted['data'] ); - $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['encrypted'], $crypted['keys'][0], $pair1['privateKey'] ); + $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals( $this->dataShort, $decrypt ); } diff --git a/lib/public/share.php b/lib/public/share.php index 936f85021c..4170783d71 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -93,19 +93,72 @@ class Share { } /** - * @brief Find which users can access a shared item - * @param string Item type - * @param int Format (optional) Format type must be defined by the backend - * @param int Number of items to return (optional) Returns all by default - * @return Return depends on format + * @brief Prepare a path to be passed to DB as file_target + * @return string Prepared path */ - public static function getUsersSharingFile( $path ) { + public static function prepFileTarget( $path ) { + + // Paths in DB are stored with leading slashes, so add one if necessary + if ( substr( $path, 0, 1 ) !== '/' ) { + + $path = '/' . $path; + + } + + return $path; + + } + + public static function isSharedFile( $path ) { + + $fPath = self::prepFileTarget( $path ); + + // Fetch all shares of this file path from DB + $query = \OC_DB::prepare( + 'SELECT + id + FROM + `*PREFIX*share` + WHERE + file_target = ?' + ); + + $result = $query->execute( array( $fPath ) ); + + if ( \OC_DB::isError( $result ) ) { + + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage( $result ) . ', path=' . $fPath, \OC_Log::ERROR ); + + } + + if ( $result->fetchRow() !== false ) { + + return true; + + } else { + + return false; + + } + + } + + /** + * @brief Find which users can access a shared item + * @return bool / array + * @note $path needs to be relative to user data dir, e.g. 'file.txt' + * not '/admin/data/file.txt' + */ + public static function getUsersSharingFile( $path, $includeOwner = 0 ) { + + $fPath = self::prepFileTarget( $path ); // Fetch all shares of this file path from DB $query = \OC_DB::prepare( 'SELECT share_type , share_with + , uid_owner , permissions FROM `*PREFIX*share` @@ -113,11 +166,11 @@ class Share { file_target = ?' ); - $result = $query->execute( array( $path ) ); + $result = $query->execute( array( $fPath ) ); if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result) . ', path=' . $path, \OC_Log::ERROR ); + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result) . ', path=' . $fPath, \OC_Log::ERROR ); } @@ -128,6 +181,7 @@ class Share { // Set helpful array keys $shares[] = array( 'userId' => $row['share_with'] + , 'owner' => $row['uid_owner'] // we just set this so it can be used once, hugly hack :/ , 'shareType' => $row['share_type'] , 'permissions' => $row['permissions'] ); @@ -136,6 +190,20 @@ class Share { if ( ! empty( $shares ) ) { + // Include owner in list of users, if requested + if ( $includeOwner == 1 ) { + + // NOTE: The values are incorrect for shareType and + // permissions of the owner; we just include them for + // optional convenience + $shares[] = array( + 'userId' => $shares[0]['owner'] + , 'shareType' => 0 + , 'permissions' => 0 + ); + + } + return $shares; } else { From d17d838eccb4e8752fc59c2a6812d69a8a5b707e Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Mon, 11 Feb 2013 10:34:23 +0000 Subject: [PATCH 007/575] Updated specfile --- apps/files_encryption/appinfo/spec.txt | 30 +++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/appinfo/spec.txt b/apps/files_encryption/appinfo/spec.txt index 2d22dffe08..7a937a9143 100644 --- a/apps/files_encryption/appinfo/spec.txt +++ b/apps/files_encryption/appinfo/spec.txt @@ -9,6 +9,31 @@ Encrypted files [encrypted data string][delimiter][IV][padding] [anhAAjAmcGXqj1X9g==][00iv00][MSHU5N5gECP7aAg7][xx] (square braces added) + +- Directory structure: + - Encrypted user data (catfiles) are stored in the usual /data/user/files dir + - Keyfiles are stored in /data/user/files_encryption/keyfiles + - Sharekey are stored in /data/user/files_encryption/share-files + +- File extensions: + - Catfiles have keep the file extension of the original file, pre-encryption + - Keyfiles use .keyfile + - Sharekeys have .shareKey + +Shared files +------------ + +Shared files have a centrally stored catfile and keyfile, and one sharekey for +each user that shares it. + +When sharing is used, a different encryption method is used to encrypt the +keyfile (openssl_seal). Although shared files have a keyfile, its contents +use a different format therefore. + +Each time a shared file is edited or deleted, all sharekeys for users sharing +that file must have their sharekeys changed also. The keyfile and catfile +however need only changing in the owners files, as there is only one copy of +these. Notes ----- @@ -16,4 +41,7 @@ Notes - The user passphrase is required in order to set up or upgrade the app. New keypair generation, and the re-encryption of legacy encrypted files requires it. Therefore an appinfo/update.php script cannot be used, and upgrade logic - is handled in the login hook listener. \ No newline at end of file + is handled in the login hook listener. Therefore each time the user logs in + their files are scanned to detect unencrypted and legacy encrypted files, and + they are (re)encrypted as necessary. This may present a performance issue; we + need to monitor this. \ No newline at end of file From 2787aafae6577dfad1f3db0dc70a8e0b05eaba53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 11 Feb 2013 12:12:21 +0100 Subject: [PATCH 008/575] added some TODOs --- apps/files_encryption/hooks/hooks.php | 1 + apps/files_encryption/lib/proxy.php | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 9252a341fb..b0075a3ada 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -190,6 +190,7 @@ class Hooks { $util = new Util( $view, $share['userId'] ); // Check that the user is encryption capable + // TODO create encryption key when user gets created if ( $util->ready() ) { // Construct array of just UIDs for Keymanager{} diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index b5e59e89b9..40ac411539 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -92,12 +92,13 @@ class Proxy extends \OC_FileProxy { } public function preFile_put_contents( $path, &$data ) { - + // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. if ( self::shouldEncrypt( $path ) ) { // Stream put contents should have been converted to fopen if ( !is_resource( $data ) ) { + // TODO check who is the owner of the file in case of shared folders $userId = \OCP\USER::getUser(); $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); @@ -175,7 +176,7 @@ class Proxy extends \OC_FileProxy { * @param string $data Data that has been read from file */ public function postFile_get_contents( $path, $data ) { - + // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; @@ -184,8 +185,8 @@ class Proxy extends \OC_FileProxy { Crypt::mode() == 'server' && Crypt::isCatfile( $data ) ) { - $view = new \OC_FilesystemView( '/' ); + // TODO use get owner to find correct location of key files for shared files $userId = \OCP\USER::getUser(); $session = new Session(); $util = new Util( $view, $userId ); From 3e3cee98c87e90ece7a4a908b6cbbc7cbc94aac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 11 Feb 2013 13:28:37 +0100 Subject: [PATCH 009/575] - moved the enrcyption of the filekey ifg file gets shared from the post shared hook to Crypt::encKeyfileToMultipleUsers() because this can be reused if files get unshared - switch from preUnshare hook to postUnshare hook because afterward we can simply get the updated list of users with access to the file and call Crypt::encKeyfileToMultipleUsers() --- apps/files_encryption/appinfo/app.php | 4 +- apps/files_encryption/hooks/hooks.php | 55 +++++++-------------------- apps/files_encryption/lib/crypt.php | 42 ++++++++++++++++++++ 3 files changed, 58 insertions(+), 43 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index f83109a18e..6778e1faa3 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -16,8 +16,8 @@ OCP\Util::connectHook( 'OC_User', 'pre_setPassword','OCA\Encryption\Hooks', 'set // Sharing-related hooks OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); -OCP\Util::connectHook( 'OCP\Share', 'pre_unshare', 'OCA\Encryption\Hooks', 'preUnshare' ); -OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' ); +OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); +OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); // Webdav-related hooks OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index b0075a3ada..c8565964ba 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -179,7 +179,6 @@ class Hooks { $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); - $session = new Session(); $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 ); @@ -207,55 +206,29 @@ class Hooks { } } + + return Crypt::encKeyfileToMultipleUsers($shares, $params['fileTarget']); - $userPubKeys = Keymanager::getPublicKeys( $view, $userIds ); + } + + /** + * @brief + */ + public static function postUnshare( $params ) { + $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 ); - \OC_FileProxy::$enabled = false; - - // get the keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $params['fileTarget'] ); - - $privateKey = $session->getPrivateKey(); - - // decrypt the keyfile - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); - - // re-enc keyfile to sharekeys - $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); - - // save sharekeys - if ( ! Keymanager::setShareKeys( $view, $params['fileTarget'], $shareKeys['keys'] ) ) { - - trigger_error( "SET Share keys failed" ); - + $userIds = array(); + foreach ( $shares as $share ) { + $userIds[] = $share['userId']; } - // Delete existing keyfile - // Do this last to ensure file is recoverable in case of error -// Keymanager::deleteFileKey( $view, $userId, $params['fileTarget'] ); - - \OC_FileProxy::$enabled = true; - - return true; - + return Crypt::encKeyfileToMultipleUsers($userIDs, $params['fileTarget']); } /** * @brief */ - public static function preUnshare( $params ) { - - // Delete existing catfile - - // Generate new catfile and env keys - - // Save env keys to user folders - } - - /** - * @brief - */ - public static function preUnshareAll( $params ) { + public static function postUnshareAll( $params ) { trigger_error( "preUnshareAll" ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index fdee03eeaf..6704ea6bf1 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -744,4 +744,46 @@ class Crypt { } + + /** + * @brief encrypt file key to multiple users + * @param $users list of users which should be able to access the file + * @param $fileTarget target of the file + */ + public static function encKeyfileToMultipleUsers($users, $fileTarget) { + $view = new \OC_FilesystemView( '/' ); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + $session = new Session(); + + $userPubKeys = Keymanager::getPublicKeys( $view, $users ); + + \OC_FileProxy::$enabled = false; + + // get the keyfile + $encKeyfile = Keymanager::getFileKey( $view, $userId, $fileTarget ); + + $privateKey = $session->getPrivateKey(); + + // decrypt the keyfile + $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + + // re-enc keyfile to sharekeys + $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + + // save sharekeys + if ( ! Keymanager::setShareKeys( $view, $fileTarget, $shareKeys['keys'] ) ) { + + trigger_error( "SET Share keys failed" ); + + } + + // Delete existing keyfile + // Do this last to ensure file is recoverable in case of error + // Keymanager::deleteFileKey( $view, $userId, $params['fileTarget'] ); + + \OC_FileProxy::$enabled = true; + + return true; + } } \ No newline at end of file From 9b498320903fc7d35e2e0bcfd03ebf69e7c90720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 11 Feb 2013 13:50:11 +0100 Subject: [PATCH 010/575] unshare all should work the same like unshare single users --- apps/files_encryption/hooks/hooks.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c8565964ba..550593daf6 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -229,9 +229,7 @@ class Hooks { * @brief */ public static function postUnshareAll( $params ) { - - trigger_error( "preUnshareAll" ); - + return self::postUnshare($params); } } From 5a64c96d06db50c3ca13bb3c6c10c3a0e32a3380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 11 Feb 2013 15:13:42 +0100 Subject: [PATCH 011/575] go back to preUnshare hooks since sharing doesn't trigger post unshare hooks --- apps/files_encryption/appinfo/app.php | 4 ++-- apps/files_encryption/hooks/hooks.php | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 6778e1faa3..f83109a18e 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -16,8 +16,8 @@ OCP\Util::connectHook( 'OC_User', 'pre_setPassword','OCA\Encryption\Hooks', 'set // Sharing-related hooks OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); -OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); -OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); +OCP\Util::connectHook( 'OCP\Share', 'pre_unshare', 'OCA\Encryption\Hooks', 'preUnshare' ); +OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' ); // Webdav-related hooks OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 550593daf6..17bcb9238a 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -157,8 +157,6 @@ class Hooks { , \OC_Log::ERROR ); - error_log( "Client side encryption is enabled but the client doesn't provide an encryption key for the file!" ); - } } @@ -169,7 +167,7 @@ class Hooks { * @brief */ public static function postShared( $params ) { - + error_log("post shared triggered!"); // NOTE: $params is an array with these keys: // itemSource -> int, filecache file ID // shareWith -> string, uid of user being shared to @@ -214,22 +212,27 @@ class Hooks { /** * @brief */ - public static function postUnshare( $params ) { - $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 ); + public static function preUnshare( $params ) { + $items = \OCP\Share::getItemSharedWithBySource($params['itemType'], $params['itemSource']); + $shares = \OCP\Share::getUsersSharingFile( $item[0]['file_target'], 1 ); $userIds = array(); foreach ( $shares as $share ) { $userIds[] = $share['userId']; } - return Crypt::encKeyfileToMultipleUsers($userIDs, $params['fileTarget']); + // remove the user from the list from which the file will be unshared + unset($userIds[$params['shareWith']]); + + return Crypt::encKeyfileToMultipleUsers($userIDs, $item[0]['file_target']); } /** * @brief */ - public static function postUnshareAll( $params ) { - return self::postUnshare($params); + public static function preUnshareAll( $params ) { + $items = \OCP\Share::getItemSharedWithBySource($params['itemType'], $params['itemSource']); + return Crypt::encKeyfileToMultipleUsers(array($items[0]['uid_owner']), $items[0]['file_target']); } } From 8eef919a754ff3404df1065d616e66cb9b1ff437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 12 Feb 2013 12:08:34 +0100 Subject: [PATCH 012/575] take group shares into account if we retrieve the list a all recipients --- apps/files_encryption/hooks/hooks.php | 35 +++----------- apps/files_encryption/lib/crypt.php | 30 ++++++++++-- lib/public/share.php | 69 +++++++++++++-------------- 3 files changed, 65 insertions(+), 69 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 17bcb9238a..c14ce3e91d 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -167,44 +167,21 @@ class Hooks { * @brief */ public static function postShared( $params ) { - error_log("post shared triggered!"); + // NOTE: $params is an array with these keys: // itemSource -> int, filecache file ID // shareWith -> string, uid of user being shared to // fileTarget -> path of file being shared // uidOwner -> owner of the original file being shared + //TODO: We don't deal with shared folder yet, need to recursively update every file in the folder + $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); - $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 ); + $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); - $userIds = array(); - - foreach ( $shares as $share ) { - - $util = new Util( $view, $share['userId'] ); - - // Check that the user is encryption capable - // TODO create encryption key when user gets created - if ( $util->ready() ) { - - // Construct array of just UIDs for Keymanager{} - $userIds[] = $share['userId']; - - } else { - - // Log warning; we can't do necessary setup here - // because we don't have the user passphrase - // TODO: Provide user feedback indicating that - // sharing failed - \OC_Log::write( 'Encryption library', 'File cannot be shared: user "'.$share['userId'].'" is not setup for encryption', \OC_Log::WARN ); - - } - - } - return Crypt::encKeyfileToMultipleUsers($shares, $params['fileTarget']); } @@ -213,11 +190,11 @@ class Hooks { * @brief */ public static function preUnshare( $params ) { - $items = \OCP\Share::getItemSharedWithBySource($params['itemType'], $params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $item[0]['file_target'], 1 ); + $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); $userIds = array(); foreach ( $shares as $share ) { + error_log("keek user id: " . $share['userId']); $userIds[] = $share['userId']; } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 6704ea6bf1..a8cc2b3726 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -752,16 +752,40 @@ class Crypt { */ public static function encKeyfileToMultipleUsers($users, $fileTarget) { $view = new \OC_FilesystemView( '/' ); - $userId = \OCP\User::getUser(); + $owner = \OCP\User::getUser(); $util = new Util( $view, $userId ); $session = new Session(); + + $userIds = array(); + + foreach ( $users as $user ) { + + $util = new Util( $view, $user ); + + // Check that the user is encryption capable + if ( $util->ready() ) { + // Construct array of just UIDs for Keymanager{} + $userIds[] = $user; + + } else { + + // Log warning; we can't do necessary setup here + // because we don't have the user passphrase + // TODO: Provide user feedback indicating that + // sharing failed + \OC_Log::write( 'Encryption library', 'File cannot be shared: user "'.$user.'" is not setup for encryption', \OC_Log::WARN ); + + } + + } + - $userPubKeys = Keymanager::getPublicKeys( $view, $users ); + $userPubKeys = Keymanager::getPublicKeys( $view, $userIds ); \OC_FileProxy::$enabled = false; // get the keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $fileTarget ); + $encKeyfile = Keymanager::getFileKey( $view, $owner, $fileTarget ); $privateKey = $session->getPrivateKey(); diff --git a/lib/public/share.php b/lib/public/share.php index 4170783d71..841240692d 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -149,62 +149,57 @@ class Share { * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $path, $includeOwner = 0 ) { - - $fPath = self::prepFileTarget( $path ); - + public static function getUsersSharingFile( $source, $includeOwner = 0 ) { + //TODO get also the recipients from folders which are shared above the current file // Fetch all shares of this file path from DB $query = \OC_DB::prepare( - 'SELECT - share_type - , share_with - , uid_owner - , permissions + 'SELECT share_with FROM `*PREFIX*share` WHERE - file_target = ?' + item_source = ? AND share_type = ? AND uid_owner = ?' ); - $result = $query->execute( array( $fPath ) ); + $result = $query->execute( array( $source, self::SHARE_TYPE_USER, \OCP\User::getUser() ) ); if ( \OC_DB::isError( $result ) ) { - - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result) . ', path=' . $fPath, \OC_Log::ERROR ); - + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); } $shares = array(); while( $row = $result->fetchRow() ) { - - // Set helpful array keys - $shares[] = array( - 'userId' => $row['share_with'] - , 'owner' => $row['uid_owner'] // we just set this so it can be used once, hugly hack :/ - , 'shareType' => $row['share_type'] - , 'permissions' => $row['permissions'] - ); - + $shares[] = $row['share_with']; } - if ( ! empty( $shares ) ) { + // We also need to take group shares into account + $query = \OC_DB::prepare( + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ? AND uid_owner = ?' + ); + + $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP, \OCP\User::getUser() ) ); + + if ( \OC_DB::isError( $result ) ) { + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + } + + while( $row = $result->fetchRow() ) { + $usersInGroup = \OC_Group::usersInGroup($row['share_with']); + $shares = array_merge($shares, $usersInGroup); + } + + if ( ! empty( $shares ) ) { // Include owner in list of users, if requested if ( $includeOwner == 1 ) { - - // NOTE: The values are incorrect for shareType and - // permissions of the owner; we just include them for - // optional convenience - $shares[] = array( - 'userId' => $shares[0]['owner'] - , 'shareType' => 0 - , 'permissions' => 0 - ); - + $shares[] = \OCP\User::getUser(); } - - return $shares; + + return array_unique($shares); } else { @@ -235,7 +230,7 @@ class Share { 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); } - + /** * @brief Get the item of item type shared with the current user by source * @param string Item type From 1e5d03da800e5ad36e7b5adbab7eef03a2add80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 12 Feb 2013 12:45:54 +0100 Subject: [PATCH 013/575] use right location of the file is the source and not the target it is shared to --- apps/files_encryption/hooks/hooks.php | 32 ++++++++++++++++----------- apps/files_encryption/lib/crypt.php | 6 ++--- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c14ce3e91d..ebc345a47e 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -163,6 +163,20 @@ class Hooks { } + /** + * @brief get path of a file. + * @param $fileId id of the file + * @return path of the file + */ + private static function getFilePath($fileId) { + $query = \OC_DB::prepare('SELECT `path`' + .' FROM `*PREFIX*filecache`' + .' WHERE `fileid` = ?'); + $result = $query->execute(array($fileId)); + $row = $result->fetchRow(); + return $row['path']; + } + /** * @brief */ @@ -182,7 +196,7 @@ class Hooks { $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); - return Crypt::encKeyfileToMultipleUsers($shares, $params['fileTarget']); + return Crypt::encKeyfileToMultipleUsers($shares, self::getFilePath($params['itemSource'])); } @@ -191,25 +205,17 @@ class Hooks { */ public static function preUnshare( $params ) { $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); - - $userIds = array(); - foreach ( $shares as $share ) { - error_log("keek user id: " . $share['userId']); - $userIds[] = $share['userId']; - } - // remove the user from the list from which the file will be unshared - unset($userIds[$params['shareWith']]); - - return Crypt::encKeyfileToMultipleUsers($userIDs, $item[0]['file_target']); + unset($shares[$params['shareWith']]); + + return Crypt::encKeyfileToMultipleUsers($shares, self::getFilePath($params['itemSource'])); } /** * @brief */ public static function preUnshareAll( $params ) { - $items = \OCP\Share::getItemSharedWithBySource($params['itemType'], $params['itemSource']); - return Crypt::encKeyfileToMultipleUsers(array($items[0]['uid_owner']), $items[0]['file_target']); + return Crypt::encKeyfileToMultipleUsers(array(\OCP\User::getUser()), self::getFilePath($params['itemSource'])); } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index a8cc2b3726..cbdae323e5 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -750,7 +750,7 @@ class Crypt { * @param $users list of users which should be able to access the file * @param $fileTarget target of the file */ - public static function encKeyfileToMultipleUsers($users, $fileTarget) { + public static function encKeyfileToMultipleUsers($users, $filePath) { $view = new \OC_FilesystemView( '/' ); $owner = \OCP\User::getUser(); $util = new Util( $view, $userId ); @@ -785,7 +785,7 @@ class Crypt { \OC_FileProxy::$enabled = false; // get the keyfile - $encKeyfile = Keymanager::getFileKey( $view, $owner, $fileTarget ); + $encKeyfile = Keymanager::getFileKey( $view, $owner, $filePath ); $privateKey = $session->getPrivateKey(); @@ -796,7 +796,7 @@ class Crypt { $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); // save sharekeys - if ( ! Keymanager::setShareKeys( $view, $fileTarget, $shareKeys['keys'] ) ) { + if ( ! Keymanager::setShareKeys( $view, $filePath, $shareKeys['keys'] ) ) { trigger_error( "SET Share keys failed" ); From d1bbb30385260d77b01bc5998465ebe68ccd83d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 12 Feb 2013 16:48:04 +0100 Subject: [PATCH 014/575] also find users with access to the file if a folder above the actual file was already shared --- apps/files_encryption/hooks/hooks.php | 30 +++------ apps/files_encryption/lib/crypt.php | 2 - apps/files_encryption/lib/util.php | 14 ++++ lib/public/share.php | 97 ++++++++++++++------------- 4 files changed, 75 insertions(+), 68 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ebc345a47e..ffd3e4544f 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -164,21 +164,7 @@ class Hooks { } /** - * @brief get path of a file. - * @param $fileId id of the file - * @return path of the file - */ - private static function getFilePath($fileId) { - $query = \OC_DB::prepare('SELECT `path`' - .' FROM `*PREFIX*filecache`' - .' WHERE `fileid` = ?'); - $result = $query->execute(array($fileId)); - $row = $result->fetchRow(); - return $row['path']; - } - - /** - * @brief + * @brief get all users with access to the file and encrypt the file key to each of them */ public static function postShared( $params ) { @@ -194,9 +180,11 @@ class Hooks { $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); - $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); + $path = Util::getFilePath($params['itemSource']); + + $shares = \OCP\Share::getUsersSharingFile( $path, 1 ); - return Crypt::encKeyfileToMultipleUsers($shares, self::getFilePath($params['itemSource'])); + return Crypt::encKeyfileToMultipleUsers($shares, $path); } @@ -204,18 +192,20 @@ class Hooks { * @brief */ public static function preUnshare( $params ) { - $shares = \OCP\Share::getUsersSharingFile( $params['itemSource'], 1 ); + + $path = Util::getFilePath($params['itemSource']); + $shares = \OCP\Share::getUsersSharingFile( $path, 1 ); // remove the user from the list from which the file will be unshared unset($shares[$params['shareWith']]); - return Crypt::encKeyfileToMultipleUsers($shares, self::getFilePath($params['itemSource'])); + return Crypt::encKeyfileToMultipleUsers($shares, $path ); } /** * @brief */ public static function preUnshareAll( $params ) { - return Crypt::encKeyfileToMultipleUsers(array(\OCP\User::getUser()), self::getFilePath($params['itemSource'])); + return Crypt::encKeyfileToMultipleUsers(array(\OCP\User::getUser()), Util::getFilePath($params['itemSource'])); } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index cbdae323e5..ba9f0cb9a2 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -450,9 +450,7 @@ class Crypt { * @returns encrypted file */ public static function keyEncrypt( $plainContent, $publicKey ) { - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); - return $encryptedContent; } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 52bc74db27..843727d7ab 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -472,5 +472,19 @@ class Util { } } + + /** + * @brief get path of a file. + * @param $fileId id of the file + * @return path of the file + */ + public static function getFilePath($fileId) { + $query = \OC_DB::prepare('SELECT `path`' + .' FROM `*PREFIX*filecache`' + .' WHERE `fileid` = ?'); + $result = $query->execute(array($fileId)); + $row = $result->fetchRow(); + return substr($row['path'], 5); + } } diff --git a/lib/public/share.php b/lib/public/share.php index 841240692d..55ff4d4738 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -149,64 +149,69 @@ class Share { * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $source, $includeOwner = 0 ) { - //TODO get also the recipients from folders which are shared above the current file - // Fetch all shares of this file path from DB - $query = \OC_DB::prepare( - 'SELECT share_with - FROM - `*PREFIX*share` - WHERE - item_source = ? AND share_type = ? AND uid_owner = ?' - ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_USER, \OCP\User::getUser() ) ); - - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); - } - + public static function getUsersSharingFile( $path, $includeOwner = 0 ) { + + $user = \OCP\User::getUser(); + $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); + $path = ''; $shares = array(); - while( $row = $result->fetchRow() ) { - $shares[] = $row['share_with']; - } - - // We also need to take group shares into account - - $query = \OC_DB::prepare( - 'SELECT share_with - FROM - `*PREFIX*share` - WHERE - item_source = ? AND share_type = ? AND uid_owner = ?' - ); + foreach ($path_parts as $p) { + $path .= '/'.$p; + $meta = \OC\Files\Filesystem::getFileInfo(\OC_Filesystem::normalizePath($path)); + $source = $meta['fileid']; - $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP, \OCP\User::getUser() ) ); - - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + // Fetch all shares of this file path from DB + $query = \OC_DB::prepare( + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ? AND uid_owner = ?' + ); + + $result = $query->execute( array( $source, self::SHARE_TYPE_USER, $user ) ); + + if ( \OC_DB::isError( $result ) ) { + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + } + + while( $row = $result->fetchRow() ) { + $shares[] = $row['share_with']; + } + + // We also need to take group shares into account + + $query = \OC_DB::prepare( + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ? AND uid_owner = ?' + ); + + $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP, $user ) ); + + if ( \OC_DB::isError( $result ) ) { + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + } + + while( $row = $result->fetchRow() ) { + $usersInGroup = \OC_Group::usersInGroup($row['share_with']); + $shares = array_merge($shares, $usersInGroup); + } } - - while( $row = $result->fetchRow() ) { - $usersInGroup = \OC_Group::usersInGroup($row['share_with']); - $shares = array_merge($shares, $usersInGroup); - } - + if ( ! empty( $shares ) ) { // Include owner in list of users, if requested if ( $includeOwner == 1 ) { - $shares[] = \OCP\User::getUser(); + $shares[] = $user; } - return array_unique($shares); - } else { - return false; - } - + } /** From a692264fa416fec44d774bd955a06a65c7c0d158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 12 Feb 2013 17:00:33 +0100 Subject: [PATCH 015/575] add option to keep duplicates in the list of users with access to a file, e.g. for the unshare operation we need to know if access was granted more than once, for example as group share and as individual share --- apps/files_encryption/hooks/hooks.php | 6 +++--- apps/files_encryption/lib/proxy.php | 11 ++--------- lib/public/share.php | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ffd3e4544f..5e06948aa5 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -182,7 +182,7 @@ class Hooks { $path = Util::getFilePath($params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $path, 1 ); + $shares = \OCP\Share::getUsersSharingFile( $path, true ); return Crypt::encKeyfileToMultipleUsers($shares, $path); @@ -194,11 +194,11 @@ class Hooks { public static function preUnshare( $params ) { $path = Util::getFilePath($params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $path, 1 ); + $shares = \OCP\Share::getUsersSharingFile( $path, true, false ); // remove the user from the list from which the file will be unshared unset($shares[$params['shareWith']]); - return Crypt::encKeyfileToMultipleUsers($shares, $path ); + return Crypt::encKeyfileToMultipleUsers(array_unique($shares), $path ); } /** diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 40ac411539..3e4178e8a8 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -118,15 +118,8 @@ class Proxy extends \OC_FileProxy { // $fileOwner = \OC\Files\Filesystem::getOwner( $path ); // List everyone sharing the file - $shares = \OCP\Share::getUsersSharingFile( $filePath, 1 ); - - $userIds = array(); - - foreach ( $shares as $share ) { - - $userIds[] = $share['userId']; - - } + //TODO check, is this path always the path to the source file? + $userIds = \OCP\Share::getUsersSharingFile( $filePath, true ); $publicKeys = Keymanager::getPublicKeys( $rootView, $userIds ); diff --git a/lib/public/share.php b/lib/public/share.php index 55ff4d4738..68f5e93baa 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -145,11 +145,14 @@ class Share { /** * @brief Find which users can access a shared item - * @return bool / array + * @param $path to the file + * @param include owner to the list of users with access to the file + * @param remove duplicates in the result + * @return array * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $path, $includeOwner = 0 ) { + public static function getUsersSharingFile( $path, $includeOwner = false, $removeDuplicates = true ) { $user = \OCP\User::getUser(); $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); @@ -204,14 +207,16 @@ class Share { if ( ! empty( $shares ) ) { // Include owner in list of users, if requested - if ( $includeOwner == 1 ) { + if ( $includeOwner ) { $shares[] = $user; } - return array_unique($shares); - } else { - return false; } - + + if ( $removeDuplicates ) + return array_unique($shares); + else { + return $shares; + } } /** From 4952dfe95657ba52f1b39f958100659539831ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 13 Feb 2013 14:56:39 +0100 Subject: [PATCH 016/575] add post_unshare hook, also add public link shares to the list of user with access to a file --- apps/files_encryption/appinfo/app.php | 2 +- apps/files_encryption/hooks/hooks.php | 9 +++---- apps/files_encryption/lib/crypt.php | 4 ++- lib/public/share.php | 35 +++++++++++++++++++++------ 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index f83109a18e..932e8855d0 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -16,7 +16,7 @@ OCP\Util::connectHook( 'OC_User', 'pre_setPassword','OCA\Encryption\Hooks', 'set // Sharing-related hooks OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); -OCP\Util::connectHook( 'OCP\Share', 'pre_unshare', 'OCA\Encryption\Hooks', 'preUnshare' ); +OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' ); // Webdav-related hooks diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 5e06948aa5..ae05ba7801 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -176,6 +176,8 @@ class Hooks { //TODO: We don't deal with shared folder yet, need to recursively update every file in the folder + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_LINK) + $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); @@ -191,12 +193,9 @@ class Hooks { /** * @brief */ - public static function preUnshare( $params ) { - + public static function postUnshare( $params ) { $path = Util::getFilePath($params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $path, true, false ); - // remove the user from the list from which the file will be unshared - unset($shares[$params['shareWith']]); + $shares = \OCP\Share::getUsersSharingFile( $path, true ); return Crypt::encKeyfileToMultipleUsers(array_unique($shares), $path ); } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index ba9f0cb9a2..0f465d7d95 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -450,7 +450,9 @@ class Crypt { * @returns encrypted file */ public static function keyEncrypt( $plainContent, $publicKey ) { - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); + + if (openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey )) error_log("feinifeine"); else error_log("ups"); + return $encryptedContent; } diff --git a/lib/public/share.php b/lib/public/share.php index 68f5e93baa..f691ae9b39 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -147,7 +147,6 @@ class Share { * @brief Find which users can access a shared item * @param $path to the file * @param include owner to the list of users with access to the file - * @param remove duplicates in the result * @return array * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' @@ -203,6 +202,25 @@ class Share { $usersInGroup = \OC_Group::usersInGroup($row['share_with']); $shares = array_merge($shares, $usersInGroup); } + + //check for public link shares + $query = \OC_DB::prepare( + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ? AND uid_owner = ?' + ); + + $result = $query->execute( array( $source, self::SHARE_TYPE_LINK, $user ) ); + + if ( \OC_DB::isError( $result ) ) { + \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + } + + if ($result->fetchRow()) { + $shares[] = self::SHARE_TYPE_LINK; + } } if ( ! empty( $shares ) ) { @@ -212,11 +230,8 @@ class Share { } } - if ( $removeDuplicates ) - return array_unique($shares); - else { - return $shares; - } + return array_unique($shares); + } /** @@ -475,8 +490,14 @@ class Share { 'itemSource' => $itemSource, 'shareType' => $shareType, 'shareWith' => $shareWith, - )); + )); self::delete($item['id']); + \OC_Hook::emit('OCP\Share', 'post_unshare', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'shareType' => $shareType, + 'shareWith' => $shareWith, + )); return true; } return false; From 9356f9a6bf6e9bd048e31e787d5fcb621de8eebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 13 Feb 2013 17:23:27 +0100 Subject: [PATCH 017/575] add post_unshareALll hook, update recursively all keyfiles if a folder was shared/unshared --- apps/files_encryption/appinfo/app.php | 2 +- apps/files_encryption/hooks/hooks.php | 15 +++++------ apps/files_encryption/lib/crypt.php | 36 ++++++++++++++++++++++++++- lib/public/share.php | 5 ++++ 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 932e8855d0..6778e1faa3 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -17,7 +17,7 @@ OCP\Util::connectHook( 'OC_User', 'pre_setPassword','OCA\Encryption\Hooks', 'set // Sharing-related hooks OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); -OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' ); +OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); // Webdav-related hooks OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ae05ba7801..34ed11c7e2 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -176,17 +176,13 @@ class Hooks { //TODO: We don't deal with shared folder yet, need to recursively update every file in the folder - if ($params['shareType'] == \OCP\Share::SHARE_TYPE_LINK) - $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = Util::getFilePath($params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $path, true ); - - return Crypt::encKeyfileToMultipleUsers($shares, $path); + return Crypt::updateKeyfile($path); } @@ -195,16 +191,17 @@ class Hooks { */ public static function postUnshare( $params ) { $path = Util::getFilePath($params['itemSource']); - $shares = \OCP\Share::getUsersSharingFile( $path, true ); - return Crypt::encKeyfileToMultipleUsers(array_unique($shares), $path ); + return Crypt::updateKeyfile($path); } /** * @brief */ - public static function preUnshareAll( $params ) { - return Crypt::encKeyfileToMultipleUsers(array(\OCP\User::getUser()), Util::getFilePath($params['itemSource'])); + public static function postUnshareAll( $params ) { + $path = Util::getFilePath($params['itemSource']); + + return Crypt::updateKeyfile($path); } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 0f465d7d95..18e9535bf3 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -750,7 +750,7 @@ class Crypt { * @param $users list of users which should be able to access the file * @param $fileTarget target of the file */ - public static function encKeyfileToMultipleUsers($users, $filePath) { + private static function encKeyfileToMultipleUsers($users, $filePath) { $view = new \OC_FilesystemView( '/' ); $owner = \OCP\User::getUser(); $util = new Util( $view, $userId ); @@ -810,4 +810,38 @@ class Crypt { return true; } + + /** + * @brief update keyfile encryption for given path and all sub folders/files + * @param path which needs to be updated + * @return bool success + */ + public static function updateKeyfile($path) { + + $filesView = \OCP\Files::getStorage('files'); + + $result = true; + + if ( $filesView->is_dir($path) ) { + $content = $filesView->getDirectoryContent($path); + foreach ( $content as $c) { + $path = substr($c['path'], 5); + if ( $filesView->is_dir($path) ) { + error_log("dive into $path"); + $result &= self::updateKeyfile($path); + } else { + error_log("encKeyFileToMultipleUsers $path"); + $shares = \OCP\Share::getUsersSharingFile( $path, true ); + $result &= self::encKeyfileToMultipleUsers($shares, $path); + } + } + } else { + error_log("encKeyFileToMultipleUsers single file: " . $path); + $shares = \OCP\Share::getUsersSharingFile( $path, true ); + $result = self::encKeyfileToMultipleUsers($shares, $path); + } + + return $result; + + } } \ No newline at end of file diff --git a/lib/public/share.php b/lib/public/share.php index f691ae9b39..d1297c6e59 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -520,6 +520,11 @@ class Share { foreach ($shares as $share) { self::delete($share['id']); } + \OC_Hook::emit('OCP\Share', 'post_unshareAll', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'shares' => $shares + )); return true; } return false; From 5005195db005fd0d7c8fdf1a73e12c4a4619acb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 13 Feb 2013 17:57:45 +0100 Subject: [PATCH 018/575] create keypair for ownCloud with empty passphrase, will be used for public link shares --- apps/files_encryption/lib/crypt.php | 5 +---- apps/files_encryption/lib/session.php | 28 +++++++++++++++++++++++++++ lib/public/share.php | 2 +- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 18e9535bf3..2e5912a868 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -763,7 +763,7 @@ class Crypt { $util = new Util( $view, $user ); // Check that the user is encryption capable - if ( $util->ready() ) { + if ( $util->ready() && $user == 'ownCloud' ) { // Construct array of just UIDs for Keymanager{} $userIds[] = $user; @@ -827,16 +827,13 @@ class Crypt { foreach ( $content as $c) { $path = substr($c['path'], 5); if ( $filesView->is_dir($path) ) { - error_log("dive into $path"); $result &= self::updateKeyfile($path); } else { - error_log("encKeyFileToMultipleUsers $path"); $shares = \OCP\Share::getUsersSharingFile( $path, true ); $result &= self::encKeyfileToMultipleUsers($shares, $path); } } } else { - error_log("encKeyFileToMultipleUsers single file: " . $path); $shares = \OCP\Share::getUsersSharingFile( $path, true ); $result = self::encKeyfileToMultipleUsers($shares, $path); } diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 769a40b359..ebf7edcd71 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -27,6 +27,34 @@ namespace OCA\Encryption; */ class Session { + + /** + * @brief if session is started, check if ownCloud key pair is set up, if not create it + * + * The ownCloud key pair is used to allow public link sharing even if encryption is enabled + */ + public function __construct() { + $view = new \OC\Files\View('/'); + if (!$view->is_dir('owncloud_private_key')) { + $view->mkdir('owncloud_private_key'); + } + + if (!$view->file_exists("/public-keys/owncloud.public.key") || !$view->file_exists("/owncloud_private_key/owncloud.private.key") ) { + + $keypair = Crypt::createKeypair(); + + \OC_FileProxy::$enabled = false; + // Save public key + $view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); + // Encrypt private key empthy passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); + // Save private key + error_log("encrypted private key: " . $encryptedPrivateKey ); + $view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); + + \OC_FileProxy::$enabled = true; + } + } /** * @brief Sets user private key to session diff --git a/lib/public/share.php b/lib/public/share.php index d1297c6e59..720337c3c3 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -219,7 +219,7 @@ class Share { } if ($result->fetchRow()) { - $shares[] = self::SHARE_TYPE_LINK; + $shares[] = "ownCloud"; } } From 8c35bbcba75590d5f66ecf08a4dd07db3fd23732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 14 Feb 2013 16:33:57 +0100 Subject: [PATCH 019/575] remove debug output, fix typo in file names --- apps/files_encryption/lib/session.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index ebf7edcd71..171a6900f0 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -34,23 +34,23 @@ class Session { * The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ public function __construct() { + $view = new \OC\Files\View('/'); if (!$view->is_dir('owncloud_private_key')) { $view->mkdir('owncloud_private_key'); } if (!$view->file_exists("/public-keys/owncloud.public.key") || !$view->file_exists("/owncloud_private_key/owncloud.private.key") ) { - + $keypair = Crypt::createKeypair(); \OC_FileProxy::$enabled = false; // Save public key - $view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); + $view->file_put_contents( '/public-keys/ownCloud.public.key', $keypair['publicKey'] ); // Encrypt private key empthy passphrase $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); // Save private key - error_log("encrypted private key: " . $encryptedPrivateKey ); - $view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); + $view->file_put_contents( '/owncloud_private_key/ownCloud.private.key', $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; } From 109fee7673f1c3f395da47ae7114fba3354fa22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 19 Feb 2013 14:47:45 +0100 Subject: [PATCH 020/575] remove todo, it is already solved --- apps/files_encryption/hooks/hooks.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 34ed11c7e2..5020724657 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -174,8 +174,6 @@ class Hooks { // fileTarget -> path of file being shared // uidOwner -> owner of the original file being shared - //TODO: We don't deal with shared folder yet, need to recursively update every file in the folder - $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); From fd629983fa61ad7fdc1c6696e6b2fa1739ae6f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 19 Feb 2013 17:10:32 +0100 Subject: [PATCH 021/575] remove debug output --- apps/files_encryption/lib/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 2e5912a868..a1684fc95f 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -451,7 +451,7 @@ class Crypt { */ public static function keyEncrypt( $plainContent, $publicKey ) { - if (openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey )) error_log("feinifeine"); else error_log("ups"); + openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); return $encryptedContent; From 14ae373dfe86b34b3e027306b5f857a3f38ff418 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 19 Feb 2013 17:41:38 +0000 Subject: [PATCH 022/575] Fixed wrong array key reference --- apps/files_encryption/lib/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index a1684fc95f..49b75c17f6 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -371,7 +371,7 @@ class Crypt { * @brief Create asymmetrically encrypted keyfile content using a generated key * @param string $plainContent content to be encrypted * @param array $publicKeys array keys must be the userId of corresponding user - * @returns array keys: keys (array, key = userId), encrypted + * @returns array keys: keys (array, key = userId), data * @note symmetricDecryptFileContent() can decrypt files created using this method */ public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { From 1b880f2f96df514c68a17e90141cff9620c2ddb5 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 19 Feb 2013 19:16:50 +0000 Subject: [PATCH 023/575] Moved dependencies out of Crypt methods (encKeyfileToMultipleUsers)(DI) Fixed bug preventing sharing with users other than 'ownCloud' Added comments Moved functionality into filterShareReadyUsers() Other changes --- apps/files_encryption/appinfo/app.php | 2 +- apps/files_encryption/hooks/hooks.php | 23 ++++-- apps/files_encryption/lib/crypt.php | 103 ++++++++++++++------------ apps/files_encryption/lib/util.php | 41 ++++++++++ 4 files changed, 112 insertions(+), 57 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 6778e1faa3..742e4add8f 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -20,7 +20,7 @@ OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'pos OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); // Webdav-related hooks -OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' ); +OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 5020724657..1ebfdb1ae0 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -139,7 +139,7 @@ class Hooks { /** * @brief update the encryption key of the file uploaded by the client */ - public static function updateKeyfile( $params ) { + public static function updateKeyfileFromClient( $params ) { if ( Crypt::mode() == 'client' ) { @@ -175,12 +175,13 @@ class Hooks { // uidOwner -> owner of the original file being shared $view = new \OC_FilesystemView( '/' ); + $session = new Session(); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); - $path = Util::getFilePath($params['itemSource']); + $path = Util::getFilePath( $params['itemSource'] ); - return Crypt::updateKeyfile($path); + return Crypt::updateKeyfile( $view, $session, $path ); } @@ -188,18 +189,26 @@ class Hooks { * @brief */ public static function postUnshare( $params ) { - $path = Util::getFilePath($params['itemSource']); + + $view = new \OC_FilesystemView( '/' ); + $session = new Session(); + $path = Util::getFilePath( $params['itemSource'] ); + + return Crypt::updateKeyfile( $view, $session, $path ); - return Crypt::updateKeyfile($path); } /** * @brief */ public static function postUnshareAll( $params ) { - $path = Util::getFilePath($params['itemSource']); + + $view = new \OC_FilesystemView( '/' ); + $session = new Session(); + $path = Util::getFilePath( $params['itemSource'] ); + + return Crypt::updateKeyfile( $view, $session, $path ); - return Crypt::updateKeyfile($path); } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 49b75c17f6..1b0167834e 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -746,52 +746,44 @@ class Crypt { /** - * @brief encrypt file key to multiple users - * @param $users list of users which should be able to access the file - * @param $fileTarget target of the file + * @brief Encrypt keyfile to multiple users + * @param array $users list of users which should be able to access the file + * @param string $filePath path of the file to be shared */ - private static function encKeyfileToMultipleUsers($users, $filePath) { - $view = new \OC_FilesystemView( '/' ); - $owner = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $session = new Session(); + private static function encKeyfileToMultipleUsers( \OC_FilesystemView $view, Util $util, Session $session, $userId, array $users, $filePath ) { + + // Make sure users are capable of sharing + $filteredUids = $util->filterShareReadyUsers( $users ); - $userIds = array(); - - foreach ( $users as $user ) { - - $util = new Util( $view, $user ); - - // Check that the user is encryption capable - if ( $util->ready() && $user == 'ownCloud' ) { - // Construct array of just UIDs for Keymanager{} - $userIds[] = $user; - - } else { - - // Log warning; we can't do necessary setup here - // because we don't have the user passphrase - // TODO: Provide user feedback indicating that - // sharing failed - \OC_Log::write( 'Encryption library', 'File cannot be shared: user "'.$user.'" is not setup for encryption', \OC_Log::WARN ); - - } - - } - - - $userPubKeys = Keymanager::getPublicKeys( $view, $userIds ); + // Get public keys for each user, ready for generating sharekeys + $userPubKeys = Keymanager::getPublicKeys( $view, $filteredUids ); // TODO: check this includes the owner's public key \OC_FileProxy::$enabled = false; - // get the keyfile + // Get the current users's private key for decrypting existing keyfile + $privateKey = $session->getPrivateKey(); + + // We need to get a decrypted key for the file + // Determine how to decrypt the keyfile by checking if current user is owner + if ( $userId == \OC\Files\Filesystem::getOwner( $filePath ) ) { + + // If current user is owner, decrypt without using sharekey + + } else { + + // Current user is resharing a file they don't own + // Decrypt keyfile using sharekey + + } + + // get the existing keyfile $encKeyfile = Keymanager::getFileKey( $view, $owner, $filePath ); - $privateKey = $session->getPrivateKey(); - - // decrypt the keyfile + // decrypt the existing keyfile $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); - + + trigger_error("PUBKEYS = ". var_export($userPubKeys, 1)); + // re-enc keyfile to sharekeys $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); @@ -816,29 +808,42 @@ class Crypt { * @param path which needs to be updated * @return bool success */ - public static function updateKeyfile($path) { + public static function updateKeyfile( \OC_FilesystemView $view, Util $util, Session $session, $path ) { - $filesView = \OCP\Files::getStorage('files'); + // Make path include 'files' dir for OC_FSV operations + $fPath = 'files' . $path; $result = true; - if ( $filesView->is_dir($path) ) { - $content = $filesView->getDirectoryContent($path); - foreach ( $content as $c) { + if ( ! $view->is_dir( $fPath ) ) { + + $shares = \OCP\Share::getUsersSharingFile( $path, true ); + $result = self::encKeyfileToMultipleUsers( $view, $util, $session, $shares, $path ); + + } else { + + $content = $view->getDirectoryContent( $fPath ); + + foreach ( $content as $c ) { + $path = substr($c['path'], 5); - if ( $filesView->is_dir($path) ) { - $result &= self::updateKeyfile($path); + + if ( $view->is_dir( $fPath ) ) { + + $result &= self::updateKeyfile( $path ); + } else { + $shares = \OCP\Share::getUsersSharingFile( $path, true ); - $result &= self::encKeyfileToMultipleUsers($shares, $path); + $result &= self::encKeyfileToMultipleUsers( $view, $util, $session, $shares, $path ); + } } - } else { - $shares = \OCP\Share::getUsersSharingFile( $path, true ); - $result = self::encKeyfileToMultipleUsers($shares, $path); + } return $result; } + } \ No newline at end of file diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 843727d7ab..8ca51c95d7 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -486,5 +486,46 @@ class Util { $row = $result->fetchRow(); return substr($row['path'], 5); } + + /** + * @brief Filter an array of UIDs to return only ones ready for sharing + * @param array $unfilteredUsers users to be checked for sharing readiness + * @return array $userIds filtered users + */ + public function filterShareReadyUsers( $unfilteredUsers ) { + + // This array will collect the filtered IDs + $userIds = array(); + + // Loop through users and create array of UIDs that need new keyfiles + foreach ( $unfilteredUsers as $user ) { + + $util = new Util( $this->view, $user ); + + // Check that the user is encryption capable, or is the + // public system user 'ownCloud' (for public shares) + if ( + $util->ready() + or $user == 'ownCloud' + ) { + + // Construct array of just UIDs for Keymanager{} + $userIds[] = $user; + + } else { + + // Log warning; we can't do necessary setup here + // because we don't have the user passphrase + // TODO: Provide user feedback indicating that + // sharing failed + \OC_Log::write( 'Encryption library', '"'.$user.'" is not setup for encryption', \OC_Log::WARN ); + + } + + } + + return $userIds; + + } } From 2d267501a10642e5c601ca87748b692ca58e4094 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 20 Feb 2013 19:18:00 +0000 Subject: [PATCH 024/575] Development snapshot Added comments Added methods --- apps/files_encryption/hooks/hooks.php | 54 ++++++-- apps/files_encryption/lib/crypt.php | 102 -------------- apps/files_encryption/lib/keymanager.php | 4 +- apps/files_encryption/lib/proxy.php | 43 ++++-- apps/files_encryption/lib/util.php | 169 +++++++++++++++++++++-- apps/files_encryption/test/util.php | 4 +- 6 files changed, 240 insertions(+), 136 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 1ebfdb1ae0..6d982b2c3b 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -178,10 +178,34 @@ class Hooks { $session = new Session(); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); + $path = $util->fileIdToPath( $params['itemSource'] ); - $path = Util::getFilePath( $params['itemSource'] ); - - return Crypt::updateKeyfile( $view, $session, $path ); + $usersSharing = \OCP\Share::getUsersSharingFile( $path, true ); + + $allPaths = $util->getPaths( $path ); + + $failed = array(); + + foreach ( $allPaths as $path ) { + + if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { + + $failed[] = $path; + + } + + } + + // If no attempts to set keyfiles failed + if ( empty( $failed ) ) { + + return true; + + } else { + + return false; + + } } @@ -190,11 +214,13 @@ class Hooks { */ public static function postUnshare( $params ) { - $view = new \OC_FilesystemView( '/' ); - $session = new Session(); - $path = Util::getFilePath( $params['itemSource'] ); - - return Crypt::updateKeyfile( $view, $session, $path ); +// $view = new \OC_FilesystemView( '/' ); +// $session = new Session(); +// $userId = \OCP\User::getUser(); +// $util = new Util( $view, $userId ); +// $path = $util->fileIdToPath( $params['itemSource'] ); +// +// return Crypt::updateKeyfile( $view, $util, $session, $userId, $path ); } @@ -203,11 +229,13 @@ class Hooks { */ public static function postUnshareAll( $params ) { - $view = new \OC_FilesystemView( '/' ); - $session = new Session(); - $path = Util::getFilePath( $params['itemSource'] ); - - return Crypt::updateKeyfile( $view, $session, $path ); +// $view = new \OC_FilesystemView( '/' ); +// $session = new Session(); +// $userId = \OCP\User::getUser(); +// $util = new Util( $view, $userId ); +// $path = $util->fileIdToPath( $params['itemSource'] ); +// +// return Crypt::updateKeyfile( $view, $util, $session, $userId, $path ); } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 1b0167834e..a677de950a 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -744,106 +744,4 @@ class Crypt { } - - /** - * @brief Encrypt keyfile to multiple users - * @param array $users list of users which should be able to access the file - * @param string $filePath path of the file to be shared - */ - private static function encKeyfileToMultipleUsers( \OC_FilesystemView $view, Util $util, Session $session, $userId, array $users, $filePath ) { - - // Make sure users are capable of sharing - $filteredUids = $util->filterShareReadyUsers( $users ); - - // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $view, $filteredUids ); // TODO: check this includes the owner's public key - - \OC_FileProxy::$enabled = false; - - // Get the current users's private key for decrypting existing keyfile - $privateKey = $session->getPrivateKey(); - - // We need to get a decrypted key for the file - // Determine how to decrypt the keyfile by checking if current user is owner - if ( $userId == \OC\Files\Filesystem::getOwner( $filePath ) ) { - - // If current user is owner, decrypt without using sharekey - - } else { - - // Current user is resharing a file they don't own - // Decrypt keyfile using sharekey - - } - - // get the existing keyfile - $encKeyfile = Keymanager::getFileKey( $view, $owner, $filePath ); - - // decrypt the existing keyfile - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); - - trigger_error("PUBKEYS = ". var_export($userPubKeys, 1)); - - // re-enc keyfile to sharekeys - $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); - - // save sharekeys - if ( ! Keymanager::setShareKeys( $view, $filePath, $shareKeys['keys'] ) ) { - - trigger_error( "SET Share keys failed" ); - - } - - // Delete existing keyfile - // Do this last to ensure file is recoverable in case of error - // Keymanager::deleteFileKey( $view, $userId, $params['fileTarget'] ); - - \OC_FileProxy::$enabled = true; - - return true; - } - - /** - * @brief update keyfile encryption for given path and all sub folders/files - * @param path which needs to be updated - * @return bool success - */ - public static function updateKeyfile( \OC_FilesystemView $view, Util $util, Session $session, $path ) { - - // Make path include 'files' dir for OC_FSV operations - $fPath = 'files' . $path; - - $result = true; - - if ( ! $view->is_dir( $fPath ) ) { - - $shares = \OCP\Share::getUsersSharingFile( $path, true ); - $result = self::encKeyfileToMultipleUsers( $view, $util, $session, $shares, $path ); - - } else { - - $content = $view->getDirectoryContent( $fPath ); - - foreach ( $content as $c ) { - - $path = substr($c['path'], 5); - - if ( $view->is_dir( $fPath ) ) { - - $result &= self::updateKeyfile( $path ); - - } else { - - $shares = \OCP\Share::getUsersSharingFile( $path, true ); - $result &= self::encKeyfileToMultipleUsers( $view, $util, $session, $shares, $path ); - - } - } - - } - - return $result; - - } - } \ No newline at end of file diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 5f9eea1a0b..ec1fdd1fd5 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -305,8 +305,8 @@ class Keymanager { /** * @brief retrieve shareKey for an encrypted file * @param \OC_FilesystemView $view - * @param $userId - * @param $filePath + * @param string $userId + * @param string $filePath * @internal param \OCA\Encryption\file $string name * @return string file key or false * @note The sharekey returned is encrypted. Decryption diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 3e4178e8a8..9e6a11d9d4 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -169,6 +169,24 @@ class Proxy extends \OC_FileProxy { * @param string $data Data that has been read from file */ public function postFile_get_contents( $path, $data ) { + + // FIXME: $path for shared files is just /uid/files/Shared/filepath + + $userId = \OCP\USER::getUser(); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); + + if ( $util->isSharedPath( $path ) ) { + + $relPath = $util->stripSharedFilePath( $path ); + + } else { + + $relPath = $util->stripUserFilesPath( $path ); + + } + + // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; @@ -178,27 +196,34 @@ class Proxy extends \OC_FileProxy { Crypt::mode() == 'server' && Crypt::isCatfile( $data ) ) { - $view = new \OC_FilesystemView( '/' ); + // TODO use get owner to find correct location of key files for shared files - $userId = \OCP\USER::getUser(); $session = new Session(); - $util = new Util( $view, $userId ); - $filePath = $util->stripUserFilesPath( $path ); $privateKey = $session->getPrivateKey( $userId ); + // Get the file owner so we can retrieve its keyfile + $fileOwner = \OC\Files\Filesystem::getOwner( $relPath ); //NOTE: This might be false! make sure the path passed to it is right + $fileOwner = 'admin'; // FIXME: Manually set the correct UID for now + // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ); + $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $relPath ); + + trigger_error("\$encKeyfile = ". var_export($encKeyfile, 1)); + + // Attempt to fetch the user's shareKey + $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); + + trigger_error("\$shareKey = ".var_export($shareKey, 1)); // Check if key is shared or not - if ( \OCP\Share::isSharedFile( $filePath ) ) { - - // If key is shared, fetch the user's shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); + if ( $shareKey ) { \OC_FileProxy::$enabled = false; // Decrypt keyfile with shareKey $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + + trigger_error("PROXY plainkeyfile = ". var_export($plainKeyfile, 1)); } else { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 8ca51c95d7..ac098cd877 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -224,7 +224,7 @@ class Util { * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findFiles( $directory ) { + public function findEncFiles( $directory ) { // Disable proxy - we don't want files to be decrypted before // we handle them @@ -251,7 +251,7 @@ class Util { // its contents if ( $this->view->is_dir( $filePath ) ) { - $this->findFiles( $filePath ); + $this->findEncFiles( $filePath ); // If the path is a file, determine // its encryption status @@ -348,6 +348,38 @@ class Util { } + /** + * @brief Format a shared path to be relative to the /user/files/ directory + * @note Expects a path like /uid/files/Shared/filepath + */ + public function stripSharedFilePath( $path ) { + + $trimmed = ltrim( $path, '/' ); + $split = explode( '/', $trimmed ); + $sliced = array_slice( $split, 3 ); + $relPath = implode( '/', $sliced ); + + return $relPath; + + } + + public function isSharedPath( $path ) { + + $trimmed = ltrim( $path, '/' ); + $split = explode( '/', $trimmed ); + + if ( $split[2] == "Shared" ) { + + return true; + + } else { + + return false; + + } + + } + /** * @brief Encrypt all files in a directory * @param string $publicKey the public key to encrypt files with @@ -356,7 +388,7 @@ class Util { */ public function encryptAll( $publicKey, $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { - if ( $found = $this->findFiles( $dirPath ) ) { + if ( $found = $this->findEncFiles( $dirPath ) ) { // Disable proxy to prevent file being encrypted twice \OC_FileProxy::$enabled = false; @@ -478,13 +510,18 @@ class Util { * @param $fileId id of the file * @return path of the file */ - public static function getFilePath($fileId) { - $query = \OC_DB::prepare('SELECT `path`' + public static function fileIdToPath( $fileId ) { + + $query = \OC_DB::prepare( 'SELECT `path`' .' FROM `*PREFIX*filecache`' - .' WHERE `fileid` = ?'); - $result = $query->execute(array($fileId)); + .' WHERE `fileid` = ?' ); + + $result = $query->execute( array( $fileId ) ); + $row = $result->fetchRow(); - return substr($row['path'], 5); + + return substr( $row['path'], 5 ); + } /** @@ -527,5 +564,121 @@ class Util { return $userIds; } + + /** + * @brief Expand given path to all sub files & folders + * @param Session $session + * @param string $path path which needs to be updated + * @return bool outcome of attempt to set keyfiles + */ + public function getPaths( $path ) { + + // Default return value is success + $result = true; + + // Make path include 'files' dir for OC_FSV operations + $fPath = 'files' . $path; + + // If we're handling a single file + if ( ! $this->view->is_dir( $fPath ) ) { + + $pathsArray[] = $path; + + // If we're handling a folder (recursively) + } else { + + $subFiles = $this->view->getDirectoryContent( $fPath ); + + foreach ( $subFiles as $file ) { + + $filePath = substr( $file['path'], 5 ); + + // If this is a nested file + if ( ! $this->view->is_dir( $fPath ) ) { + + // Add the file path to array + $pathsArray[] = $path; + + } else { + + // If this is a nested folder + $dirPaths = $this->getPaths( $filePath ); + + // Add all subfiles & folders to the array + $pathsArray = array_merge( $dirPaths, $pathsArray ); + + } + } + + } + + return $pathsArray; + + } + + /** + * @brief Encrypt keyfile to multiple users + * @param array $users list of users which should be able to access the file + * @param string $filePath path of the file to be shared + */ + public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { + + // Make sure users are capable of sharing + $filteredUids = $this->filterShareReadyUsers( $users ); + + // Get public keys for each user, ready for generating sharekeys + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids ); // TODO: check this includes the owner's public key + + \OC_FileProxy::$enabled = false; + + // Get the current users's private key for decrypting existing keyfile + $privateKey = $session->getPrivateKey(); + + $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); + + // Get the encrypted keyfile + // NOTE: the keyfile format depends on how it was encrypted! At + // this stage we don't know how it was encrypted + $encKeyfile = Keymanager::getFileKey( $this->view, $this->userId, $filePath ); + + // We need to decrypt the keyfile + // Has the file been shared yet? + if ( + $this->userId == $fileOwner + && ! Keymanager::getShareKey( $this->view, $this->userId, $filePath ) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true + ) { + + // The file has no shareKey, and its keyfile must be + // decrypted conventionally + $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + + + } else { + + // The file has a shareKey and must use it for decryption + $shareKey = Keymanager::getShareKey( $this->view, $this->userId, $filePath ); + + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + + } + + // Re-enc keyfile to (additional) sharekeys + $newShareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + + // Save new sharekeys to all necessary user folders + if ( ! Keymanager::setShareKeys( $this->view, $filePath, $newShareKeys['keys'] ) ) { + + trigger_error( "SET Share keys failed" ); + + } + + // Delete existing keyfile + // Do this last to ensure file is recoverable in case of error + // Keymanager::deleteFileKey( $this->view, $this->userId, $params['fileTarget'] ); + + \OC_FileProxy::$enabled = true; + + return true; + } } diff --git a/apps/files_encryption/test/util.php b/apps/files_encryption/test/util.php index 1cdeff8008..275e60f4bd 100755 --- a/apps/files_encryption/test/util.php +++ b/apps/files_encryption/test/util.php @@ -150,13 +150,13 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { } - function testFindFiles() { + function testFindEncFiles() { // $this->view->chroot( "/data/{$this->userId}/files" ); $util = new Encryption\Util( $this->view, $this->userId ); - $files = $util->findFiles( '/', 'encrypted' ); + $files = $util->findEncFiles( '/', 'encrypted' ); var_dump( $files ); From 40efeb91878e72eb5c2eb1ab50574cda9435e0fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 22 Feb 2013 16:02:27 +0100 Subject: [PATCH 025/575] isSharedFile() doesn't detect all shares, just use getUsersSharingFile() directly either you get a list of users or not --- apps/files_encryption/lib/proxy.php | 6 +---- lib/public/share.php | 34 ----------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 9e6a11d9d4..ebe09dc075 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -113,14 +113,10 @@ class Proxy extends \OC_FileProxy { $encData = Crypt::symmetricEncryptFileContentKeyfile( $data ); // Check if the keyfile needs to be shared - if ( \OCP\Share::isSharedFile( $filePath ) ) { + if ( ($userIds = \OCP\Share::getUsersSharingFile( $filePath, true )) ) { // $fileOwner = \OC\Files\Filesystem::getOwner( $path ); - // List everyone sharing the file - //TODO check, is this path always the path to the source file? - $userIds = \OCP\Share::getUsersSharingFile( $filePath, true ); - $publicKeys = Keymanager::getPublicKeys( $rootView, $userIds ); \OC_FileProxy::$enabled = false; diff --git a/lib/public/share.php b/lib/public/share.php index 720337c3c3..7630c8ae6c 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -108,41 +108,7 @@ class Share { return $path; } - - public static function isSharedFile( $path ) { - - $fPath = self::prepFileTarget( $path ); - - // Fetch all shares of this file path from DB - $query = \OC_DB::prepare( - 'SELECT - id - FROM - `*PREFIX*share` - WHERE - file_target = ?' - ); - - $result = $query->execute( array( $fPath ) ); - if ( \OC_DB::isError( $result ) ) { - - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage( $result ) . ', path=' . $fPath, \OC_Log::ERROR ); - - } - - if ( $result->fetchRow() !== false ) { - - return true; - - } else { - - return false; - - } - - } - /** * @brief Find which users can access a shared item * @param $path to the file From 31c434b79560c3c45e6202cecc635ad6cb887390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 22 Feb 2013 16:08:08 +0100 Subject: [PATCH 026/575] the default should be to encrypt all files if the user/admin doesn't specify a blacklist explicitely --- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/settings-personal.php | 2 +- apps/files_encryption/settings.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index ebe09dc075..56c9000bfb 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -70,7 +70,7 @@ class Proxy extends \OC_FileProxy { if ( is_null(self::$blackList ) ) { - self::$blackList = explode(',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg' ) ); + self::$blackList = explode(',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); } diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index 6fe4ea6d56..94e37ebe96 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -8,7 +8,7 @@ $tmpl = new OCP\Template( 'files_encryption', 'settings-personal'); -$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg' ) ); +$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); $tmpl->assign( 'blacklist', $blackList ); diff --git a/apps/files_encryption/settings.php b/apps/files_encryption/settings.php index d1260f44e9..85c616bca7 100644 --- a/apps/files_encryption/settings.php +++ b/apps/files_encryption/settings.php @@ -10,7 +10,7 @@ $tmpl = new OCP\Template( 'files_encryption', 'settings' ); -$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg' ) ); +$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); $tmpl->assign( 'blacklist', $blackList ); $tmpl->assign( 'encryption_mode', \OC_Appconfig::getValue( 'files_encryption', 'mode', 'none' ) ); From ca1b94d890c281507c31082f1116f15d246341dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 25 Feb 2013 12:29:07 +0100 Subject: [PATCH 027/575] make sure that home folders are mounted correctly before write/read keyfile --- apps/files_encryption/lib/keymanager.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index ec1fdd1fd5..d35ad8f4d5 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -105,6 +105,7 @@ class Keymanager { */ public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + \OC\Files\Filesystem::initMountPoints($userId); $basePath = '/' . $userId . '/files_encryption/keyfiles'; $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); @@ -134,6 +135,7 @@ class Keymanager { */ public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + \OC\Files\Filesystem::initMountPoints($userId); $filePath_f = ltrim( $filePath, '/' ); $keyfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; From 4550ae6a69c00aeab2f54d0210ae5dee90f7ee82 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 26 Feb 2013 18:11:29 +0000 Subject: [PATCH 028/575] Shared encrypted files now readable by both sharer and sharee --- apps/files_encryption/lib/crypt.php | 2 ++ apps/files_encryption/lib/keymanager.php | 20 ++++++++++--- apps/files_encryption/lib/proxy.php | 15 ++++++---- apps/files_encryption/lib/util.php | 37 +++++++++++++++++------- 4 files changed, 53 insertions(+), 21 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index a677de950a..5a2d99df54 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -391,6 +391,8 @@ class Crypt { if( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { +// trigger_error("SEALED = $sealed"); + $i = 0; // Ensure each shareKey is labelled with its diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index d35ad8f4d5..ec4057d098 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -105,6 +105,8 @@ class Keymanager { */ public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + \OC_FileProxy::$enabled = false; + \OC\Files\Filesystem::initMountPoints($userId); $basePath = '/' . $userId . '/files_encryption/keyfiles'; @@ -112,15 +114,19 @@ class Keymanager { if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { - + // FIXME: write me } else { // Save the keyfile in parallel directory - return $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); } + \OC_FileProxy::$enabled = true; + + return $result; + } /** @@ -140,16 +146,22 @@ class Keymanager { $keyfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + \OC_FileProxy::$enabled = false; + if ( $view->file_exists( $keyfilePath ) ) { - return $view->file_get_contents( $keyfilePath ); + $result = $view->file_get_contents( $keyfilePath ); } else { - return false; + $result = false; } + \OC_FileProxy::$enabled = true; + + return $result; + } /** diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 56c9000bfb..29207dce07 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -91,7 +91,8 @@ class Proxy extends \OC_FileProxy { return false; } - public function preFile_put_contents( $path, &$data ) { + public function preFile_put_contents( $path, &$data ) { + // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. if ( self::shouldEncrypt( $path ) ) { @@ -204,22 +205,22 @@ class Proxy extends \OC_FileProxy { // Get the encrypted keyfile $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $relPath ); - trigger_error("\$encKeyfile = ". var_export($encKeyfile, 1)); - // Attempt to fetch the user's shareKey $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); - trigger_error("\$shareKey = ".var_export($shareKey, 1)); - // Check if key is shared or not if ( $shareKey ) { \OC_FileProxy::$enabled = false; +// trigger_error("\$encKeyfile = $encKeyfile, \$shareKey = $shareKey, \$privateKey = $privateKey"); + // Decrypt keyfile with shareKey $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - trigger_error("PROXY plainkeyfile = ". var_export($plainKeyfile, 1)); +// $plainKeyfile = $encKeyfile; + +// trigger_error("PROXY plainkeyfile = ". var_export($plainKeyfile, 1)); } else { @@ -229,6 +230,8 @@ class Proxy extends \OC_FileProxy { } $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); + +// trigger_error("PLAINDATA = ". var_export($plainData, 1)); } elseif ( Crypt::mode() == 'server' diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index ac098cd877..920ff3eb15 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -21,17 +21,28 @@ * */ -// Todo: +# Bugs +# ---- +# Sharing a file to a user without encryption set up will not provide them with access but won't notify the sharer +# Deleting files if keyfile is missing fails +# When encryption app is disabled files become unreadable +# Timeouts on first login due to encryption of very large files +# MultiKeyEncrypt() may be failing + + +# Missing features +# ---------------- +# Unshare a file +# Re-use existing keyfiles so they don't need version control +# Make sure user knows if large files weren't encrypted +# Trashbin support + + +// Old Todo: // - Crypt/decrypt button in the userinterface // - Setting if crypto should be on by default // - Add a setting "Don´t encrypt files larger than xx because of performance // reasons" -// - Transparent decrypt/encrypt in filesystem.php. Autodetect if a file is -// encrypted (.encrypted extension) -// - Don't use a password directly as encryption key. but a key which is -// stored on the server and encrypted with the user password. -> password -// change faster -// - IMPORTANT! Check if the block lenght of the encrypted data stays the same namespace OCA\Encryption; @@ -663,10 +674,14 @@ class Util { } // Re-enc keyfile to (additional) sharekeys - $newShareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); - - // Save new sharekeys to all necessary user folders - if ( ! Keymanager::setShareKeys( $this->view, $filePath, $newShareKeys['keys'] ) ) { + $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + + // Save the recrypted key to it's owner's keyfiles directory + // Save new sharekeys to all necessary user directory + if ( + ! Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) + || ! Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) + ) { trigger_error( "SET Share keys failed" ); From aae9b0b1bfc95d60bcc7c4a4b85a387a94ac9caa Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 26 Feb 2013 18:33:31 +0000 Subject: [PATCH 029/575] Started work on post unshare hook Development snapshot --- apps/files_encryption/hooks/hooks.php | 116 ++++++++++++++++------- apps/files_encryption/lib/keymanager.php | 24 +++++ apps/files_encryption/lib/util.php | 3 +- 3 files changed, 108 insertions(+), 35 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 6d982b2c3b..bf16a492e3 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -167,44 +167,60 @@ class Hooks { * @brief get all users with access to the file and encrypt the file key to each of them */ public static function postShared( $params ) { - - // NOTE: $params is an array with these keys: + + // NOTE: $params has keys: + // [itemType] => file // itemSource -> int, filecache file ID + // [parent] => + // [itemTarget] => /13 // shareWith -> string, uid of user being shared to // fileTarget -> path of file being shared // uidOwner -> owner of the original file being shared + // [shareType] => 0 + // [shareWith] => test1 + // [uidOwner] => admin + // [permissions] => 17 + // [fileSource] => 13 + // [fileTarget] => /test8 + // [id] => 10 + // [token] => - $view = new \OC_FilesystemView( '/' ); - $session = new Session(); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $path = $util->fileIdToPath( $params['itemSource'] ); + // TODO: Should other kinds of item be encrypted too? + if ( $params['itemType'] === 'file' ) { - $usersSharing = \OCP\Share::getUsersSharingFile( $path, true ); - - $allPaths = $util->getPaths( $path ); - - $failed = array(); - - foreach ( $allPaths as $path ) { - - if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { + $view = new \OC_FilesystemView( '/' ); + $session = new Session(); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + $path = $util->fileIdToPath( $params['itemSource'] ); - $failed[] = $path; + $usersSharing = \OCP\Share::getUsersSharingFile( $path, true ); + + $allPaths = $util->getPaths( $path ); + + $failed = array(); + + foreach ( $allPaths as $path ) { + + if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { + + $failed[] = $path; + + } } - } - - // If no attempts to set keyfiles failed - if ( empty( $failed ) ) { - - return true; + // If no attempts to set keyfiles failed + if ( empty( $failed ) ) { - } else { - - return false; + return true; + + } else { + return false; + + } + } } @@ -213,15 +229,47 @@ class Hooks { * @brief */ public static function postUnshare( $params ) { - -// $view = new \OC_FilesystemView( '/' ); -// $session = new Session(); -// $userId = \OCP\User::getUser(); -// $util = new Util( $view, $userId ); -// $path = $util->fileIdToPath( $params['itemSource'] ); -// -// return Crypt::updateKeyfile( $view, $util, $session, $userId, $path ); + // NOTE: $params has keys: + // [itemType] => file + // [itemSource] => 13 + // [shareType] => 0 + // [shareWith] => test1 + + // TODO: Should other kinds of item be encrypted too? + if ( $params['itemType'] === 'file' ) { + + $view = new \OC_FilesystemView( '/' ); + $session = new Session(); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + $path = $util->fileIdToPath( $params['itemSource'] ); + + $allPaths = $util->getPaths( $path ); + + foreach ( $allPaths as $path ) { + + if ( ! Keymanager::delShareKey( $view, $userId, $path ) ) { + + $failed[] = $path; + + } + + } + + // If no attempts to set keyfiles failed + if ( empty( $failed ) ) { + + return true; + + } else { + + return false; + + } + + } + } /** diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index ec4057d098..22e2ffa500 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -350,6 +350,30 @@ class Keymanager { } + /** + * @brief Delete a single user's shareKey for a single file + */ + public static function delShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + + $trimmed = ltrim( $filePath, '/' ); + $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $trimmed . '.shareKey'; + + // Unlink doesn't tell us if file was deleted (not found returns + // true), so we perform our own test + if ( $view->file_exists( $shareKeyPath ) ) { + + return $view->unlink( $shareKeyPath ); + + } else { + + \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); + + return false; + + } + + } + /** * @brief Make preparations to vars and filesystem for saving a keyfile */ diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 920ff3eb15..02c62e160c 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -580,7 +580,8 @@ class Util { * @brief Expand given path to all sub files & folders * @param Session $session * @param string $path path which needs to be updated - * @return bool outcome of attempt to set keyfiles + * @return array $pathsArray all found file paths + * @note Paths of directories excluded, only *file* paths are returned */ public function getPaths( $path ) { From 14eae441eb77ee53304d8a164deb146bda4020f4 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 27 Feb 2013 15:31:23 +0000 Subject: [PATCH 030/575] Unsharing a single file now works --- apps/files_encryption/hooks/hooks.php | 4 +++- apps/files_encryption/lib/keymanager.php | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index bf16a492e3..fb3545208d 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -245,11 +245,13 @@ class Hooks { $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); + // If path is a folder, get all children $allPaths = $util->getPaths( $path ); foreach ( $allPaths as $path ) { - if ( ! Keymanager::delShareKey( $view, $userId, $path ) ) { + // Unshare each child path + if ( ! Keymanager::delShareKey( $view, $params['shareWith'], $path ) ) { $failed[] = $path; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 22e2ffa500..62bb12bf90 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -355,6 +355,8 @@ class Keymanager { */ public static function delShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + \OC_FileProxy::$enabled = false; + $trimmed = ltrim( $filePath, '/' ); $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $trimmed . '.shareKey'; @@ -362,16 +364,22 @@ class Keymanager { // true), so we perform our own test if ( $view->file_exists( $shareKeyPath ) ) { - return $view->unlink( $shareKeyPath ); + $result = $view->unlink( $shareKeyPath ); } else { + trigger_error("Could not delete shareKey; does not exist: $shareKeyPath"); + \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); - return false; + $result = false; } + \OC_FileProxy::$enabled = false; + + return $result; + } /** From 69bc42f920324ef02ade5dff6bd52f2ddde113a2 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 27 Feb 2013 16:15:03 +0000 Subject: [PATCH 031/575] Deleting encrypted files with missing keyfiles/shareKeys now succeeds --- apps/files_encryption/hooks/hooks.php | 9 ++------- apps/files_encryption/lib/crypt.php | 2 -- apps/files_encryption/lib/proxy.php | 27 +++++++++++++++++++++------ apps/files_encryption/lib/util.php | 3 --- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index fb3545208d..590ba7b1b9 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -279,13 +279,8 @@ class Hooks { */ public static function postUnshareAll( $params ) { -// $view = new \OC_FilesystemView( '/' ); -// $session = new Session(); -// $userId = \OCP\User::getUser(); -// $util = new Util( $view, $userId ); -// $path = $util->fileIdToPath( $params['itemSource'] ); -// -// return Crypt::updateKeyfile( $view, $util, $session, $userId, $path ); + // NOTE: It appears that this is never called for files, so + // we may not need to implement it } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 5a2d99df54..a138f5f3cb 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -390,8 +390,6 @@ class Crypt { $shareKeys = array(); if( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { - -// trigger_error("SEALED = $sealed"); $i = 0; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 29207dce07..92a7049936 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -272,23 +272,38 @@ class Proxy extends \OC_FileProxy { $split = explode( '/', $trimmed ); $sliced = array_slice( $split, 2 ); $relPath = implode( '/', $sliced ); + $filePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $relPath; if ( $view->is_dir( $path ) ) { // Dirs must be handled separately as deleteFileKey // doesn't handle them - $view->unlink( $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $relPath ); + $view->unlink( $filePath ); } else { - // Delete keyfile so it isn't orphaned - $result = Keymanager::deleteFileKey( $view, $userId, $relPath ); - - \OC_FileProxy::$enabled = true; + // Delete keyfile & shareKey so it isn't orphaned + if ( + ! ( + Keymanager::deleteFileKey( $view, $userId, $relPath ) + && Keymanager::delShareKey( $view, $userId, $relPath ) + ) + ) { + + \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$filePath.'"', \OC_Log::ERROR ); + + + } + - return $result; } + + \OC_FileProxy::$enabled = true; + + // If we don't return true then file delete will fail; better + // to leave orphaned keyfiles than to disallow file deletion + return true; } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 02c62e160c..31ce3a413c 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -24,15 +24,12 @@ # Bugs # ---- # Sharing a file to a user without encryption set up will not provide them with access but won't notify the sharer -# Deleting files if keyfile is missing fails # When encryption app is disabled files become unreadable # Timeouts on first login due to encryption of very large files -# MultiKeyEncrypt() may be failing # Missing features # ---------------- -# Unshare a file # Re-use existing keyfiles so they don't need version control # Make sure user knows if large files weren't encrypted # Trashbin support From 953319a2c3d85bf0d5eb86511c7466188b5ca45f Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 27 Feb 2013 18:46:44 +0000 Subject: [PATCH 032/575] Made proxy class reuse existing keyfiles not gen new ones; Added notes about reusing shareKeys --- apps/files_encryption/lib/keymanager.php | 2 - apps/files_encryption/lib/proxy.php | 46 +++++++++++++++------- apps/files_encryption/lib/util.php | 50 ++++++++++++++++-------- 3 files changed, 65 insertions(+), 33 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 62bb12bf90..0c2db2be32 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -368,8 +368,6 @@ class Keymanager { } else { - trigger_error("Could not delete shareKey; does not exist: $shareKeyPath"); - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); $result = false; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 92a7049936..c5b1c8154c 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -93,16 +93,17 @@ class Proxy extends \OC_FileProxy { public function preFile_put_contents( $path, &$data ) { - // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. if ( self::shouldEncrypt( $path ) ) { // Stream put contents should have been converted to fopen if ( !is_resource( $data ) ) { - // TODO check who is the owner of the file in case of shared folders $userId = \OCP\USER::getUser(); $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); + $session = new Session(); + $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + $privateKey = $session->getPrivateKey(); $filePath = $util->stripUserFilesPath( $path ); // Set the filesize for userland, before encrypting $size = strlen( $data ); @@ -110,45 +111,62 @@ class Proxy extends \OC_FileProxy { // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; + // Check if there is an existing key we can reuse + if ( $encKeyfile = Keymanager::getFileKey( $rootView, $fileOwner, $filePath ) ) { + + $keyPreExists = true; + + // Decrypt the keyfile + $plainKey = $util->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); + + } else { + + $keyPreExists = false; + + // Make a new key + $plainKey = Crypt::generateKey(); + + } + // Encrypt data - $encData = Crypt::symmetricEncryptFileContentKeyfile( $data ); + $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); // Check if the keyfile needs to be shared - if ( ($userIds = \OCP\Share::getUsersSharingFile( $filePath, true )) ) { - -// $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + if ( $userIds = \OCP\Share::getUsersSharingFile( $filePath, true ) ) { $publicKeys = Keymanager::getPublicKeys( $rootView, $userIds ); \OC_FileProxy::$enabled = false; // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $encData['key'], $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders + // TODO: openssl_seal generates new shareKeys (envelope keys) each time data is encrypted, but will data still be decryptable using old shareKeys? If so we don't need to replace the old shareKeys here, we only need to set the new ones Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); // Set encrypted keyfile as common varname $encKey = $multiEncrypted['encrypted']; - - } else { $publicKey = Keymanager::getPublicKey( $rootView, $userId ); // Encrypt plain data to a single user - $encKey = Crypt::keyEncrypt( $encData['key'], $publicKey ); + $encKey = Crypt::keyEncrypt( $plainKey, $publicKey ); } - // TODO: Replace userID with ownerId so keyfile is saved centrally + // Save the key if its new + if ( ! $keyPreExists ) { - // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $rootView, $filePath, $userId, $encKey ); + // Save keyfile for newly encrypted file in parallel directory tree + Keymanager::setFileKey( $rootView, $filePath, $fileOwner, $encKey ); + + } // Replace plain content with encrypted content by reference - $data = $encData['encrypted']; + $data = $encData; // Update the file cache with file info \OC\Files\Filesystem::putFileInfo( $path, array( 'encrypted'=>true, 'size' => $size ), '' ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 31ce3a413c..cd223bd702 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -626,25 +626,15 @@ class Util { } /** - * @brief Encrypt keyfile to multiple users - * @param array $users list of users which should be able to access the file - * @param string $filePath path of the file to be shared + * @brief Decrypt a keyfile without knowing how it was encrypted + * @param string $filePath + * @param string $fileOwner + * @param string $privateKey + * @note Checks whether file was encrypted with openssl_seal or + * openssl_encrypt, and decrypts accrdingly */ - public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { - - // Make sure users are capable of sharing - $filteredUids = $this->filterShareReadyUsers( $users ); - - // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids ); // TODO: check this includes the owner's public key + public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { - \OC_FileProxy::$enabled = false; - - // Get the current users's private key for decrypting existing keyfile - $privateKey = $session->getPrivateKey(); - - $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); - // Get the encrypted keyfile // NOTE: the keyfile format depends on how it was encrypted! At // this stage we don't know how it was encrypted @@ -671,6 +661,32 @@ class Util { } + return $plainKeyfile; + + } + + /** + * @brief Encrypt keyfile to multiple users + * @param array $users list of users which should be able to access the file + * @param string $filePath path of the file to be shared + */ + public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { + + // Make sure users are capable of sharing + $filteredUids = $this->filterShareReadyUsers( $users ); + + // Get public keys for each user, ready for generating sharekeys + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids ); // TODO: check this includes the owner's public key + + \OC_FileProxy::$enabled = false; + + // Get the current users's private key for decrypting existing keyfile + $privateKey = $session->getPrivateKey(); + + $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); + + $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); + // Re-enc keyfile to (additional) sharekeys $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); From 0bc7d3bcf833e257fa4b2ae3b74d60bef63218b8 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 27 Feb 2013 18:50:57 +0000 Subject: [PATCH 033/575] Added notes where to reuse old keys instead of generating new ones --- apps/files_encryption/lib/stream.php | 1 + apps/files_encryption/lib/util.php | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index d4b993b4c0..f4bd6f1b6b 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -318,6 +318,7 @@ class Stream { // one), save the newly generated keyfile if ( ! $this->getKey() ) { + // TODO: Reuse the keyfile, it it exists, instead of making a new one $this->keyfile = Crypt::generateKey(); $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index cd223bd702..6a18feea7d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -692,6 +692,7 @@ class Util { // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory + // TODO: Reuse the keyfile, it it exists, instead of making a new one if ( ! Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) || ! Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) From e65e6a12f1270faec377363f02f27ddd7d68b8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 4 Mar 2013 15:33:38 +0100 Subject: [PATCH 034/575] define key size in constructor, otherwise the key size will depend on the servers openssl conf --- apps/files_encryption/lib/crypt.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index a138f5f3cb..2be6e3ae5d 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -56,7 +56,7 @@ class Crypt { */ public static function createKeypair() { - $res = openssl_pkey_new(); + $res = openssl_pkey_new(array('private_key_bits' => 4096)); // Get private key openssl_pkey_export( $res, $privateKey ); @@ -450,7 +450,7 @@ class Crypt { * @returns encrypted file */ public static function keyEncrypt( $plainContent, $publicKey ) { - + openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); return $encryptedContent; From f2b86d0227d080dd4395efaf5fb086b024af0c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 4 Mar 2013 17:58:56 +0100 Subject: [PATCH 035/575] make sure that $this->userId is initialized before using it as a parameter --- apps/files_encryption/lib/stream.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index f4bd6f1b6b..6074638ab3 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -68,6 +68,8 @@ class Stream { private $rootView; // a fsview object set to '/' public function stream_open( $path, $mode, $options, &$opened_path ) { + + $this->userId = \OCP\User::getUser(); // Get access to filesystem via filesystemview object if ( !self::$view ) { @@ -82,9 +84,7 @@ class Stream { $this->rootView = new \OC_FilesystemView( $this->userId . '/' ); } - - $this->userId = \OCP\User::getUser(); - + // Get the bare file path $path = str_replace( 'crypt://', '', $path ); From c1f1fbda08b464b286e309283ed81d16f30a5ca6 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Sat, 9 Mar 2013 19:18:34 +0100 Subject: [PATCH 036/575] Fixed stream wrapper bugs Switched encryptAll() to use stream-based instead of file-at-a-time encryption Development snapshot --- apps/files_encryption/lib/crypt.php | 4 +- apps/files_encryption/lib/proxy.php | 10 ++-- apps/files_encryption/lib/stream.php | 60 +++++++++------------ apps/files_encryption/lib/util.php | 78 +++++++++++++++++++++++----- apps/files_encryption/test/crypt.php | 6 +-- 5 files changed, 99 insertions(+), 59 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 2be6e3ae5d..f92930c2cb 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -114,7 +114,7 @@ class Crypt { * @return true / false * @note see also OCA\Encryption\Util->isEncryptedPath() */ - public static function isCatfile( $content ) { + public static function isCatfileContent( $content ) { if ( !$content ) { @@ -179,7 +179,7 @@ class Crypt { if ( isset( $metadata['encrypted'] ) and $metadata['encrypted'] === true - and ! self::isCatfile( $data ) + and ! self::isCatfileContent( $data ) ) { return true; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index c5b1c8154c..2a738c80e3 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -74,7 +74,7 @@ class Proxy extends \OC_FileProxy { } - if ( Crypt::isCatfile( $path ) ) { + if ( Crypt::isCatfileContent( $path ) ) { return true; @@ -209,7 +209,7 @@ class Proxy extends \OC_FileProxy { // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfile( $data ) + && Crypt::isCatfileContent( $data ) ) { // TODO use get owner to find correct location of key files for shared files @@ -439,7 +439,7 @@ class Proxy extends \OC_FileProxy { public function postGetMimeType( $path, $mime ) { - if ( Crypt::isCatfile( $path ) ) { + if ( Crypt::isCatfileContent( $path ) ) { $mime = \OCP\Files::getMimeType( 'crypt://' . $path, 'w' ); @@ -451,7 +451,7 @@ class Proxy extends \OC_FileProxy { public function postStat( $path, $data ) { - if ( Crypt::isCatfile( $path ) ) { + if ( Crypt::isCatfileContent( $path ) ) { $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); @@ -464,7 +464,7 @@ class Proxy extends \OC_FileProxy { public function postFileSize( $path, $size ) { - if ( Crypt::isCatfile( $path ) ) { + if ( Crypt::isCatfileContent( $path ) ) { $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 6074638ab3..0b2e6ab3e6 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -68,42 +68,33 @@ class Stream { private $rootView; // a fsview object set to '/' public function stream_open( $path, $mode, $options, &$opened_path ) { - + $this->userId = \OCP\User::getUser(); - // Get access to filesystem via filesystemview object - if ( !self::$view ) { + if ( ! isset( $this->rootView ) ) { - self::$view = new \OC_FilesystemView( $this->userId . '/' ); - - } - - // Set rootview object if necessary - if ( ! $this->rootView ) { - - $this->rootView = new \OC_FilesystemView( $this->userId . '/' ); + $this->rootView = new \OC_FilesystemView( '/' ); } - // Get the bare file path - $path = str_replace( 'crypt://', '', $path ); + // Strip identifier text from path + $this->rawPath = str_replace( 'crypt://', '', $path ); - $this->rawPath = $path; - - $this->path_f = $this->userId . '/files/' . $path; + // Set file path relative to user files dir + $this->relPath = $this->userId . '/files/' . $this->rawPath; if ( - dirname( $path ) == 'streams' - and isset( self::$sourceStreams[basename( $path )] ) + dirname( $this->rawPath ) == 'streams' + and isset( self::$sourceStreams[basename( $this->rawPath )] ) ) { // Is this just for unit testing purposes? - $this->handle = self::$sourceStreams[basename( $path )]['stream']; + $this->handle = self::$sourceStreams[basename( $this->rawPath )]['stream']; - $this->path = self::$sourceStreams[basename( $path )]['path']; + $this->path = self::$sourceStreams[basename( $this->rawPath )]['path']; - $this->size = self::$sourceStreams[basename( $path )]['size']; + $this->size = self::$sourceStreams[basename( $this->rawPath )]['size']; } else { @@ -114,41 +105,38 @@ class Stream { or $mode == 'wb+' ) { + // We're writing a new file so start write counter with 0 bytes $this->size = 0; } else { + $this->size = $this->rootView->filesize( $this->relPath, $mode ); - - $this->size = self::$view->filesize( $this->path_f, $mode ); - - //$this->size = filesize( $path ); + //$this->size = filesize( $this->rawPath ); } // Disable fileproxies so we can open the source file without recursive encryption \OC_FileProxy::$enabled = false; - //$this->handle = fopen( $path, $mode ); + //$this->handle = fopen( $this->rawPath, $mode ); - $this->handle = self::$view->fopen( $this->path_f, $mode ); + $this->handle = $this->rootView->fopen( $this->relPath, $mode ); \OC_FileProxy::$enabled = true; - if ( !is_resource( $this->handle ) ) { + if ( ! is_resource( $this->handle ) ) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open '.$path, \OCP\Util::ERROR ); + \OCP\Util::writeLog( 'files_encryption', 'failed to open file "'.$this->rootView . '"', \OCP\Util::ERROR ); + } else { + + $this->meta = stream_get_meta_data( $this->handle ); + } } - if ( is_resource( $this->handle ) ) { - - $this->meta = stream_get_meta_data( $this->handle ); - - } - return is_resource( $this->handle ); } @@ -238,7 +226,7 @@ class Stream { // If a keyfile already exists for a file named identically to // file to be written - if ( self::$view->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->rawPath . '.key' ) ) { + if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->rawPath . '.key' ) ) { // TODO: add error handling for when file exists but no // keyfile diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 6a18feea7d..e8b5be2de1 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -24,13 +24,12 @@ # Bugs # ---- # Sharing a file to a user without encryption set up will not provide them with access but won't notify the sharer -# When encryption app is disabled files become unreadable # Timeouts on first login due to encryption of very large files # Missing features # ---------------- -# Re-use existing keyfiles so they don't need version control +# Re-use existing keyfiles so they don't need version control (part implemented, stream{} and util{} remain) # Make sure user knows if large files weren't encrypted # Trashbin support @@ -280,14 +279,14 @@ class Util { // will eat server resources :( if ( Keymanager::getFileKey( $this->view, $this->userId, $file ) - && Crypt::isCatfile( $data ) + && Crypt::isCatfileContent( $data ) ) { $found['encrypted'][] = array( 'name' => $file, 'path' => $filePath ); // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->view->file_get_contents( $filePath ), $relPath ) ) { + } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); @@ -324,6 +323,49 @@ class Util { } + /** + * @brief Fetch the last lines of a file efficiently + * @note Safe to use on large files; does not read entire file to memory + * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php + */ + public function tail( $filename, $numLines ) { + + \OC_FileProxy::$enabled = false; + + $text = ''; + $pos = -1; + $handle = $this->view->fopen( $filename, 'r' ); + + while ( $numLines > 0 ) { + + --$pos; + + if( fseek( $handle, $pos, SEEK_END ) !== 0 ) { + + rewind( $handle ); + $numLines = 0; + + } elseif ( fgetc( $handle ) === "\n" ) { + + --$numLines; + + } + + $block_size = ( -$pos ) % 8192; + if ( $block_size === 0 || $numLines === 0 ) { + + $text = fread( $handle, ( $block_size === 0 ? 8192 : $block_size ) ) . $text; + + } + } + + fclose( $handle ); + + \OC_FileProxy::$enabled = true; + + return $text; + } + /** * @brief Check if a given path identifies an encrypted file * @return true / false @@ -338,7 +380,7 @@ class Util { \OC_FileProxy::$enabled = true; - return Crypt::isCatfile( $data ); + return Crypt::isCatfileContent( $data ); } @@ -403,22 +445,32 @@ class Util { // Encrypt unencrypted files foreach ( $found['plain'] as $plainFile ) { + + // Open plain file handle - // Fetch data from file - $plainData = $this->view->file_get_contents( $plainFile['path'] ); - // Encrypt data, generate catfile - $encrypted = Crypt::keyEncryptKeyfile( $plainData, $publicKey ); + // Open enc file handle + + + // Read plain file in chunks + $relPath = $this->stripUserFilesPath( $plainFile['path'] ); - // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encrypted['key'] ); + // Open handle with for binary reading + $plainHandle = $this->view->fopen( $plainFile['path'], 'rb' ); + // Open handle with for binary writing + $encHandle = fopen( 'crypt://' . 'var/www/oc6/data/' . $plainFile['path'] . '.tmp', 'ab' ); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents( $plainFile['path'], $encrypted['data'] ); + //$this->view->file_put_contents( $plainFile['path'], $encrypted['data'] ); + $size = stream_copy_to_stream( $plainHandle, $encHandle ); - $size = strlen( $encrypted['data'] ); + // Fetch the key that has just been set/updated by the stream + $encKey = Keymanager::getFileKey( $relPath ); + + // Save keyfile + Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encKey ); // Add the file to the cache \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted'=>true, 'size' => $size ), '' ); diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/test/crypt.php index 48ad2ee007..b02e63b2ff 100755 --- a/apps/files_encryption/test/crypt.php +++ b/apps/files_encryption/test/crypt.php @@ -416,13 +416,13 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { function testIsEncryptedContent() { - $this->assertFalse( Encryption\Crypt::isCatfile( $this->dataUrl ) ); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); - $this->assertFalse( Encryption\Crypt::isCatfile( $this->legacyEncryptedData ) ); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); - $this->assertTrue( Encryption\Crypt::isCatfile( $keyfileContent ) ); + $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); } From c89fd49870e3bdd66b73ab6d8d64895e870de260 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 19 Mar 2013 19:53:15 +0100 Subject: [PATCH 037/575] Improved folder creation code Created stub method for checking user pwd recovery preference from db Added pwd recovery column to db Added comments --- apps/files_encryption/appinfo/database.xml | 8 +++ apps/files_encryption/hooks/hooks.php | 6 +- apps/files_encryption/lib/util.php | 68 ++++++++++------------ 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/apps/files_encryption/appinfo/database.xml b/apps/files_encryption/appinfo/database.xml index d294c35d63..b144b6cb2a 100644 --- a/apps/files_encryption/appinfo/database.xml +++ b/apps/files_encryption/appinfo/database.xml @@ -18,6 +18,14 @@ text true 64 + What client-side / server-side configuration is used + + + recovery + boolean + true + 0 + Whether encryption key recovery is enabled diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 590ba7b1b9..8db7539706 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -29,9 +29,6 @@ namespace OCA\Encryption; class Hooks { - // TODO: use passphrase for encrypting private key that is separate to - // the login password - /** * @brief Startup encryption backend upon user login * @note This method should never be called for users using client side encryption @@ -196,12 +193,15 @@ class Hooks { $usersSharing = \OCP\Share::getUsersSharingFile( $path, true ); + // Recursively expand path to include subfiles $allPaths = $util->getPaths( $path ); $failed = array(); + // Loop through all subfiles foreach ( $allPaths as $path ) { + // Attempt to set shareKey if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { $failed[] = $path; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index e8b5be2de1..a80da73a4b 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -153,45 +153,24 @@ class Util { */ public function setupServerSide( $passphrase = null ) { - // Create user dir - if( !$this->view->file_exists( $this->userDir ) ) { + // Set directories to check / create + $setUpDirs = array( + $this->userDir + , $this->userFilesDir + , $this->publicKeyDir + , $this->encryptionDir + , $this->keyfilesPath + , $this->shareKeysPath + ); - $this->view->mkdir( $this->userDir ); + // Check / create all necessary dirs + foreach ( $setUpDirs as $dirPath ) { - } - - // Create user files dir - if( !$this->view->file_exists( $this->userFilesDir ) ) { - - $this->view->mkdir( $this->userFilesDir ); - - } - - // Create shared public key directory - if( !$this->view->file_exists( $this->publicKeyDir ) ) { - - $this->view->mkdir( $this->publicKeyDir ); - - } - - // Create encryption app directory - if( !$this->view->file_exists( $this->encryptionDir ) ) { - - $this->view->mkdir( $this->encryptionDir ); - - } - - // Create mirrored keyfile directory - if( !$this->view->file_exists( $this->keyfilesPath ) ) { - - $this->view->mkdir( $this->keyfilesPath ); - - } - - // Create mirrored share env keys directory - if( !$this->view->file_exists( $this->shareKeysPath ) ) { - - $this->view->mkdir( $this->shareKeysPath ); + if( !$this->view->file_exists( $dirPath ) ) { + + $this->view->mkdir( $dirPath ); + + } } @@ -223,6 +202,20 @@ class Util { } + public function recoveryEnabled( ) { + + $sql = 'SELECT * FROM `*PREFIX*myusers` WHERE id = ?'; + $args = array(1); + + $query = \OCP\DB::prepare($sql); + $result = $query->execute($args); + + while($row = $result->fetchRow()) { + $userName = $row['username']; + } + + } + /** * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search @@ -737,6 +730,7 @@ class Util { $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); + // Decrypt keyfile $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); // Re-enc keyfile to (additional) sharekeys From fd4e59b748d2d22e4aea4a7583139b5a4e4b65d7 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 20 Mar 2013 19:26:59 +0100 Subject: [PATCH 038/575] Added method for setting user keyfile recovery preference Fixed method for checking if keyfile recovery is enabled for a user Added unit test for above 2 methods Made proxy{} always use sharing Made proxy{} work regardless of sharing API enabled or not Implemented proxy-based sharing to admin if user keyfile recovery is enabled --- apps/files_encryption/hooks/hooks.php | 2 - apps/files_encryption/lib/keymanager.php | 1 + apps/files_encryption/lib/proxy.php | 58 ++++++++++++------ apps/files_encryption/lib/util.php | 78 +++++++++++++++++++++--- apps/files_encryption/test/util.php | 20 ++++++ 5 files changed, 127 insertions(+), 32 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 8db7539706..82e650c417 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -40,7 +40,6 @@ class Hooks { \OC\Files\Filesystem::init( $params['uid'] . '/' . 'files' . '/' ); $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $params['uid'] ); // Check files_encryption infrastructure is ready for action @@ -61,7 +60,6 @@ class Hooks { $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); $session = new Session(); - $session->setPrivateKey( $privateKey, $params['uid'] ); $view1 = new \OC_FilesystemView( '/' . $params['uid'] ); diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 0c2db2be32..6837dcf67b 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -57,6 +57,7 @@ class Keymanager { return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); \OC_FileProxy::$enabled = true; + } /** diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 2a738c80e3..f469422e22 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -131,32 +131,50 @@ class Proxy extends \OC_FileProxy { // Encrypt data $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); - // Check if the keyfile needs to be shared - if ( $userIds = \OCP\Share::getUsersSharingFile( $filePath, true ) ) { - - $publicKeys = Keymanager::getPublicKeys( $rootView, $userIds ); - - \OC_FileProxy::$enabled = false; - - // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); - - // Save sharekeys to user folders - // TODO: openssl_seal generates new shareKeys (envelope keys) each time data is encrypted, but will data still be decryptable using old shareKeys? If so we don't need to replace the old shareKeys here, we only need to set the new ones - Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); - - // Set encrypted keyfile as common varname - $encKey = $multiEncrypted['encrypted']; + // Check if key recovery is enabled + $recoveryEnabled = $util->recoveryEnabled(); - } else { + // Make sure that a share key is generated for the owner too + $userIds = array( $userId ); - $publicKey = Keymanager::getPublicKey( $rootView, $userId ); + if ( \OCP\Share::isEnabled() ) { - // Encrypt plain data to a single user - $encKey = Crypt::keyEncrypt( $plainKey, $publicKey ); + // Find out who, if anyone, is sharing the file + $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true ); + + $userIds = array_merge( $userIds, $shareUids ); } + // If recovery is enabled, add the + // Admin UID to list of users to share to + if ( $recoveryEnabled ) { + + // FIXME: Create a separate admin user purely for recovery, and create method in util for fetching this id from DB? + $adminUid = 'recoveryAdmin'; + + $userIds[] = $adminUid; + + } + + // Remove duplicate UIDs + $uniqueUserIds = array_unique ( $userIds ); + + // Fetch public keys for all users who will share the file + $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); + + \OC_FileProxy::$enabled = false; + + // Encrypt plain keyfile to multiple sharefiles + $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); + + // Save sharekeys to user folders + // TODO: openssl_seal generates new shareKeys (envelope keys) each time data is encrypted, but will data still be decryptable using old shareKeys? If so we don't need to replace the old shareKeys here, we only need to set the new ones + Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); + + // Set encrypted keyfile as common varname + $encKey = $multiEncrypted['data']; + // Save the key if its new if ( ! $keyPreExists ) { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index a80da73a4b..b86e7f421b 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -31,7 +31,12 @@ # ---------------- # Re-use existing keyfiles so they don't need version control (part implemented, stream{} and util{} remain) # Make sure user knows if large files weren't encrypted -# Trashbin support + + +# Test +# ---- +# Test that writing files works when recovery is enabled, and sharing API is disabled +# Test trashbin support // Old Todo: @@ -202,20 +207,73 @@ class Util { } - public function recoveryEnabled( ) { + /** + * @brief Check whether pwd recovery is enabled for a given user + * @return bool + * @note If records are not being returned, check for a hidden space + * at the start of the uid in db + */ + public function recoveryEnabled() { - $sql = 'SELECT * FROM `*PREFIX*myusers` WHERE id = ?'; - $args = array(1); + $sql = 'SELECT + recovery + FROM + `*PREFIX*encryption` + WHERE + uid = ?'; + + $args = array( $this->userId ); - $query = \OCP\DB::prepare($sql); - $result = $query->execute($args); - - while($row = $result->fetchRow()) { - $userName = $row['username']; - } + $query = \OCP\DB::prepare( $sql ); + + $result = $query->execute( $args ); + + // Set default in case no records found + $recoveryEnabled = 0; + + while( $row = $result->fetchRow() ) { + + $recoveryEnabled = $row['recovery']; + + } + + return $recoveryEnabled; } + /** + * @brief Enable / disable pwd recovery for a given user + * @param bool $enabled Whether to enable or disable recovery + * @return bool + */ + public function setRecovery( $enabled ) { + + $sql = 'UPDATE + *PREFIX*encryption + SET + recovery = ? + WHERE + uid = ?'; + + // Ensure value is an integer + $enabled = intval( $enabled ); + + $args = array( $enabled, $this->userId ); + + $query = \OCP\DB::prepare( $sql ); + + if ( $query->execute( $args ) ) { + + return true; + + } else { + + return false; + + } + + } + /** * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search diff --git a/apps/files_encryption/test/util.php b/apps/files_encryption/test/util.php index 275e60f4bd..e2767a2ec3 100755 --- a/apps/files_encryption/test/util.php +++ b/apps/files_encryption/test/util.php @@ -164,6 +164,26 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { # then false will be returned. Use strict ordering? } + + function testRecoveryEnabled() { + + $util = new Encryption\Util( $this->view, $this->userId ); + + // Record the value so we can return it to it's original state later + $enabled = $util->recoveryEnabled(); + + $this->assertTrue( $util->setRecovery( 1 ) ); + + $this->assertEquals( 1, $util->recoveryEnabled() ); + + $this->assertTrue( $util->setRecovery( 0 ) ); + + $this->assertEquals( 0, $util->recoveryEnabled() ); + + // Return the setting to it's previous state + $this->assertTrue( $util->setRecovery( $enabled ) ); + + } // /** // * @brief test decryption using legacy blowfish method From f10be4ea17b08059103627fb97716672bdff4fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 11:58:54 +0100 Subject: [PATCH 039/575] new file structure for share keys; sub-folder need to be generated each by one (we don't have a recursive mkdir) --- apps/files_encryption/lib/keymanager.php | 41 ++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 6837dcf67b..6ef256553d 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -28,6 +28,22 @@ namespace OCA\Encryption; * @note Where a method requires a view object, it's root must be '/' */ class Keymanager { + + /** + * @brief get uid of the owners of the file and the path to the file + * @param $filename + * @return array + */ + public static function getUidAndFilename($filename) { + $uid = \OC\Files\Filesystem::getOwner($filename); + \OC\Files\Filesystem::initMountPoints($uid); + if ( $uid != \OCP\User::getUser() ) { + $info = \OC\Files\Filesystem::getFileInfo($filename); + $ownerView = new \OC\Files\View('/'.$uid.'/files'); + $filename = $ownerView->getPath($info['fileid']); + } + return array($uid, $filename); + } /** * @brief retrieve the ENCRYPTED private key from a user @@ -264,15 +280,17 @@ class Keymanager { * asymmetrically encrypt the keyfile before passing it to this method */ public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + + list($owner, $filename) = self::getUidAndFilename($path); + + $basePath = '/' . $owner . '/files_encryption/share-keys'; - $basePath = '/' . $userId . '/files_encryption/share-keys'; + $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); - $shareKeyPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - - $writePath = $basePath . '/' . $shareKeyPath . '.shareKey'; + $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; \OC_FileProxy::$enabled = false; - + $result = $view->file_put_contents( $writePath, $shareKey ); if ( @@ -295,7 +313,7 @@ class Keymanager { * @return bool */ public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { - + // $shareKeys must be an array with the following format: // [userId] => [encrypted key] @@ -395,9 +413,14 @@ class Keymanager { isset( $path_parts['dirname'] ) && ! $view->file_exists( $basePath . '/' . $path_parts['dirname'] ) ) { - - $view->mkdir( $basePath . '/' . $path_parts['dirname'] ); - + $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']); + $dir = ''; + foreach ($sub_dirs as $sub_dir) { + $dir .= '/' . $sub_dir; + if (!$view->is_dir($dir)) { + $view->mkdir($dir); + } + } } return $targetPath; From 5995b6996b113145da65fd0b44cdb498ae6e56a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 12:23:28 +0100 Subject: [PATCH 040/575] always call stripUserFilesPath(), we need to keep the Shared/ to find the correct owner of the file later --- apps/files_encryption/lib/proxy.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index f469422e22..4dc2bfd749 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -202,22 +202,14 @@ class Proxy extends \OC_FileProxy { * @param string $data Data that has been read from file */ public function postFile_get_contents( $path, $data ) { - + // FIXME: $path for shared files is just /uid/files/Shared/filepath $userId = \OCP\USER::getUser(); $view = new \OC_FilesystemView( '/' ); $util = new Util( $view, $userId ); - if ( $util->isSharedPath( $path ) ) { - - $relPath = $util->stripSharedFilePath( $path ); - - } else { - - $relPath = $util->stripUserFilesPath( $path ); - - } + $relPath = $util->stripUserFilesPath( $path ); // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. From 890f0142a25c4f4a2e66738360e4c70d86147a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 12:24:04 +0100 Subject: [PATCH 041/575] get shared keys from new location --- apps/files_encryption/lib/keymanager.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 6ef256553d..19c9de3ece 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -36,6 +36,7 @@ class Keymanager { */ public static function getUidAndFilename($filename) { $uid = \OC\Files\Filesystem::getOwner($filename); + \OC\Files\Filesystem::initMountPoints($uid); if ( $uid != \OCP\User::getUser() ) { $info = \OC\Files\Filesystem::getFileInfo($filename); @@ -348,11 +349,9 @@ class Keymanager { public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { \OC_FileProxy::$enabled = false; - - $filePath_f = ltrim( $filePath, '/' ); - - $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $filePath_f . '.shareKey'; - + list($owner, $filename) = self::getUidAndFilename($filePath); + + $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'; if ( $view->file_exists( $shareKeyPath ) ) { $result = $view->file_get_contents( $shareKeyPath ); From a65d741a3fda0a35326e0dee7627a69c00e3d0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 12:39:55 +0100 Subject: [PATCH 042/575] move getUidAndFilename() tu util.php --- apps/files_encryption/lib/keymanager.php | 26 +++++++----------------- apps/files_encryption/lib/util.php | 17 ++++++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 19c9de3ece..23c061b8e6 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -28,23 +28,6 @@ namespace OCA\Encryption; * @note Where a method requires a view object, it's root must be '/' */ class Keymanager { - - /** - * @brief get uid of the owners of the file and the path to the file - * @param $filename - * @return array - */ - public static function getUidAndFilename($filename) { - $uid = \OC\Files\Filesystem::getOwner($filename); - - \OC\Files\Filesystem::initMountPoints($uid); - if ( $uid != \OCP\User::getUser() ) { - $info = \OC\Files\Filesystem::getFileInfo($filename); - $ownerView = new \OC\Files\View('/'.$uid.'/files'); - $filename = $ownerView->getPath($info['fileid']); - } - return array($uid, $filename); - } /** * @brief retrieve the ENCRYPTED private key from a user @@ -282,7 +265,9 @@ class Keymanager { */ public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - list($owner, $filename) = self::getUidAndFilename($path); + $util = new Util( $view, $userId ); + + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/share-keys'; @@ -349,7 +334,10 @@ class Keymanager { public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { \OC_FileProxy::$enabled = false; - list($owner, $filename) = self::getUidAndFilename($filePath); + + $util = new Util( $view, $userId ); + + list($owner, $filename) = $util->getUidAndFilename($filePath); $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'; if ( $view->file_exists( $shareKeyPath ) ) { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index b86e7f421b..5276dae99a 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -815,4 +815,21 @@ class Util { return true; } + /** + * @brief get uid of the owners of the file and the path to the file + * @param $filename + * @return array + */ + public function getUidAndFilename($filename) { + $uid = \OC\Files\Filesystem::getOwner($filename); + + \OC\Files\Filesystem::initMountPoints($uid); + if ( $uid != \OCP\User::getUser() ) { + $info = \OC\Files\Filesystem::getFileInfo($filename); + $ownerView = new \OC\Files\View('/'.$uid.'/files'); + $filename = $ownerView->getPath($info['fileid']); + } + return array($uid, $filename); + } + } From 5f233ee8140476d02e1c20325b83362c0d54d237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 12:40:31 +0100 Subject: [PATCH 043/575] get the correct paths and owner to access shared files --- apps/files_encryption/lib/proxy.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 4dc2bfd749..7c981d4fc4 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -227,11 +227,10 @@ class Proxy extends \OC_FileProxy { $privateKey = $session->getPrivateKey( $userId ); // Get the file owner so we can retrieve its keyfile - $fileOwner = \OC\Files\Filesystem::getOwner( $relPath ); //NOTE: This might be false! make sure the path passed to it is right - $fileOwner = 'admin'; // FIXME: Manually set the correct UID for now - + list($fileOwner, $ownerPath) = $util->getUidAndFilename($relPath); + // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $relPath ); + $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $ownerPath ); // Attempt to fetch the user's shareKey $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); From b1d620300e0671d5a7f24e994b62be310688d13b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 14:22:18 +0100 Subject: [PATCH 044/575] delete share keys if file gets deleted --- apps/files_encryption/lib/keymanager.php | 27 +++++++++++++++--------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 23c061b8e6..9022ed2cac 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -362,16 +362,23 @@ class Keymanager { public static function delShareKey( \OC_FilesystemView $view, $userId, $filePath ) { \OC_FileProxy::$enabled = false; - - $trimmed = ltrim( $filePath, '/' ); - $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $trimmed . '.shareKey'; - - // Unlink doesn't tell us if file was deleted (not found returns - // true), so we perform our own test - if ( $view->file_exists( $shareKeyPath ) ) { - - $result = $view->unlink( $shareKeyPath ); - + + $util = new Util( $view, $userId ); + + list($owner, $filename) = $util->getUidAndFilename($filePath); + + $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename; + + $absPath = $view->getLocalFile($shareKeyPath); + + $matches = glob(preg_quote($absPath).'.*.shareKey' ); + + if ( $matches ) { + + foreach ( $matches as $ma ) { + unlink($ma); + } + } else { \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); From 6beeb2466f08dbed95f69761668efa6d27fc4d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 16:17:26 +0100 Subject: [PATCH 045/575] also delete share keys if a different user than the owner deletes a shared file --- apps/files_encryption/lib/keymanager.php | 6 +----- apps/files_encryption/lib/proxy.php | 17 +++++++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 9022ed2cac..49c6ffa8a5 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -363,11 +363,7 @@ class Keymanager { \OC_FileProxy::$enabled = false; - $util = new Util( $view, $userId ); - - list($owner, $filename) = $util->getUidAndFilename($filePath); - - $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename; + $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $filePath; $absPath = $view->getLocalFile($shareKeyPath); diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7c981d4fc4..7c23336b3d 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -291,17 +291,22 @@ class Proxy extends \OC_FileProxy { \OC_FileProxy::$enabled = false; $view = new \OC_FilesystemView( '/' ); - + $userId = \OCP\USER::getUser(); - + + $util = new Util( $view, $userId ); + // Format path to be relative to user files dir $trimmed = ltrim( $path, '/' ); $split = explode( '/', $trimmed ); $sliced = array_slice( $split, 2 ); $relPath = implode( '/', $sliced ); - $filePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $relPath; + + list($owner, $ownerPath) = $util->getUidAndFilename($relPath); + + $filePath = $owner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath; - if ( $view->is_dir( $path ) ) { + if ( $view->is_dir( $ownerPath ) ) { // Dirs must be handled separately as deleteFileKey // doesn't handle them @@ -312,8 +317,8 @@ class Proxy extends \OC_FileProxy { // Delete keyfile & shareKey so it isn't orphaned if ( ! ( - Keymanager::deleteFileKey( $view, $userId, $relPath ) - && Keymanager::delShareKey( $view, $userId, $relPath ) + Keymanager::deleteFileKey( $view, $owner, $ownerPath ) + && Keymanager::delShareKey( $view, $owner, $ownerPath ) ) ) { From 73157133e825ff3d66b83091e2b4ebeec0b83e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 16:22:26 +0100 Subject: [PATCH 046/575] reuse function provided in util.php --- apps/files_encryption/lib/proxy.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7c23336b3d..a904294659 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -297,10 +297,7 @@ class Proxy extends \OC_FileProxy { $util = new Util( $view, $userId ); // Format path to be relative to user files dir - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 2 ); - $relPath = implode( '/', $sliced ); + $relPath = $util->stripUserFilesPath($path); list($owner, $ownerPath) = $util->getUidAndFilename($relPath); From e717f7150e703821fc98a30ff80b953b737785e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 26 Mar 2013 16:52:58 +0100 Subject: [PATCH 047/575] check for dir in deleteFileKey() and delShareKey(), to always handle all share keys and file keys on delete --- apps/files_encryption/lib/keymanager.php | 56 ++++++++++++++---------- apps/files_encryption/lib/proxy.php | 31 ++++--------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 49c6ffa8a5..cac5ab262d 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -178,21 +178,27 @@ class Keymanager { public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { $trimmed = ltrim( $path, '/' ); - $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed . '.key'; - - // Unlink doesn't tell us if file was deleted (not found returns - // true), so we perform our own test - if ( $view->file_exists( $keyPath ) ) { - - return $view->unlink( $keyPath ); - - } else { + $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; + + $result = false; + + if ( $view->is_dir($keyPath) ) { + + $result = $view->unlink($keyPath); + + } else if ( $view->file_exists( $keyPath.'.key' ) ) { + + $result = $view->unlink( $keyPath.'.key' ); + + } + + if ( !$result ) { \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); - - return false; - + } + + return $result; } @@ -365,22 +371,28 @@ class Keymanager { $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $filePath; - $absPath = $view->getLocalFile($shareKeyPath); + $result = false; - $matches = glob(preg_quote($absPath).'.*.shareKey' ); + if ( $view->is_dir($shareKeyPath) ) { + $result = $view->unlink($shareKeyPath); + } else { + $absPath = $view->getLocalFile($shareKeyPath); - if ( $matches ) { + $matches = glob(preg_quote($absPath).'.*.shareKey' ); + + if ( $matches ) { + + foreach ( $matches as $ma ) { + unlink($ma); + } - foreach ( $matches as $ma ) { - unlink($ma); } - } else { - + $result = true; + } + + if ( !result ) { \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); - - $result = false; - } \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index a904294659..a1eb76666d 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -302,30 +302,17 @@ class Proxy extends \OC_FileProxy { list($owner, $ownerPath) = $util->getUidAndFilename($relPath); $filePath = $owner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath; + + // Delete keyfile & shareKey so it isn't orphaned + if ( + ! ( + Keymanager::deleteFileKey( $view, $owner, $ownerPath ) + && Keymanager::delShareKey( $view, $owner, $ownerPath ) + ) + ) { - if ( $view->is_dir( $ownerPath ) ) { - - // Dirs must be handled separately as deleteFileKey - // doesn't handle them - $view->unlink( $filePath ); - - } else { - - // Delete keyfile & shareKey so it isn't orphaned - if ( - ! ( - Keymanager::deleteFileKey( $view, $owner, $ownerPath ) - && Keymanager::delShareKey( $view, $owner, $ownerPath ) - ) - ) { - - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$filePath.'"', \OC_Log::ERROR ); + \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$filePath.'"', \OC_Log::ERROR ); - - } - - - } \OC_FileProxy::$enabled = true; From 9ecfd07f23e7fe2924bee6103792c00c6ec3cb0a Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Thu, 28 Mar 2013 18:29:18 +0100 Subject: [PATCH 048/575] Added ajax scripts for setting pwd recovery preferences --- apps/files_encryption/ajax/adminrecovery.php | 72 ++++++++++++++++++++ apps/files_encryption/ajax/userrecovery.php | 42 ++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 apps/files_encryption/ajax/adminrecovery.php create mode 100644 apps/files_encryption/ajax/userrecovery.php diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php new file mode 100644 index 0000000000..f22114f851 --- /dev/null +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -0,0 +1,72 @@ +setValue( $app, $key, $value ) + + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to handle admin settings for encrypted key recovery + */ + +use OCA\Encryption; + +\OCP\JSON::checkAdminUser(); +\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); + +if ( + isset( $_POST['adminEnableRecovery'] ) + && $_POST['adminEnableRecovery'] == 1 + && isset( $_POST['recoveryPassword'] ) + && ! empty ( $_POST['recoveryPassword'] ) +) { + + // TODO: Let the admin set this themselves + $recoveryAdminUid = 'recoveryAdmin'; + + // If desired recoveryAdmin UID is already in use + if ( ! \OC_User::userExists( $recoveryAdminUid ) ) { + + // Create new recoveryAdmin user + \OC_User::createUser( $recoveryAdminUid, $_POST['recoveryPassword'] ); + + $doSetup = true; + + } else { + + // Get list of admin users + $admins = OC_Group::usersInGroup( 'admin' ); + + // If the existing recoveryAdmin UID is an admin + if ( in_array( $recoveryAdminUid, $admins ) ) { + + // The desired recoveryAdmi UID pre-exists and can be used + $doSetup = true; + + // If the recoveryAdmin UID exists but doesn't have admin rights + } else { + + \OCP\JSON::error(); + + } + + } + + // If recoveryAdmin has passed other checks + if ( $doSetup ) { + + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $recoveryAdminUid ); + + // Ensure recoveryAdmin is ready for encryption (has usable keypair etc.) + $util->setupServerSide( $_POST['recoveryPassword'] ); + + // Store the UID in the DB + OC_Appconfig::setValue( 'encryption', 'recoveryAdminUid', $recoveryAdminUid ); + + \OCP\JSON::success(); + + } + +} \ No newline at end of file diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php new file mode 100644 index 0000000000..56c18f7ad5 --- /dev/null +++ b/apps/files_encryption/ajax/userrecovery.php @@ -0,0 +1,42 @@ +setValue( $app, $key, $value ) + + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to handle admin settings for encrypted key recovery + */ + +use OCA\Encryption; + +\OCP\JSON::checkLoggedIn(); +\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); + +if ( + isset( $_POST['userEnableRecovery'] ) +) { + + // Ensure preference is an integer + $recoveryEnabled = intval( $_POST['userEnableRecovery'] ); + + $userId = \OCP\USER::getUser(); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); + + // Save recovery preference to DB + $result = $util->setRecovery( $recoveryEnabled ); + + if ( $result ) { + + \OCP\JSON::success(); + + } else { + + \OCP\JSON::error(); + + } + +} \ No newline at end of file From 14451bdaf07f88c6ac46092c74b987a360b04547 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Fri, 29 Mar 2013 21:11:29 +0100 Subject: [PATCH 049/575] Development snapshot; Fixed errors from Hooks::login(); Work on enable/disable recoveryAdmin for lost passwords in settings page (template, ajax, js); Work on fixing sharing files to users (still broken); --- apps/files_encryption/appinfo/spec.txt | 12 +++++ apps/files_encryption/hooks/hooks.php | 5 +- apps/files_encryption/js/settings.js | 14 +++++ apps/files_encryption/lib/keymanager.php | 4 +- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/lib/stream.php | 2 +- apps/files_encryption/lib/util.php | 56 ++++++++++++++++---- apps/files_encryption/settings.php | 6 +++ apps/files_encryption/templates/settings.php | 19 +++++++ 9 files changed, 106 insertions(+), 14 deletions(-) diff --git a/apps/files_encryption/appinfo/spec.txt b/apps/files_encryption/appinfo/spec.txt index 7a937a9143..bb15864cbb 100644 --- a/apps/files_encryption/appinfo/spec.txt +++ b/apps/files_encryption/appinfo/spec.txt @@ -35,6 +35,18 @@ that file must have their sharekeys changed also. The keyfile and catfile however need only changing in the owners files, as there is only one copy of these. +Publicly shared files (public links) +------------------------------------ + +Files shared via public links use a separate system user account called 'ownCloud'. All public files are shared to that user's public key, and the private key is used to access the files when the public link is used in browser. + +This means that files shared via public links are accessible only to users who know the shared URL, or to admins who know the 'ownCloud' user password. + +Lost password recovery +---------------------- + +In order to enable users to read their encrypted files in the event of a password loss/reset scenario, administrators can choose to enable a 'recoveryAdmin' account. This is a user that all user files will automatically be shared to of the option is enabled. This allows the recoveryAdmin user to generate new keyfiles for the user. By default the UID of the recoveryAdmin is 'recoveryAdmin'. + Notes ----- diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 302671889d..43d3dfb5a6 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -40,7 +40,7 @@ class Hooks { // Manually initialise Filesystem{} singleton with correct // fake root path, in order to avoid fatal webdav errors - \OC\Files\Filesystem::init( $params['uid'] . '/' . 'files' . '/' ); + \OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); $view = new \OC_FilesystemView( '/' ); @@ -194,7 +194,8 @@ class Hooks { $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); - $usersSharing = \OCP\Share::getUsersSharingFile( $path, true ); + // Note: this currently doesn't include the owner due to \OC\Files\Filesystem::getOwner() + $usersSharing = $util->getUsersSharingFile( $path ); // Recursively expand path to include subfiles $allPaths = $util->getPaths( $path ); diff --git a/apps/files_encryption/js/settings.js b/apps/files_encryption/js/settings.js index 0be857bb73..4f367f880d 100644 --- a/apps/files_encryption/js/settings.js +++ b/apps/files_encryption/js/settings.js @@ -6,12 +6,26 @@ $(document).ready(function(){ + // Trigger ajax on filetype blacklist change $('#encryption_blacklist').multiSelect({ oncheck:blackListChange, onuncheck:blackListChange, createText:'...' }); + // Trigger ajax on recoveryAdmin status change + $( 'input:radio[name="adminEnableRecovery"]' ).change( + function() { + $.post( + '../ajax/adminrecovery.php' + , $( this ).val() + , function( data ) { + // TODO: provide user with feedback of outcome + } + ); + } + ); + function blackListChange(){ var blackList=$('#encryption_blacklist').val().join(','); OC.AppConfig.setValue('files_encryption','type_blacklist',blackList); diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 99516949af..9bb062d0fd 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -391,8 +391,10 @@ class Keymanager { $result = true; } - if ( !result ) { + if ( ! $result ) { + \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); + } \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index a1eb76666d..d5aa0f74f1 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -140,7 +140,7 @@ class Proxy extends \OC_FileProxy { if ( \OCP\Share::isEnabled() ) { // Find out who, if anyone, is sharing the file - $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true ); + $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true, true, true ); $userIds = array_merge( $userIds, $shareUids ); diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 86439b4864..9d01c2ca6c 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -127,7 +127,7 @@ class Stream { if ( ! is_resource( $this->handle ) ) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open file "'.$this->rootView . '"', \OCP\Util::ERROR ); + \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->relPath . '"', \OCP\Util::ERROR ); } else { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 5276dae99a..f6386ad84d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -638,7 +638,7 @@ class Util { /** * @brief Filter an array of UIDs to return only ones ready for sharing * @param array $unfilteredUsers users to be checked for sharing readiness - * @return array $userIds filtered users + * @return multi-dimensional array. keys: ready, unready */ public function filterShareReadyUsers( $unfilteredUsers ) { @@ -649,6 +649,8 @@ class Util { foreach ( $unfilteredUsers as $user ) { $util = new Util( $this->view, $user ); + + $readyIds = $unreadyIds = array(); // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) @@ -657,22 +659,26 @@ class Util { or $user == 'ownCloud' ) { - // Construct array of just UIDs for Keymanager{} - $userIds[] = $user; + // Construct array of ready UIDs for Keymanager{} + $readyIds[] = $user; } else { - + + // Construct array of unready UIDs for Keymanager{} + $unreadyIds[] = $user; + // Log warning; we can't do necessary setup here // because we don't have the user passphrase - // TODO: Provide user feedback indicating that - // sharing failed \OC_Log::write( 'Encryption library', '"'.$user.'" is not setup for encryption', \OC_Log::WARN ); } } - return $userIds; + return array ( + 'ready' => $userIds + , 'unready' => $unreadyIds + ); } @@ -778,8 +784,18 @@ class Util { // Make sure users are capable of sharing $filteredUids = $this->filterShareReadyUsers( $users ); +// trigger_error( print_r($filteredUids, 1) ); + + if ( ! empty( $filteredUids['unready'] ) ) { + + // Notify user of unready userDir + // TODO: Move this out of here; it belongs somewhere else + \OCP\JSON::error(); + + } + // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids ); // TODO: check this includes the owner's public key + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); // TODO: check this includes the owner's public key \OC_FileProxy::$enabled = false; @@ -814,8 +830,30 @@ class Util { return true; } + + /** + * @brief Returns the users who are sharing a file, including the file owner + * @param $path Relative path of the file, like files/file.txt + * @return $users array of UIDs + * @note This wraps the OCP\Share method, but includes the owner even if + * the file isn't registered in sharing API + */ + public function getUsersSharingFile( $path ) { + + $users = \OCP\Share::getUsersSharingFile( $path, true, true ); + + // FIXME: this is returning empty :/ + $owner = \OC\Files\Filesystem::getOwner( $path ); + +// trigger_error( var_export( $owner, 1)); + + $users[] = $owner; + + return array_unique( $users ); + + } - /** + /** * @brief get uid of the owners of the file and the path to the file * @param $filename * @return array diff --git a/apps/files_encryption/settings.php b/apps/files_encryption/settings.php index 85c616bca7..71d47f061a 100644 --- a/apps/files_encryption/settings.php +++ b/apps/files_encryption/settings.php @@ -12,8 +12,14 @@ $tmpl = new OCP\Template( 'files_encryption', 'settings' ); $blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); +// Check if an adminRecovery account is enabled for recovering files after lost pwd +$view = new OC_FilesystemView( '' ); +$util = new \OCA\Encryption\Util( $view, \OCP\USER::getUser() ); +$recoveryEnabled = $util->recoveryEnabled(); + $tmpl->assign( 'blacklist', $blackList ); $tmpl->assign( 'encryption_mode', \OC_Appconfig::getValue( 'files_encryption', 'mode', 'none' ) ); +$tmpl->assign( 'recoveryEnabled', $recoveryEnabled ); \OCP\Util::addscript( 'files_encryption', 'settings' ); \OCP\Util::addscript( 'core', 'multiselect' ); diff --git a/apps/files_encryption/templates/settings.php b/apps/files_encryption/templates/settings.php index b873d7f5aa..6499d0c8e8 100644 --- a/apps/files_encryption/templates/settings.php +++ b/apps/files_encryption/templates/settings.php @@ -3,6 +3,7 @@

t( 'Encryption' )); ?> +
t( "Exclude the following file types from encryption:" )); ?>
@@ -16,5 +17,23 @@

+

+ t( "Enable encryption passwords recovery account (allow sharing to recovery account):" )); ?> +
+ /> + t( "Enabled" )); ?> +
+ + /> + t( "Disabled" )); ?> +

From f59aedff4fd4aeee869abb3b57f7e531b62e164d Mon Sep 17 00:00:00 2001 From: kondou Date: Sun, 7 Apr 2013 19:49:07 +0200 Subject: [PATCH 050/575] Optimize pictures with optipng. --- .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 260 -> 157 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 251 -> 157 bytes .../images/ui-bg_flat_100_ffffff_40x100.png | Bin 178 -> 86 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 178 -> 86 bytes .../images/ui-bg_flat_35_1d2d44_40x100.png | Bin 183 -> 86 bytes core/css/images/ui-icons_1d2d44_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_222222_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_ffd27a_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 4196 bytes core/img/actions/caret-dark.png | Bin 256 -> 229 bytes core/img/actions/caret.png | Bin 283 -> 269 bytes core/img/actions/clock.png | Bin 466 -> 367 bytes core/img/actions/close.png | Bin 275 -> 254 bytes core/img/actions/delete-hover.png | Bin 344 -> 254 bytes core/img/actions/history.png | Bin 363 -> 321 bytes core/img/actions/lock.png | Bin 346 -> 182 bytes core/img/actions/logout.png | Bin 613 -> 424 bytes core/img/actions/password.png | Bin 197 -> 195 bytes core/img/actions/search.png | Bin 554 -> 420 bytes core/img/actions/settings.png | Bin 683 -> 524 bytes core/img/actions/toggle.png | Bin 515 -> 391 bytes core/img/actions/triangle-n.png | Bin 223 -> 211 bytes core/img/actions/triangle-s.png | Bin 232 -> 211 bytes core/img/actions/view-close.png | Bin 434 -> 368 bytes core/img/actions/view-next.png | Bin 341 -> 305 bytes core/img/actions/view-pause.png | Bin 206 -> 181 bytes core/img/actions/view-play.png | Bin 274 -> 227 bytes core/img/actions/view-previous.png | Bin 356 -> 304 bytes core/img/appstore.png | Bin 7418 -> 7217 bytes core/img/desktopapp.png | Bin 4593 -> 2359 bytes core/img/favicon.png | Bin 912 -> 875 bytes .../application-x-debian-package.png | Bin 548 -> 539 bytes core/img/googleplay.png | Bin 7758 -> 7402 bytes core/img/logo-wide.png | Bin 2282 -> 2227 bytes core/img/logo.png | Bin 5860 -> 5182 bytes core/img/noise.png | Bin 3127 -> 3125 bytes core/img/places/calendar-dark.png | Bin 512 -> 429 bytes core/img/places/files.png | Bin 328 -> 280 bytes core/img/places/home.png | Bin 355 -> 342 bytes core/img/places/picture.png | Bin 271 -> 242 bytes core/img/rating/s1.png | Bin 454 -> 393 bytes core/img/rating/s10.png | Bin 848 -> 651 bytes core/img/rating/s11.png | Bin 724 -> 561 bytes core/img/rating/s2.png | Bin 731 -> 535 bytes core/img/rating/s3.png | Bin 918 -> 688 bytes core/img/rating/s4.png | Bin 989 -> 714 bytes core/img/rating/s5.png | Bin 939 -> 696 bytes core/img/rating/s6.png | Bin 992 -> 715 bytes core/img/rating/s7.png | Bin 939 -> 697 bytes core/img/rating/s8.png | Bin 987 -> 715 bytes core/img/rating/s9.png | Bin 908 -> 678 bytes core/img/remoteStorage-big.png | Bin 8997 -> 8372 bytes settings/img/admin.png | Bin 228 -> 198 bytes settings/img/apps.png | Bin 219 -> 196 bytes settings/img/help.png | Bin 477 -> 457 bytes settings/img/users.png | Bin 598 -> 391 bytes 56 files changed, 0 insertions(+), 0 deletions(-) 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 index 954e22dbd99e8c6dd7091335599abf2d10bf8003..eed4abd19220049cec9dafce3cb10b556ad3c915 100644 GIT binary patch delta 141 zcmZo+n#(vrqMnhNfq`M0ftDVSVhivIaor)wuuo6CQmW}HP$bCH#W92<`smq>yayC` zSTAnY(2#5ll;G_@rqSczDR}h5?wkp~=9Rn=xffyi;>;(Zo?j6U-ip1@YUw(v+mU}n t{E_g-#vS#RkJ>7nY?R{!*8llp>sFpS+2qai5TNM{o~~?uF6*2UngFUcHp~D3 delta 244 zcmbQs*upeHqMn0|fq|jt-;P`$b=uR#F(jh(?R7`4Lk1!(5AW;jY5XE~ul{N65$PQl zeOo0aPhXOGQXzlZQl5D3+!>eO?%Lz=spigQZ+px5X|HUnzqHz(E|Prvn`zZU1tzUW z39PFgF*F(R8OfjYxGBh=&6NK5Kt(f`g$6@t!30LFhYF0V9_At|l&ZU8o9b?pBV6#T zFoN}*-D=+lIWiIstTG}ES{5ICAI)B}{*CZ`mFUwolY6E`e)PQ*G_5;-(!5O;`#iTz qY0RIranrRQYMN88ewse}32#C5ryz&_EDb<^F?hQAxvX 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 index 64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d..a618b0658666efb69a5d5b1abca91ab1f54270b3 100644 GIT binary patch delta 141 zcmey(IG1sPL_H%j0|Uc011&uu#TMWb;+mG0R$5vb{NgSnP$bCH#W92<`smq>yayC` zSTAnY(2#5ll;G_@rqSczDR}h5?wkp~=9Rn=xffyi;>;(Zo?j6U-ip1@YUw(v+mU}n t{E_g-#vS#RkJ>7nY?R{!*8llp>sFpS+2qai5TNM{o~~?uF6*2UngCPII4%GH delta 235 zcmVCL_t(oh3(f}3WG2hMA6%9Agj&7vx53! zAx-mZlnmvYN0H$uXqZ?_QgAAyKg9NCEgA=HV17vW@I2ia*&y+p!utUI| z$6*(^`>bvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|Ewn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1m@SYGD8X diff --git a/core/css/images/ui-bg_flat_100_ffffff_40x100.png b/core/css/images/ui-bg_flat_100_ffffff_40x100.png index ac8b229af950c29356abf64a6c4aa894575445f0..6ebfa5026e220e8bc6f3da8cd6d278af4eaa9f96 100644 GIT binary patch delta 68 zcmdnQ7&bw|j**#xf#KY$2bMsJIlw2x_5c6>%a2H(0CM>}T^vIsB$Fjr7dNmmFfc_h VFp512aRN1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= diff --git a/core/css/images/ui-bg_flat_10_000000_40x100.png b/core/css/images/ui-bg_flat_10_000000_40x100.png index abdc01082bf3534eafecc5819d28c9574d44ea89..b10f59cd34249f40aeef06a75f95f536d6635803 100644 GIT binary patch delta 68 zcmdnQ7&bw|j**#xf#KY$2bMsJIlw2x6-Y0yvb_bQ_&i-4LnI`VC0G|XurV+&MKCam TJqmFL$}o7k`njxgN@xNABm)oM literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF diff --git a/core/css/images/ui-bg_flat_35_1d2d44_40x100.png b/core/css/images/ui-bg_flat_35_1d2d44_40x100.png index 904ef14c37d9cff5afe71ef9733141328f22ac3c..2be93e582d8f74bd666d6fed1a2810631b9f667c 100644 GIT binary patch delta 68 zcmdna7&bw|j**#xf#KY$2bMsJIlw2xRaV#Kk^H6kKrWxBi(`m{WU>V7;s!Pb2BruG UMzKdB?m!s^Pgg&ebxsLQ07m{0tN;K2 literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsX9*=$B>N1x91EQ8x$BA9G9>Q z<|O|25^8+NCi_q5&enI&W$n%O^UV)`n7(8A5T-G@y GGywnz958+W diff --git a/core/css/images/ui-icons_1d2d44_256x240.png b/core/css/images/ui-icons_1d2d44_256x240.png index 2a857e4da570dbcfedaecc67f4d1092ba321c0a2..1b1474b1fdf7d4229dbbed444472c2ce5370a8f2 100644 GIT binary patch delta 3860 zcmXY!cRbXOAICp8oN;ICY>vuGMgy5=`~D&-*>tip;$&rhK1Q-Bt8e+{@D<58Th2K2 zjZiW=GO|ZxW`*O|cRb&JzyEnXUhnt&^?ocqha(5VK(>+J^t8<%jIP>)p<{KNnvmFM zGev!yf$@>bW#_=`v)04q6E>HvZ&1EHky|;WYkfQ>>4~tl{%MruBDhYI>|;I?85#_% zu>mF-X=!9eGqXKA@cR{npt7l0Y3mF|$}8`ki7W@ui?WsPl49hMK1LH>^A+RAD*(e} zN(~--4xAlx%IHzP%Zc-;KS!3cP;;hwwAwzzzxjY;U}efwbYh zf0V;nU>B&Cp7V&(n6!3pdq+bAC<`w|&&|6w6qmA`fywZxuU+D+8eRAHC5=43em!zb z`UxC~AF)@Z))9(6lt7UUTQHd}H`#FFk7;syzyiX&6uoAv5;p7>8S@{4+cio-3(6sy z-WD*mZDyHm{zxv`>q!Zo$3h{1F5GXb~*9r05*m9!Z z?|GgO1?;D%`v1)9FDx|$mf=aMDi~vb-ztlx)5u~YP5i@7prP~gCp8w{M~hsBqA7h8YWJYfuBIp{ zEzs!9KYSA4T(T&d-gt{~LpI-{lWFkdEKkew!8P>*zpr^5yF$b7NpZC@Dm(^YahTtM z{ofji>~V$_l_vPgBV83R<0$7}D>X;8%ya+Vv5LR@ z=6@j_xdkVh=NVM8t&P{O8d@Uq+)aE;S6?&uZ(5k9#=5qp@lU$fV1a9d{Vv$9M=i_R z>R6MVu3$fZFVM1zaBVQWb4BR8pYNeQz~Rmohxrl6i7$s}JRspu(cM?*QUZ*&vyhUU zg-d1VqO)9W-1E@5q>hSlSihh;+??5^2wY1XtFTs3L909p^NYe0pIdFr^3=a&kJH3g zM3gl~_n)X9NdB$;xV$rvRu(~zR`2`4Nb#_T5zJ!B_r+)4OgpZ~xQNk%eX$F(uuS}K z>~9ex!nz=!yVX^dCUPF^*%o%bg`Ogqx-X$eub4az+_0! zVZ(9cm935rOb)d9Ku9xE8@fs4Qn?Wi}QT;()}4mgr5O|8|2FNcw?oqcd{MOWahX4n8VkU z$WzuxXV>s{b}Fx;7U3^<^1Z&U-Zp3Y5UcHU7s>L+@~Y?=*rmAxpN{^X<;LbFgUoelo#^QpN-oyr zV)g3)3pJYQ54sM^UPz8xJd?-ue> zp}(Z4vQq%qd6P)D?w0e0O%4QYr)n1Z%g9cF=2p~KWN0)_qgY4HC}6X!c>U1gpv7~_ zU*--YZnob&2jZ19jr~>Q2lDCx*PvKhI0`vA!*~RNRl?i`qLx6naaU;*%4|45W1EAV zv{v&)-}sO@X{!tUOkgt~hvUYe=@em337E0w&$YY6?Fv!e`-qFu0_mPVR=?PT1TnwO znfz?ep~jvdRc5lQws;xBcGTs`;g|fjJ{1@(B3g4AnG@gn(1q(@4A!KyTiSf&u6OC+ zn~Nb;``*U`3*J+F*3rc(GpEy!+S$|GeZ(j&0QVEmSFJgyR}({@d9}pFL(CudMIpP# zmX>dMBKKq2ekI(s z*@Pma0;7U5D@k%{)i%H0=Wv%Nrexuq+7rO3he=A;z^fzrrP8gu(A#Q)$yVV470+JU zHl5Yc_UlE4K|U&4+&t2LY&Fdwn@2=cjw88L4s*4X=H32CE>j zNnf7#vdHR%CtO)D-@k|lQ<4(TjVqhvP@encfv&Qq$I!32eyg@HEU@RqB{9W86(f#t z64^-93~MOP;dZl!!w2G5jg89-deN(#xbsuIK)8i>9#}!RlH0fVwk>P5ShtjN?Nm(Ye~)K)|tRq-L@4nT~ZOH9E<;OTCCA3O0Q zAHXSG<>>Q!ll5{?VBLPJ0>?U^nRE3Q%thqOwtIbWUjMdPkiYSRVZpk!%c;Bp4FtK} zpQE4nGdc&QXy1MjMUqO$pF+MBPGzM-Xz@m?16Ybi)B=+lql0JQHTH(EyxzV>j>)Pg zZe16guY{M2g2W#xO^vE^SbtKyQTpzguFC>;NdVMFu z>MHvdqqI{F=jOyG%Fa!ZdKRs$N|PnONtm8@ZCOjft96Ewx>`o5Eq@as8oyNF+qRElF3wt~Y;l{#%dx8uH9t~k;Hy;GO@U9@|0*4~^Mp_i5yuDx)VdOc|DjY3b9s)0K!V+xF=GV78 z!BiL}nKnn-tKz*K!lR~hEDujCgwe+Q#v!Xrj5}FvRaEa_Wh68&j+dE*4hP?q!pN`B=LcxC=XJ63C#Go zksVW$=XZJIQGMpdALm~4>8YuYk3@iSd0U*HvI6dv1Nk06aHKXMU(ZbZW4l)Wdlt~b zZ^Z>*8X+d2pK2p2%7?^6@r&fXi;c7AChMZD;vr#Ms&^+~`M+s{PDr>99@sJ)>lPWh z&iGFV8~2%V$SoK+IUA@?-}>fzdt3wZ+?6n zy&5zr@0=L^W05W><4Gv_5UrL3{kmiZmrD*uMKU}DK8I_RYe&C4ITqpJ5hzB5dcpL@ z;iJBeY&YpCkf^P{1laPjDTt3Gk^gKp7*%X^AKp{Vk9u`Hk!;qp z2Yk)`cWa4?^)bG6eiQFuA3SlOlMt0>*ElK^!g*++s9y=t(KUTrgybcQ;zdtd~Ohv zYscG#yKe%pK>z&N+rlaKKH0XzdspYm@3(|39P=84E~RQ6dGpCESJ2Rx3Loi-3{GeoVDL7{S1a8hrSE?v%&37$_vbDA|5@AktG-;a(^3Jfd>e$ z!LO$qlF^`wvHG_9eQTc92-VLR8y3z zLZ4a;dBxpp(B0quN{YSOh3Bd_R=Rz^k7iB`Wja`1Gx~?PhX`uz`$JRcXKh_W7$YZ63j%TH^UeP;XFeV!icJ~#`Mg>)<$LQ zCkHTeXL1Pc-F*D~BV2^O{#x|Y3i#*gUrmKDJO{c3w}b&KY31JfM5Kke@(Ak HhY-+uve$W42|GXcM_v`U`yx*^1$j36(!C-(d&ce*ZKJ>++bE?~9JwLS9 zylgi1iCTmQ{hH;eJL^w8?~i#`=gajbsENaWdCxyfyJOCuJ!B_pYJ z1JKiFeLX!yh@cJqT3p^s5HSGy!=Vay_o!eN_)=JNtR^2T(vF%7L2 zP+mi*8p?&ozk-$Z*4WGpH@L9uOg(T#7(Gef%#q z-3_bezTJNCE2z(FGRGC5;1yQ)L`7hD$I12+PE|9sbglay%m_j=CWII4`Z? zOhQ>P6KDUYa+yWH1pt_O+5h#(&!y&|_PcHe_ZyU|KSyU_@0&8S^>U?Zd&p{JzV(YZ zLDVd#HCl~-G`nxVmxHxr>(!H=kMT1UhA0U(1xIbM45(J!8aC>fqo+IgRL*%QrTDz`4(hzH3X2)I^PsUEuHu5YSga@v+4UUycs8HcI+hvD ziR5;W+qKs+b==$pKLNYFR7;99Mj^l7ULQ4`cJ!w(VC=OI_s2`x4>)8DiUzk} zecA9P`nPsB?36&B%ycyeoG)`+DZ)+eaqDYg@T)HApVadq@DS3+lz(VWU3)&=!{VCo zg6t+kUQuE!kJzJpbK=gq-166hUkDy5EoGTu@V3i%&66wMUQ}zxyX&vh^nj;Bp}4B5 z*e}(3EF-TBSbOMk8dYPA40;M2V`S;iYUA{oAzbak+AzLwBPc~nK4a2ah-n{lv9@Af zy$0LJ`g{dsE3G}pPFuy*tBa$F?_j^ESWr2?M4?h^=86$+i*5JUf!fcIXiR20Ez|YE zHaxRKxJ@M>Opc2C1?~$3BonqXm8Q^d-GFm{>Do8F^)vR~4wDZm#^;TePAYWp)=3%N zR^@MOH$f)#^@ZmYO9RaQ zyzr7Bhp3gb!A7^fSZX)P8AG3tMzB5)s$NnKVYRPoUGlvs0m8qL(&RG- zNKkR?u|V$EYaf;dZfHIHp`w zV@3WE`}Z2qj}esG=1RVTIh{Qv?ujoQm{K(OcXA3&y_IWny5eC0D{^OVp}VO2aIf-N z`qT_>W=6>dUCEE5?zk}Cc&m1G-@8TI9OpJ9-oK4m#=?onEg-Yv(}6nX`H|I4sAM!V zy@c-TcU5cm7K@A9?&z20pe_BKgIg--ubVFC7$WiYBt@E8v_0a%o+>Y;gKWi%g;-hT z`|s{}+2|%WMb_l;ht4Oxf@!7PjN45LMVgto75tkQNz6mo>x+soks6wQOWhFqtl4tZ z>0l=gc~xLzmt{If100uw@9^F3;9HTj`^`@VqM#Z#2;)<|o~?1>-o8|xyng+_Uh(wY zE=@6B7X-ASwVYpbv|Fsm6QKj)l1jxhdlp=vhm68`w^BY$q27yE243GAm-bqtEzA$q z4ELttB|JGJ{co{Q*;?kPJV`y}aEz&1T|x~BI0zO}_n6Wc36wNF@ZcpUM!-66P>BxC;J8s`ls|Ye{13+vLq&(ROZ0cIsiV7kTE|5o z{NPLQ*M|#`kMBnYSL(}c#@vAui3s1fho|+7D~TtFaP(ssd|x?qlQuspq23Jns5gbTZ(9{=ml)>q)%B64Z>z#JTF? z2VK)dLBZlv8_twQ(X378%6BiV>}{|L2|~jUYlD7u?1#h$DkgQ5iX%~hZBp}1IkdEB zr4B4rk?Gjze_U2p_NE&5DsBE9-b!SBWPG4*+=vWmS&qd!SM9Fz>Q1QV9|^$MeYzUZ zt+h;s-PY_d*i(S_mkL2&BeJd@-1(D~`zay=by8%T!m&Lxig7)om{w{i??#LEp&ak; zH3#$u*uZ1~^!1GPk9Z&?9~V+;2S~ffZq+z8 z^TD~vilHT2!^s+c^7ROT`JF4`4P2!Mo$R^Y{o+%1eHTC9cd=lA9g}vt72HaCnHskp zg~S>cn}`49S{67&qJZ$`gGIZ)?0xzIoZMWZ$AssY(2>4 zY#GN5!iMc>fVIzkVS}-kN9f$+^_a~LVLO(bTJ)WW@Vc-TmZP9dOP0`D_LsH%AAYlW z(Tz>S6~V#VMVE)8QmO~M*sKVO7=(|;QSY@wSaG!%pJNhE?eB8CptQU#@b!;eIHY@b zNVFlrn~MAQ4D6)l*&k7xjz=`* zlX_6I(P2CcotBD;p!LiH?$i>D!(;|51P*4De@l|x+7Guu*=F&ejgD&^?nk_K@&T06 z7*9b9V6iLPDY;Ru(b}O_gb%5E3O;A>pKj|YzPE#W+Am^TpEei7;A*0JE={d{<0EhLZI$)R;tI&vq0%n&mB@-+$VfS#R$ zAA}_wA?Snh=)5l{#wiQ;PaC`_)A({0YkXEp`R_ZPu|_gWr=xaL=kFZ6&^Xx!t(4Ns z>YJmr-sZd+XNHyMP8z$zDz|C7^x=HIKEo#sr^MuK0)c_T!OPqi>ZMm6Wx=w1#Iqr) z)+nZc=JZD)TgAmS!Y{#SxIw<#X5(AYtdPwN${>vOlc8>k=*27-0&Q zUnGsOwT;kIClkGpMO!Z2rU5Fnp?-Ttm{B_YCsl5?=j6=xC z8XzeL`pHVn%)~Ml-Ou5E9&Y%yeT$SoYUX|p-tfUFdw;hXd!B)dn1)SlHKYEisDDf9 zYul-Ob7Ui@K-s8BlQ8`dvZ&4ZY$%9>Wqar2MTXBONJHy~z9fbCe*oG?#zX)B diff --git a/core/css/images/ui-icons_222222_256x240.png b/core/css/images/ui-icons_222222_256x240.png index b273ff111d219c9b9a8b96d57683d0075fb7871a..82ef90aabaf90cde6a42f2baad47e63512e57d5a 100644 GIT binary patch delta 3860 zcmXY!cRbXOAICp8oN;ICY>vuGMgy5=`~D&-*>tip;$&rhK1Q-Bt8e+{@D<58Th2K2 zjZiW=GO|ZxW`*O|cRb&JzyEnXUhnt&^?ocqha(5VK(>+J^t8<%jIP>)p<{KNnvmFM zGev!yf$@>bW#_=`v)04q6E>HvZ&1EHky|;WYkfQ>>4~tl{%MruBDhYI>|;I?85#_% zu>mF-X=!9eGqXKA@cR{npt7l0Y3mF|$}8`ki7W@ui?WsPl49hMK1LH>^A+RAD*(e} zN(~--4xAlx%IHzP%Zc-;KS!3cP;;hwwAwzzzxjY;U}efwbYh zf0V;nU>B&Cp7V&(n6!3pdq+bAC<`w|&&|6w6qmA`fywZxuU+D+8eRAHC5=43em!zb z`UxC~AF)@Z))9(6lt7UUTQHd}H`#FFk7;syzyiX&6uoAv5;p7>8S@{4+cio-3(6sy z-WD*mZDyHm{zxv`>q!Zo$3h{1F5GXb~*9r05*m9!Z z?|GgO1?;D%`v1)9FDx|$mf=aMDi~vb-ztlx)5u~YP5i@7prP~gCp8w{M~hsBqA7h8YWJYfuBIp{ zEzs!9KYSA4T(T&d-gt{~LpI-{lWFkdEKkew!8P>*zpr^5yF$b7NpZC@Dm(^YahTtM z{ofji>~V$_l_vPgBV83R<0$7}D>X;8%ya+Vv5LR@ z=6@j_xdkVh=NVM8t&P{O8d@Uq+)aE;S6?&uZ(5k9#=5qp@lU$fV1a9d{Vv$9M=i_R z>R6MVu3$fZFVM1zaBVQWb4BR8pYNeQz~Rmohxrl6i7$s}JRspu(cM?*QUZ*&vyhUU zg-d1VqO)9W-1E@5q>hSlSihh;+??5^2wY1XtFTs3L909p^NYe0pIdFr^3=a&kJH3g zM3gl~_n)X9NdB$;xV$rvRu(~zR`2`4Nb#_T5zJ!B_r+)4OgpZ~xQNk%eX$F(uuS}K z>~9ex!nz=!yVX^dCUPF^*%o%bg`Ogqx-X$eub4az+_0! zVZ(9cm935rOb)d9Ku9xE8@fs4Qn?Wi}QT;()}4mgr5O|8|2FNcw?oqcd{MOWahX4n8VkU z$WzuxXV>s{b}Fx;7U3^<^1Z&U-Zp3Y5UcHU7s>L+@~Y?=*rmAxpN{^X<;LbFgUoelo#^QpN-oyr zV)g3)3pJYQ54sM^UPz8xJd?-ue> zp}(Z4vQq%qd6P)D?w0e0O%4QYr)n1Z%g9cF=2p~KWN0)_qgY4HC}6X!c>U1gpv7~_ zU*--YZnob&2jZ19jr~>Q2lDCx*PvKhI0`vA!*~RNRl?i`qLx6naaU;*%4|45W1EAV zv{v&)-}sO@X{!tUOkgt~hvUYe=@em337E0w&$YY6?Fv!e`-qFu0_mPVR=?PT1TnwO znfz?ep~jvdRc5lQws;xBcGTs`;g|fjJ{1@(B3g4AnG@gn(1q(@4A!KyTiSf&u6OC+ zn~Nb;``*U`3*J+F*3rc(GpEy!+S$|GeZ(j&0QVEmSFJgyR}({@d9}pFL(CudMIpP# zmX>dMBKKq2ekI(s z*@Pma0;7U5D@k%{)i%H0=Wv%Nrexuq+7rO3he=A;z^fzrrP8gu(A#Q)$yVV470+JU zHl5Yc_UlE4K|U&4+&t2LY&Fdwn@2=cjw88L4s*4X=H32CE>j zNnf7#vdHR%CtO)D-@k|lQ<4(TjVqhvP@encfv&Qq$I!32eyg@HEU@RqB{9W86(f#t z64^-93~MOP;dZl!!w2G5jg89-deN(#xbsuIK)8i>9#}!RlH0fVwk>P5ShtjN?Nm(Ye~)K)|tRq-L@4nT~ZOH9E<;OTCCA3O0Q zAHXSG<>>Q!ll5{?VBLPJ0>?U^nRE3Q%thqOwtIbWUjMdPkiYSRVZpk!%c;Bp4FtK} zpQE4nGdc&QXy1MjMUqO$pF+MBPGzM-Xz@m?16Ybi)B=+lql0JQHTH(EyxzV>j>)Pg zZe16guY{M2g2W#xO^vE^SbtKyQTpzguFC>;NdVMFu z>MHvdqqI{F=jOyG%Fa!ZdKRs$N|PnONtm8@ZCOjft96Ewx>`o5Eq@as8oyNF+qRElF3wt~Y;l{#%dx8uH9t~k;Hy;GO@U9@|0*4~^Mp_i5yuDx)VdOc|DjY3b9s)0K!V+xF=GV78 z!BiL}nKnn-tKz*K!lR~hEDujCgwe+Q#v!Xrj5}FvRaEa_Wh68&j+dE*4hP?q!pN`B=LcxC=XJ63C#Go zksVW$=XZJIQGMpdALm~4>8YuYk3@iSd0U*HvI6dv1Nk06aHKXMU(ZbZW4l)Wdlt~b zZ^Z>*8X+d2pK2p2%7?^6@r&fXi;c7AChMZD;vr#Ms&^+~`M+s{PDr>99@sJ)>lPWh z&iGFV8~2%V$SoK+IUA@?-}>fzdt3wZ+?6n zy&5zr@0=L^W05W><4Gv_5UrL3{kmiZmrD*uMKU}DK8I_RYe&C4ITqpJ5hzB5dcpL@ z;iJBeY&YpCkf^P{1laPjDTt3Gk^gKp7*%X^AKp{Vk9u`Hk!;qp z2Yk)`cWa4?^)bG6eiQFuA3SlOlMt0>*ElK^!g*++s9y=t(KUTrgybcQ;zdtd~Ohv zYscG#yKe%pK>z&N+rlaKKH0XzdspYm@3(|39P=84E~RQ6dGpCESJ2Rx3Loi-3{GeoVDL7{S1a8hrSE?v%&37$_vbDA|5@AktG-;a(^3Jfd>e$ z!LO$qlF^`wvHG_9eQTc92-VLR8y3z zLZ4a;dBxpp(B0quN{YSOh3Bd_R=Rz^k7iB`Wja`1Gx~?PhX`uz`$JRcXKh_W7$YZ63j%TH^UeP;XFeV!icJ~#`Mg>)<$LQ zCkHTeXL1Pc-F*D~BV2^O{#x|Y3i#*gUrmKDJO{c3w}b&KY31JfM5Kke@(Ak HhY-+uve$W42|GXcM_v`U`yx*^1$j36(!C-(d&ce*ZKJ>++bE?~9JwLS9 zylgi1iCTmQ{hH;eJL^w8?~i#`=gajbsENaWdCxyfyJOCuJ!B_pYJ z1JKiFeLX!yh@cJqT3p^s5HSGy!=Vay_o!eN_)=JNtR^2T(vF%7L2 zP+mi*8p?&ozk-$Z*4WGpH@L9uOg(T#7(Gef%#q z-3_bezTJNCE2z(FGRGC5;1yQ)L`7hD$I12+PE|9sbglay%m_j=CWII4`Z? zOhQ>P6KDUYa+yWH1pt_O+5h#(&!y&|_PcHe_ZyU|KSyU_@0&8S^>U?Zd&p{JzV(YZ zLDVd#HCl~-G`nxVmxHxr>(!H=kMT1UhA0U(1xIbM45(J!8aC>fqo+IgRL*%QrTDz`4(hzH3X2)I^PsUEuHu5YSga@v+4UUycs8HcI+hvD ziR5;W+qKs+b==$pKLNYFR7;99Mj^l7ULQ4`cJ!w(VC=OI_s2`x4>)8DiUzk} zecA9P`nPsB?36&B%ycyeoG)`+DZ)+eaqDYg@T)HApVadq@DS3+lz(VWU3)&=!{VCo zg6t+kUQuE!kJzJpbK=gq-166hUkDy5EoGTu@V3i%&66wMUQ}zxyX&vh^nj;Bp}4B5 z*e}(3EF-TBSbOMk8dYPA40;M2V`S;iYUA{oAzbak+AzLwBPc~nK4a2ah-n{lv9@Af zy$0LJ`g{dsE3G}pPFuy*tBa$F?_j^ESWr2?M4?h^=86$+i*5JUf!fcIXiR20Ez|YE zHaxRKxJ@M>Opc2C1?~$3BonqXm8Q^d-GFm{>Do8F^)vR~4wDZm#^;TePAYWp)=3%N zR^@MOH$f)#^@ZmYO9RaQ zyzr7Bhp3gb!A7^fSZX)P8AG3tMzB5)s$NnKVYRPoUGlvs0m8qL(&RG- zNKkR?u|V$EYaf;dZfHIHp`w zV@3WE`}Z2qj}esG=1RVTIh{Qv?ujoQm{K(OcXA3&y_IWny5eC0D{^OVp}VO2aIf-N z`qT_>W=6>dUCEE5?zk}Cc&m1G-@8TI9OpJ9-oK4m#=?onEg-Yv(}6nX`H|I4sAM!V zy@c-TcU5cm7K@A9?&z20pe_BKgIg--ubVFC7$WiYBt@E8v_0a%o+>Y;gKWi%g;-hT z`|s{}+2|%WMb_l;ht4Oxf@!7PjN45LMVgto75tkQNz6mo>x+soks6wQOWhFqtl4tZ z>0l=gc~xLzmt{If100uw@9^F3;9HTj`^`@VqM#Z#2;)<|o~?1>-o8|xyng+_Uh(wY zE=@6B7X-ASwVYpbv|Fsm6QKj)l1jxhdlp=vhm68`w^BY$q27yE243GAm-bqtEzA$q z4ELttB|JGJ{co{Q*;?kPJV`y}aEz&1T|x~BI0zO}_n6Wc36wNF@ZcpUM!-66P>BxC;J8s`ls|Ye{13+vLq&(ROZ0cIsiV7kTE|5o z{NPLQ*M|#`kMBnYSL(}c#@vAui3s1fho|+7D~TtFaP(ssd|x?qlQuspq23Jns5gbTZ(9{=ml)>q)%B64Z>z#JTF? z2VK)dLBZlv8_twQ(X378%6BiV>}{|L2|~jUYlD7u?1#h$DkgQ5iX%~hZBp}1IkdEB zr4B4rk?Gjze_U2p_NE&5DsBE9-b!SBWPG4*+=vWmS&qd!SM9Fz>Q1QV9|^$MeYzUZ zt+h;s-PY_d*i(S_mkL2&BeJd@-1(D~`zay=by8%T!m&Lxig7)om{w{i??#LEp&ak; zH3#$u*uZ1~^!1GPk9Z&?9~V+;2S~ffZq+z8 z^TD~vilHT2!^s+c^7ROT`JF4`4P2!Mo$R^Y{o+%1eHTC9cd=lA9g}vt72HaCnHskp zg~S>cn}`49S{67&qJZ$`gGIZ)?0xzIoZMWZ$AssY(2>4 zY#GN5!iMc>fVIzkVS}-kN9f$+^_a~LVLO(bTJ)WW@Vc-TmZP9dOP0`D_LsH%AAYlW z(Tz>S6~V#VMVE)8QmO~M*sKVO7=(|;QSY@wSaG!%pJNhE?eB8CptQU#@b!;eIHY@b zNVFlrn~MAQ4D6)l*&k7xjz=`* zlX_6I(P2CcotBD;p!LiH?$i>D!(;|51P*4De@l|x+7Guu*=F&ejgD&^?nk_K@&T06 z7*9b9V6iLPDY;Ru(b}O_gb%5E3O;A>pKj|YzPE#W+Am^TpEei7;A*0JE={d{<0EhLZI$)R;tI&vq0%n&mB@-+$VfS#R$ zAA}_wA?Snh=)5l{#wiQ;PaC`_)A({0YkXEp`R_ZPu|_gWr=xaL=kFZ6&^Xx!t(4Ns z>YJmr-sZd+XNHyMP8z$zDz|C7^x=HIKEo#sr^MuK0)c_T!OPqi>ZMm6Wx=w1#Iqr) z)+nZc=JZD)TgAmS!Y{#SxIw<#X5(AYtdPwN${>vOlc8>k=*27-0&Q zUnGsOwT;kIClkGpMO!Z2rU5Fnp?-Ttm{B_YCsl5?=j6=xC z8XzeL`pHVn%)~Ml-Ou5E9&Y%yeT$SoYUX|p-tfUFdw;hXd!B)dn1)SlHKYEisDDf9 zYul-Ob7Ui@K-s8BlQ8`dvZ&4ZY$%9>Wqar2MTXBONJHy~z9fbCe*oG?#zX)B diff --git a/core/css/images/ui-icons_ffd27a_256x240.png b/core/css/images/ui-icons_ffd27a_256x240.png index e117effa3dca24e7978cfc5f8b967f661e81044f..a7ac4ec6580f9c553f7933a625531dc8ebcaf2aa 100644 GIT binary patch delta 3860 zcmXY!cRbXOAICp8oN;ICY>vuGMgy5=`~D&-*>tip;$&rhK1Q-Bt8e+{@D<58Th2K2 zjZiW=GO|ZxW`*O|cRb&JzyEnXUhnt&^?ocqha(5VK(>+J^t8<%jIP>)p<{KNnvmFM zGev!yf$@>bW#_=`v)04q6E>HvZ&1EHky|;WYkfQ>>4~tl{%MruBDhYI>|;I?85#_% zu>mF-X=!9eGqXKA@cR{npt7l0Y3mF|$}8`ki7W@ui?WsPl49hMK1LH>^A+RAD*(e} zN(~--4xAlx%IHzP%Zc-;KS!3cP;;hwwAwzzzxjY;U}efwbYh zf0V;nU>B&Cp7V&(n6!3pdq+bAC<`w|&&|6w6qmA`fywZxuU+D+8eRAHC5=43em!zb z`UxC~AF)@Z))9(6lt7UUTQHd}H`#FFk7;syzyiX&6uoAv5;p7>8S@{4+cio-3(6sy z-WD*mZDyHm{zxv`>q!Zo$3h{1F5GXb~*9r05*m9!Z z?|GgO1?;D%`v1)9FDx|$mf=aMDi~vb-ztlx)5u~YP5i@7prP~gCp8w{M~hsBqA7h8YWJYfuBIp{ zEzs!9KYSA4T(T&d-gt{~LpI-{lWFkdEKkew!8P>*zpr^5yF$b7NpZC@Dm(^YahTtM z{ofji>~V$_l_vPgBV83R<0$7}D>X;8%ya+Vv5LR@ z=6@j_xdkVh=NVM8t&P{O8d@Uq+)aE;S6?&uZ(5k9#=5qp@lU$fV1a9d{Vv$9M=i_R z>R6MVu3$fZFVM1zaBVQWb4BR8pYNeQz~Rmohxrl6i7$s}JRspu(cM?*QUZ*&vyhUU zg-d1VqO)9W-1E@5q>hSlSihh;+??5^2wY1XtFTs3L909p^NYe0pIdFr^3=a&kJH3g zM3gl~_n)X9NdB$;xV$rvRu(~zR`2`4Nb#_T5zJ!B_r+)4OgpZ~xQNk%eX$F(uuS}K z>~9ex!nz=!yVX^dCUPF^*%o%bg`Ogqx-X$eub4az+_0! zVZ(9cm935rOb)d9Ku9xE8@fs4Qn?Wi}QT;()}4mgr5O|8|2FNcw?oqcd{MOWahX4n8VkU z$WzuxXV>s{b}Fx;7U3^<^1Z&U-Zp3Y5UcHU7s>L+@~Y?=*rmAxpN{^X<;LbFgUoelo#^QpN-oyr zV)g3)3pJYQ54sM^UPz8xJd?-ue> zp}(Z4vQq%qd6P)D?w0e0O%4QYr)n1Z%g9cF=2p~KWN0)_qgY4HC}6X!c>U1gpv7~_ zU*--YZnob&2jZ19jr~>Q2lDCx*PvKhI0`vA!*~RNRl?i`qLx6naaU;*%4|45W1EAV zv{v&)-}sO@X{!tUOkgt~hvUYe=@em337E0w&$YY6?Fv!e`-qFu0_mPVR=?PT1TnwO znfz?ep~jvdRc5lQws;xBcGTs`;g|fjJ{1@(B3g4AnG@gn(1q(@4A!KyTiSf&u6OC+ zn~Nb;``*U`3*J+F*3rc(GpEy!+S$|GeZ(j&0QVEmSFJgyR}({@d9}pFL(CudMIpP# zmX>dMBKKq2ekI(s z*@Pma0;7U5D@k%{)i%H0=Wv%Nrexuq+7rO3he=A;z^fzrrP8gu(A#Q)$yVV470+JU zHl5Yc_UlE4K|U&4+&t2LY&Fdwn@2=cjw88L4s*4X=H32CE>j zNnf7#vdHR%CtO)D-@k|lQ<4(TjVqhvP@encfv&Qq$I!32eyg@HEU@RqB{9W86(f#t z64^-93~MOP;dZl!!w2G5jg89-deN(#xbsuIK)8i>9#}!RlH0fVwk>P5ShtjN?Nm(Ye~)K)|tRq-L@4nT~ZOH9E<;OTCCA3O0Q zAHXSG<>>Q!ll5{?VBLPJ0>?U^nRE3Q%thqOwtIbWUjMdPkiYSRVZpk!%c;Bp4FtK} zpQE4nGdc&QXy1MjMUqO$pF+MBPGzM-Xz@m?16Ybi)B=+lql0JQHTH(EyxzV>j>)Pg zZe16guY{M2g2W#xO^vE^SbtKyQTpzguFC>;NdVMFu z>MHvdqqI{F=jOyG%Fa!ZdKRs$N|PnONtm8@ZCOjft96Ewx>`o5Eq@as8oyNF+qRElF3wt~Y;l{#%dx8uH9t~k;Hy;GO@U9@|0*4~^Mp_i5yuDx)VdOc|DjY3b9s)0K!V+xF=GV78 z!BiL}nKnn-tKz*K!lR~hEDujCgwe+Q#v!Xrj5}FvRaEa_Wh68&j+dE*4hP?q!pN`B=LcxC=XJ63C#Go zksVW$=XZJIQGMpdALm~4>8YuYk3@iSd0U*HvI6dv1Nk06aHKXMU(ZbZW4l)Wdlt~b zZ^Z>*8X+d2pK2p2%7?^6@r&fXi;c7AChMZD;vr#Ms&^+~`M+s{PDr>99@sJ)>lPWh z&iGFV8~2%V$SoK+IUA@?-}>fzdt3wZ+?6n zy&5zr@0=L^W05W><4Gv_5UrL3{kmiZmrD*uMKU}DK8I_RYe&C4ITqpJ5hzB5dcpL@ z;iJBeY&YpCkf^P{1laPjDTt3Gk^gKp7*%X^AKp{Vk9u`Hk!;qp z2Yk)`cWa4?^)bG6eiQFuA3SlOlMt0>*ElK^!g*++s9y=t(KUTrgybcQ;zdtd~Ohv zYscG#yKe%pK>z&N+rlaKKH0XzdspYm@3(|39P=84E~RQ6dGpCESJ2Rx3Loi-3{GeoVDL7{S1a8hrSE?v%&37$_vbDA|5@AktG-;a(^3Jfd>e$ z!LO$qlF^`wvHG_9eQTc92-VLR8y3z zLZ4a;dBxpp(B0quN{YSOh3Bd_R=Rz^k7iB`Wja`1Gx~?PhX`uz`$JRcXKh_W7$YZ63j%TH^UeP;XFeV!icJ~#`Mg>)<$LQ zCkHTeXL1Pc-F*D~BV2^O{#x|Y3i#*gUrmKDJO{c3w}b&KY31JfM5Kke@(Ak HhY-+uve$W42|GXcM_v`U`yx*^1$j36(!C-(d&ce*ZKJ>++bE?~9JwLS9 zylgi1iCTmQ{hH;eJL^w8?~i#`=gajbsENaWdCxyfyJOCuJ!B_pYJ z1JKiFeLX!yh@cJqT3p^s5HSGy!=Vay_o!eN_)=JNtR^2T(vF%7L2 zP+mi*8p?&ozk-$Z*4WGpH@L9uOg(T#7(Gef%#q z-3_bezTJNCE2z(FGRGC5;1yQ)L`7hD$I12+PE|9sbglay%m_j=CWII4`Z? zOhQ>P6KDUYa+yWH1pt_O+5h#(&!y&|_PcHe_ZyU|KSyU_@0&8S^>U?Zd&p{JzV(YZ zLDVd#HCl~-G`nxVmxHxr>(!H=kMT1UhA0U(1xIbM45(J!8aC>fqo+IgRL*%QrTDz`4(hzH3X2)I^PsUEuHu5YSga@v+4UUycs8HcI+hvD ziR5;W+qKs+b==$pKLNYFR7;99Mj^l7ULQ4`cJ!w(VC=OI_s2`x4>)8DiUzk} zecA9P`nPsB?36&B%ycyeoG)`+DZ)+eaqDYg@T)HApVadq@DS3+lz(VWU3)&=!{VCo zg6t+kUQuE!kJzJpbK=gq-166hUkDy5EoGTu@V3i%&66wMUQ}zxyX&vh^nj;Bp}4B5 z*e}(3EF-TBSbOMk8dYPA40;M2V`S;iYUA{oAzbak+AzLwBPc~nK4a2ah-n{lv9@Af zy$0LJ`g{dsE3G}pPFuy*tBa$F?_j^ESWr2?M4?h^=86$+i*5JUf!fcIXiR20Ez|YE zHaxRKxJ@M>Opc2C1?~$3BonqXm8Q^d-GFm{>Do8F^)vR~4wDZm#^;TePAYWp)=3%N zR^@MOH$f)#^@ZmYO9RaQ zyzr7Bhp3gb!A7^fSZX)P8AG3tMzB5)s$NnKVYRPoUGlvs0m8qL(&RG- zNKkR?u|V$EYaf;dZfHIHp`w zV@3WE`}Z2qj}esG=1RVTIh{Qv?ujoQm{K(OcXA3&y_IWny5eC0D{^OVp}VO2aIf-N z`qT_>W=6>dUCEE5?zk}Cc&m1G-@8TI9OpJ9-oK4m#=?onEg-Yv(}6nX`H|I4sAM!V zy@c-TcU5cm7K@A9?&z20pe_BKgIg--ubVFC7$WiYBt@E8v_0a%o+>Y;gKWi%g;-hT z`|s{}+2|%WMb_l;ht4Oxf@!7PjN45LMVgto75tkQNz6mo>x+soks6wQOWhFqtl4tZ z>0l=gc~xLzmt{If100uw@9^F3;9HTj`^`@VqM#Z#2;)<|o~?1>-o8|xyng+_Uh(wY zE=@6B7X-ASwVYpbv|Fsm6QKj)l1jxhdlp=vhm68`w^BY$q27yE243GAm-bqtEzA$q z4ELttB|JGJ{co{Q*;?kPJV`y}aEz&1T|x~BI0zO}_n6Wc36wNF@ZcpUM!-66P>BxC;J8s`ls|Ye{13+vLq&(ROZ0cIsiV7kTE|5o z{NPLQ*M|#`kMBnYSL(}c#@vAui3s1fho|+7D~TtFaP(ssd|x?qlQuspq23Jns5gbTZ(9{=ml)>q)%B64Z>z#JTF? z2VK)dLBZlv8_twQ(X378%6BiV>}{|L2|~jUYlD7u?1#h$DkgQ5iX%~hZBp}1IkdEB zr4B4rk?Gjze_U2p_NE&5DsBE9-b!SBWPG4*+=vWmS&qd!SM9Fz>Q1QV9|^$MeYzUZ zt+h;s-PY_d*i(S_mkL2&BeJd@-1(D~`zay=by8%T!m&Lxig7)om{w{i??#LEp&ak; zH3#$u*uZ1~^!1GPk9Z&?9~V+;2S~ffZq+z8 z^TD~vilHT2!^s+c^7ROT`JF4`4P2!Mo$R^Y{o+%1eHTC9cd=lA9g}vt72HaCnHskp zg~S>cn}`49S{67&qJZ$`gGIZ)?0xzIoZMWZ$AssY(2>4 zY#GN5!iMc>fVIzkVS}-kN9f$+^_a~LVLO(bTJ)WW@Vc-TmZP9dOP0`D_LsH%AAYlW z(Tz>S6~V#VMVE)8QmO~M*sKVO7=(|;QSY@wSaG!%pJNhE?eB8CptQU#@b!;eIHY@b zNVFlrn~MAQ4D6)l*&k7xjz=`* zlX_6I(P2CcotBD;p!LiH?$i>D!(;|51P*4De@l|x+7Guu*=F&ejgD&^?nk_K@&T06 z7*9b9V6iLPDY;Ru(b}O_gb%5E3O;A>pKj|YzPE#W+Am^TpEei7;A*0JE={d{<0EhLZI$)R;tI&vq0%n&mB@-+$VfS#R$ zAA}_wA?Snh=)5l{#wiQ;PaC`_)A({0YkXEp`R_ZPu|_gWr=xaL=kFZ6&^Xx!t(4Ns z>YJmr-sZd+XNHyMP8z$zDz|C7^x=HIKEo#sr^MuK0)c_T!OPqi>ZMm6Wx=w1#Iqr) z)+nZc=JZD)TgAmS!Y{#SxIw<#X5(AYtdPwN${>vOlc8>k=*27-0&Q zUnGsOwT;kIClkGpMO!Z2rU5Fnp?-Ttm{B_YCsl5?=j6=xC z8XzeL`pHVn%)~Ml-Ou5E9&Y%yeT$SoYUX|p-tfUFdw;hXd!B)dn1)SlHKYEisDDf9 zYul-Ob7Ui@K-s8BlQ8`dvZ&4ZY$%9>Wqar2MTXBONJHy~z9fbCe*oG?#zX)B diff --git a/core/css/images/ui-icons_ffffff_256x240.png b/core/css/images/ui-icons_ffffff_256x240.png index 42f8f992c727ddaa617da224a522e463df690387..174be7c2847da9e40c962464520a1ad408f4bdb8 100644 GIT binary patch delta 3860 zcmXY!cRbXOAICp8oN;ICY>vuGMgy5=`~D&-*>tip;$&rhK1Q-Bt8e+{@D<58Th2K2 zjZiW=GO|ZxW`*O|cRb&JzyEnXUhnt&^?ocqha(5VK(>+J^t8<%jIP>)p<{KNnvmFM zGev!yf$@>bW#_=`v)04q6E>HvZ&1EHky|;WYkfQ>>4~tl{%MruBDhYI>|;I?85#_% zu>mF-X=!9eGqXKA@cR{npt7l0Y3mF|$}8`ki7W@ui?WsPl49hMK1LH>^A+RAD*(e} zN(~--4xAlx%IHzP%Zc-;KS!3cP;;hwwAwzzzxjY;U}efwbYh zf0V;nU>B&Cp7V&(n6!3pdq+bAC<`w|&&|6w6qmA`fywZxuU+D+8eRAHC5=43em!zb z`UxC~AF)@Z))9(6lt7UUTQHd}H`#FFk7;syzyiX&6uoAv5;p7>8S@{4+cio-3(6sy z-WD*mZDyHm{zxv`>q!Zo$3h{1F5GXb~*9r05*m9!Z z?|GgO1?;D%`v1)9FDx|$mf=aMDi~vb-ztlx)5u~YP5i@7prP~gCp8w{M~hsBqA7h8YWJYfuBIp{ zEzs!9KYSA4T(T&d-gt{~LpI-{lWFkdEKkew!8P>*zpr^5yF$b7NpZC@Dm(^YahTtM z{ofji>~V$_l_vPgBV83R<0$7}D>X;8%ya+Vv5LR@ z=6@j_xdkVh=NVM8t&P{O8d@Uq+)aE;S6?&uZ(5k9#=5qp@lU$fV1a9d{Vv$9M=i_R z>R6MVu3$fZFVM1zaBVQWb4BR8pYNeQz~Rmohxrl6i7$s}JRspu(cM?*QUZ*&vyhUU zg-d1VqO)9W-1E@5q>hSlSihh;+??5^2wY1XtFTs3L909p^NYe0pIdFr^3=a&kJH3g zM3gl~_n)X9NdB$;xV$rvRu(~zR`2`4Nb#_T5zJ!B_r+)4OgpZ~xQNk%eX$F(uuS}K z>~9ex!nz=!yVX^dCUPF^*%o%bg`Ogqx-X$eub4az+_0! zVZ(9cm935rOb)d9Ku9xE8@fs4Qn?Wi}QT;()}4mgr5O|8|2FNcw?oqcd{MOWahX4n8VkU z$WzuxXV>s{b}Fx;7U3^<^1Z&U-Zp3Y5UcHU7s>L+@~Y?=*rmAxpN{^X<;LbFgUoelo#^QpN-oyr zV)g3)3pJYQ54sM^UPz8xJd?-ue> zp}(Z4vQq%qd6P)D?w0e0O%4QYr)n1Z%g9cF=2p~KWN0)_qgY4HC}6X!c>U1gpv7~_ zU*--YZnob&2jZ19jr~>Q2lDCx*PvKhI0`vA!*~RNRl?i`qLx6naaU;*%4|45W1EAV zv{v&)-}sO@X{!tUOkgt~hvUYe=@em337E0w&$YY6?Fv!e`-qFu0_mPVR=?PT1TnwO znfz?ep~jvdRc5lQws;xBcGTs`;g|fjJ{1@(B3g4AnG@gn(1q(@4A!KyTiSf&u6OC+ zn~Nb;``*U`3*J+F*3rc(GpEy!+S$|GeZ(j&0QVEmSFJgyR}({@d9}pFL(CudMIpP# zmX>dMBKKq2ekI(s z*@Pma0;7U5D@k%{)i%H0=Wv%Nrexuq+7rO3he=A;z^fzrrP8gu(A#Q)$yVV470+JU zHl5Yc_UlE4K|U&4+&t2LY&Fdwn@2=cjw88L4s*4X=H32CE>j zNnf7#vdHR%CtO)D-@k|lQ<4(TjVqhvP@encfv&Qq$I!32eyg@HEU@RqB{9W86(f#t z64^-93~MOP;dZl!!w2G5jg89-deN(#xbsuIK)8i>9#}!RlH0fVwk>P5ShtjN?Nm(Ye~)K)|tRq-L@4nT~ZOH9E<;OTCCA3O0Q zAHXSG<>>Q!ll5{?VBLPJ0>?U^nRE3Q%thqOwtIbWUjMdPkiYSRVZpk!%c;Bp4FtK} zpQE4nGdc&QXy1MjMUqO$pF+MBPGzM-Xz@m?16Ybi)B=+lql0JQHTH(EyxzV>j>)Pg zZe16guY{M2g2W#xO^vE^SbtKyQTpzguFC>;NdVMFu z>MHvdqqI{F=jOyG%Fa!ZdKRs$N|PnONtm8@ZCOjft96Ewx>`o5Eq@as8oyNF+qRElF3wt~Y;l{#%dx8uH9t~k;Hy;GO@U9@|0*4~^Mp_i5yuDx)VdOc|DjY3b9s)0K!V+xF=GV78 z!BiL}nKnn-tKz*K!lR~hEDujCgwe+Q#v!Xrj5}FvRaEa_Wh68&j+dE*4hP?q!pN`B=LcxC=XJ63C#Go zksVW$=XZJIQGMpdALm~4>8YuYk3@iSd0U*HvI6dv1Nk06aHKXMU(ZbZW4l)Wdlt~b zZ^Z>*8X+d2pK2p2%7?^6@r&fXi;c7AChMZD;vr#Ms&^+~`M+s{PDr>99@sJ)>lPWh z&iGFV8~2%V$SoK+IUA@?-}>fzdt3wZ+?6n zy&5zr@0=L^W05W><4Gv_5UrL3{kmiZmrD*uMKU}DK8I_RYe&C4ITqpJ5hzB5dcpL@ z;iJBeY&YpCkf^P{1laPjDTt3Gk^gKp7*%X^AKp{Vk9u`Hk!;qp z2Yk)`cWa4?^)bG6eiQFuA3SlOlMt0>*ElK^!g*++s9y=t(KUTrgybcQ;zdtd~Ohv zYscG#yKe%pK>z&N+rlaKKH0XzdspYm@3(|39P=84E~RQ6dGpCESJ2Rx3Loi-3{GeoVDL7{S1a8hrSE?v%&37$_vbDA|5@AktG-;a(^3Jfd>e$ z!LO$qlF^`wvHG_9eQTc92-VLR8y3z zLZ4a;dBxpp(B0quN{YSOh3Bd_R=Rz^k7iB`Wja`1Gx~?PhX`uz`$JRcXKh_W7$YZ63j%TH^UeP;XFeV!icJ~#`Mg>)<$LQ zCkHTeXL1Pc-F*D~BV2^O{#x|Y3i#*gUrmKDJO{c3w}b&KY31JfM5Kke@(Ak HhY-+uve$W42|GXcM_v`U`yx*^1$j36(!C-(d&ce*ZKJ>++bE?~9JwLS9 zylgi1iCTmQ{hH;eJL^w8?~i#`=gajbsENaWdCxyfyJOCuJ!B_pYJ z1JKiFeLX!yh@cJqT3p^s5HSGy!=Vay_o!eN_)=JNtR^2T(vF%7L2 zP+mi*8p?&ozk-$Z*4WGpH@L9uOg(T#7(Gef%#q z-3_bezTJNCE2z(FGRGC5;1yQ)L`7hD$I12+PE|9sbglay%m_j=CWII4`Z? zOhQ>P6KDUYa+yWH1pt_O+5h#(&!y&|_PcHe_ZyU|KSyU_@0&8S^>U?Zd&p{JzV(YZ zLDVd#HCl~-G`nxVmxHxr>(!H=kMT1UhA0U(1xIbM45(J!8aC>fqo+IgRL*%QrTDz`4(hzH3X2)I^PsUEuHu5YSga@v+4UUycs8HcI+hvD ziR5;W+qKs+b==$pKLNYFR7;99Mj^l7ULQ4`cJ!w(VC=OI_s2`x4>)8DiUzk} zecA9P`nPsB?36&B%ycyeoG)`+DZ)+eaqDYg@T)HApVadq@DS3+lz(VWU3)&=!{VCo zg6t+kUQuE!kJzJpbK=gq-166hUkDy5EoGTu@V3i%&66wMUQ}zxyX&vh^nj;Bp}4B5 z*e}(3EF-TBSbOMk8dYPA40;M2V`S;iYUA{oAzbak+AzLwBPc~nK4a2ah-n{lv9@Af zy$0LJ`g{dsE3G}pPFuy*tBa$F?_j^ESWr2?M4?h^=86$+i*5JUf!fcIXiR20Ez|YE zHaxRKxJ@M>Opc2C1?~$3BonqXm8Q^d-GFm{>Do8F^)vR~4wDZm#^;TePAYWp)=3%N zR^@MOH$f)#^@ZmYO9RaQ zyzr7Bhp3gb!A7^fSZX)P8AG3tMzB5)s$NnKVYRPoUGlvs0m8qL(&RG- zNKkR?u|V$EYaf;dZfHIHp`w zV@3WE`}Z2qj}esG=1RVTIh{Qv?ujoQm{K(OcXA3&y_IWny5eC0D{^OVp}VO2aIf-N z`qT_>W=6>dUCEE5?zk}Cc&m1G-@8TI9OpJ9-oK4m#=?onEg-Yv(}6nX`H|I4sAM!V zy@c-TcU5cm7K@A9?&z20pe_BKgIg--ubVFC7$WiYBt@E8v_0a%o+>Y;gKWi%g;-hT z`|s{}+2|%WMb_l;ht4Oxf@!7PjN45LMVgto75tkQNz6mo>x+soks6wQOWhFqtl4tZ z>0l=gc~xLzmt{If100uw@9^F3;9HTj`^`@VqM#Z#2;)<|o~?1>-o8|xyng+_Uh(wY zE=@6B7X-ASwVYpbv|Fsm6QKj)l1jxhdlp=vhm68`w^BY$q27yE243GAm-bqtEzA$q z4ELttB|JGJ{co{Q*;?kPJV`y}aEz&1T|x~BI0zO}_n6Wc36wNF@ZcpUM!-66P>BxC;J8s`ls|Ye{13+vLq&(ROZ0cIsiV7kTE|5o z{NPLQ*M|#`kMBnYSL(}c#@vAui3s1fho|+7D~TtFaP(ssd|x?qlQuspq23Jns5gbTZ(9{=ml)>q)%B64Z>z#JTF? z2VK)dLBZlv8_twQ(X378%6BiV>}{|L2|~jUYlD7u?1#h$DkgQ5iX%~hZBp}1IkdEB zr4B4rk?Gjze_U2p_NE&5DsBE9-b!SBWPG4*+=vWmS&qd!SM9Fz>Q1QV9|^$MeYzUZ zt+h;s-PY_d*i(S_mkL2&BeJd@-1(D~`zay=by8%T!m&Lxig7)om{w{i??#LEp&ak; zH3#$u*uZ1~^!1GPk9Z&?9~V+;2S~ffZq+z8 z^TD~vilHT2!^s+c^7ROT`JF4`4P2!Mo$R^Y{o+%1eHTC9cd=lA9g}vt72HaCnHskp zg~S>cn}`49S{67&qJZ$`gGIZ)?0xzIoZMWZ$AssY(2>4 zY#GN5!iMc>fVIzkVS}-kN9f$+^_a~LVLO(bTJ)WW@Vc-TmZP9dOP0`D_LsH%AAYlW z(Tz>S6~V#VMVE)8QmO~M*sKVO7=(|;QSY@wSaG!%pJNhE?eB8CptQU#@b!;eIHY@b zNVFlrn~MAQ4D6)l*&k7xjz=`* zlX_6I(P2CcotBD;p!LiH?$i>D!(;|51P*4De@l|x+7Guu*=F&ejgD&^?nk_K@&T06 z7*9b9V6iLPDY;Ru(b}O_gb%5E3O;A>pKj|YzPE#W+Am^TpEei7;A*0JE={d{<0EhLZI$)R;tI&vq0%n&mB@-+$VfS#R$ zAA}_wA?Snh=)5l{#wiQ;PaC`_)A({0YkXEp`R_ZPu|_gWr=xaL=kFZ6&^Xx!t(4Ns z>YJmr-sZd+XNHyMP8z$zDz|C7^x=HIKEo#sr^MuK0)c_T!OPqi>ZMm6Wx=w1#Iqr) z)+nZc=JZD)TgAmS!Y{#SxIw<#X5(AYtdPwN${>vOlc8>k=*27-0&Q zUnGsOwT;kIClkGpMO!Z2rU5Fnp?-Ttm{B_YCsl5?=j6=xC z8XzeL`pHVn%)~Ml-Ou5E9&Y%yeT$SoYUX|p-tfUFdw;hXd!B)dn1)SlHKYEisDDf9 zYul-Ob7Ui@K-s8BlQ8`dvZ&4ZY$%9>Wqar2MTXBONJHy~z9fbCe*oG?#zX)B diff --git a/core/img/actions/caret-dark.png b/core/img/actions/caret-dark.png index ce7e1e6980298b86b6eb5bbf9008ea7dfb67699f..8ac5fbbd1988c713a92c47041b21b948496c9bc3 100644 GIT binary patch delta 155 zcmZo*ddfIKLV|^vfq|i3=29P!VlH;_4B_D5xc$)o!9+vb3ZVd>5ZC`;FmvY2`}gky z$xWL!`8mz-0jg#x3GxeOa5!+GPvPAGAm7x}#W93Kmi6F4-UbB*mJLeW2M+I7p74TA zhIz(=f2(gW^{Gssm7-z2`eVwYGu^WqKbh`ue9pc*m^JCq+$R@-1~7QK`njxgN@xNA DkTE~R delta 183 zcmV;o07(Dk0e}LK7#Ro#0001uGS9sL000DYLP=Bz2nYy#2xN$nFg<^LNklVU3`HO42B3B41tPJ*QDv0W%#&pI;5ZC|z{{y9Rb8`y| z3yX@1%F4?A{P}b8oqhMzPme{iHFB7y^ldv wrOcek^I0gHgW{x(F$_z>IM+B&Xk=s%*v`9N=H1>qKvNhzUHx3vIVCg!03c;qNdN!< delta 210 zcmV;@04@KG0-FMm7#Ro#0001uGS9sL000DYLP=Bz2nYy#2xN$nFg<^mNklM_RP zT~zg0i{ATFRdE;Z{Rsg0oVK-A>AiDLtyKV6l5dfugb>nI3n3(uvc##DQlz!U)*4GG zOIzYpV~k6UF@CjOoN6x4S#r)l8c96&Uy&5&T$=qpGuMY3W9;4H3kp!gC6{bh*#H0l M07*qoM6N<$g8CI!djJ3c diff --git a/core/img/actions/clock.png b/core/img/actions/clock.png index 671b3f4f0c1daf8bbea5eb8c8881b07e79ec3b4c..9c3a284b8baa392ffcaefb8ddc4e6d0a124aa990 100644 GIT binary patch delta 331 zcmV-R0kr{cC8GS(@<-??Zj7Y_HKwe#5Pm*4D=`{#s6@1EZ>_n_T0S}~$Y)J(P5Cn2|J*#^6 dWZQ7d{{gZ4rE07}_;&yR002ovPDHLkV1lh#le+)_ delta 431 zcmV;g0Z{($0@4GJ85jlt001BJ|6u?C00eVFNmK|32nc)#WQdV37=Lt0L_t(IjeXNU zYgADX1@Pb9U1HL#V31{#h{oDNEwm6M5V1>Z8Sw*13PlA4L9p}-2pas;Sr|wH7MgEi zCz_-ZEd)W+7{=n>7w(3)ndb3k=A4;#=DZXU>PRWg;uaQhx}?A1BUU5g`v@Q+6p}6; zVY@uf<0`J;A|7K0_kYkiz*XS4c!wc|O+%^Q#C6Q#Jzh2>O~be3vhYrr5Z+xsp#P61TAM?HPvOfmAj|j+E zYz~7Kf+0>}6VH(j2r81hWwj^rov&d5m+`dJRvK_b6qZqu2C~BzF)ur``JG=!#Lv3_ ZKdxZutm_X>mka;^002ovPDHLkV1gp@!rTA= diff --git a/core/img/actions/close.png b/core/img/actions/close.png index bc0c782882deaa4f9ecf1676592ddba0cc9aacbc..0d8c89a56e2d88463f52bb1901ccf228640ff7a1 100644 GIT binary patch delta 181 zcmbQt^pA0ZgaivS0|Ud`yN`l^6mzkYX9x!e$L)vy4<;Jg)++}1gt-3y{~suY2iz@4 z2?t7Zl?3?(GjM6eCp64oaP{l^lE9@vQA|5Jcak^ik+JPka<^66a8%<`UFHW1_`^CZ>s{m8|v7+n+4k^qfbR`gVY%Nm7xN z+CWK3(o52Gc(DC7pa2Fwz!3aH^%*D!O#?_Fa0Q+~uJ;|BE&(CiE{L|qsxAQ)l1~8n zEVg?K_qNbI#9!9f&R`}1-oR*k4sFiBSQ9K!p#T3&8*N72QFt&U+W-In07*qoM6N<$ Ef+jjtg#Z8m diff --git a/core/img/actions/delete-hover.png b/core/img/actions/delete-hover.png index 08b15510d926eaddb2c59558120a8d0166c58486..048d91cee5143ce826ef9ef3d7619d835bce0877 100644 GIT binary patch delta 181 zcmcb?^pA0ZgaivS0|Ud`yN`l^6mzkYX9x!e$L)vy4<;Jg)++}1gt-3y|NjgF!&L@` zD`4_6m;q$N(V~@imH{<$l?3?(GjM6eCp64oaP{l^lE9@vQAV4e6hz;oLOw-mx6z)5qz#wg64Y60j)JzcUFQ_5?Is0YAP!p~kn$x<)_7+8=UbL- z9;ugy)K51^(l$%|AcdAVNFhsKN!l(N2ws8p3XVmJGhU>)f+O%=ITy|K5CreKAE&JMnMnpUG-Cg^~^a+YUsZ~gyg`T=-d Va=38_Qh5LX002ovPDHLkV1ftjbYlPj diff --git a/core/img/actions/history.png b/core/img/actions/history.png index 1d138b8cd5a9e77806a4395bcc78e68eb2b68d7d..3234880b25ab2efa68f9ef244876eb37d17673de 100644 GIT binary patch delta 247 zcmVJ{185RTp007(<{K^0T00MJDNmK|3RqRFtkug1gz)3_wR2Ufr!7(c) z004mDM^d-lV!6rUN}VE$(PlJ$WkB~MWMfy7@mLJvM;N6@eFNnmNV?5{zK>qdBS~W3 zfordZPAnynB(}Usl8o({j3oX_k|fD)Bz}64BoDqM8Cj6nk>t{1%s7|ipTwEu-E5?7K}20kUp$RIK0S#m4ZeM&y8C4M-T^vkre;{002ovPDHLkV1fbiYeoP7 delta 289 zcmV++0p9+>0_y^h85jlt004F#G(i9W00eVFNmK|32nc)#WQdV3J%8v)L_t(2&yCVQ zE5&gX$MKh>Y!-{jLMh74Vze2Jw+zUGkd6J;O-3wt5D&sAMan>V29j)dxOCCa^1F5J z@x5g@!}okX@6-4EQB{>3SV9{&=;8rqSQ+vaz#a5Z72*qr824A{ zqZz;nyaxSlAZ(@rpV$cCBu-QD<>_2b|&-HCzVm|7>5J4R-h4|mG00000NkvXXu0mjf+@^oh diff --git a/core/img/actions/lock.png b/core/img/actions/lock.png index 511bfa615bb4b28755140658d0f868cb3fe411ec..dbcffa3990f7dace24aaae6836977a142d57fe47 100644 GIT binary patch delta 144 zcmcb`w2g6sq$mRrSj||l7f3M{J9&n1JmZRK0n<8HfyNsB6%DnfE(`8RwmUHQ vFENzx_+Zw&wl}?@ImL=g#Otu*%m4ow_OZ4{1xKkp1zGOt>gTe~DWM4f%6vBK delta 310 zcmV-60m=Th0onqP85jlt001BJ|6u?C00eVFNmK|32nc)#WQdV27=QdpL_t(IjqQ;! zYJ^}AgPWT7B0C0b!qA1Wb?N?2TqTJ&TP7^2F;fpKfs{jB107*qo IM6N<$f+G=zFaQ7m diff --git a/core/img/actions/logout.png b/core/img/actions/logout.png index e2f4b7af12ef73d2b72006d461bbd731f7cf0410..e9c89a15a7a396afe0e597fd8934709ca970ce7d 100644 GIT binary patch delta 351 zcmV-l0igcn1gHa$85RTp006c6H|hWY00MJDNmK|3RqRFtkug1gCrLy>R49>c(XmSc zaTvz&N0FeG3T$eTz(r^)sHGwL2dtqY+#1b4!Z`xTObgmmFV}*d2s#(iYccgGJL~F+EF$Fv>dDFNZo|s z;5~~fT9|@lvkvrst05S@L50Qp0O;fy@H(VIz_#0iTeOFS@~>cYSVB`E*3AJNwvbT6 zf<`dZ*ck^~407;jBB5^&uC{`yYlJy0d2~G_WVmp?AKe~l!^Cuv(8nk2z9<$2n{DWR zA)%j3Xb~?&`twh~@cJ)@q_O}2 delta 541 zcmV+&0^y1E!G9r0C74?fp|l>n1qy}j!T1Xb zO5(NGHk-H$yUod85pGy>Ky=_P=GM{yhn0NdN!!xg~y{R;r!_pe-1l7A%gBuVDQwIB$Z0EdT% z@d|Kuc9sF`?(RM*-SW4*ifijxmT`J|ngRbja9tNk8jr_!ORs!QAY;tKIF99c9+Kop zQW%Ekk~A8P-Wy}gZQg8dZhqO=*iaAzla)x*>GT7@a5%(qoK9Jmf-9|~qay%jv)QMj z2i{__xB%#MI(kbvej)9%-6lt+l}GYbNIP##%cgA8DG}G)*t3SZhPzZL!Dv=R4n*^iI-qNslEV>9?dG fl0HiMQw;wFd-WMT4G&Pe00000NkvXXu0mjfCdm8< diff --git a/core/img/actions/password.png b/core/img/actions/password.png index 5167161dfa9906bb6e822dd849bc94328800feee..edcafdd9bbfb7b6c11f12e9b93f2be87ad1e282c 100644 GIT binary patch delta 121 zcmX@gc$jg5gai{a0|P_ST=7ppin-XyGlYYK^l)1lOki7?(?h!xC<=TpyF4tlhY6J0 zyF3iKfTAGxko!Y_iw2m0MT7gpnyn}bb~O4tusti6FQY1>Dwl72*85>sD~f{u%CmR* z-?u-ny+?bG{dwO9eh)47C}LHEsfY8WFaK!*RN&(Djy6L#NbkDdiORs}#M@@Ez%+>N~Nxg3WA tpc18%OS5krpNLZdP>I_A_Ww#}7yv}2-C?X;uq-#RpA?g~~u-K(2 zmcv+-M1?i|OYC`Im!vn84j=Zs-{;w9@7~Qc7z|AR;pf6+S~Z)^b)aKV$80Wv#bVj8 zTCK9j<9TLTc7$M!8GrWv6u`hLP18y!6w*aeyjNBA9Kjkh?BNViz%a}q&+}ur;chye z766Aq0W<933{e12c?gHY6G@W9*#XS3hciS$GMRjdL?V-FwaU*9V1~U+Ci6rTR4SF* zXf!(EIBt7(05j}08jVY$px5i|Boc{nFc^Ha+wEI6n~g@W#(yjxk58J-<{nW1hqc^p zx3AObvw%7Qov?(%_b9-oUL1MF{2SZ%F*FzA@K8)^tz+u43k!J_PXWwugB}Jwv^k=dqM@sytCnJQ z2*jV?3JoZ2Hk<9C4}tK3+gbDd=KEaEgggN8?RROjffcM`ZrvCDF#b;3jqryMn06!n zPWZ#N1CKeO;qWJV@vckrf4BA>iGCRUu7I`g*+_)IR!iA7#A~7z4 zSxnZ*&_KfIB4V1t7r(_Q*m=ThD&yh@59fK#x$k@4%gyI=?lQz;@vcZD>H_F(x&MOW zL=uT4CY4In&~CT;m4DT0Wx((ES5Sk84D{Ln6y$RGBeh!nO{rAw%Ve^*dcA&Nx7!&o z7!0SVDHMv28ja?JvX6x!!T^cUXgqd0oy_5I{IOUpXV9zANq*6=-_RzL>4XMdTfM@S zcDwzKj?I9_;~5u=#V@^H?*o8FP4GLN&U@;SuI+#f-s|-;(0^z&x>UPQ+$L@j_nOV- zzTgJ}ftSl2s8p(5x_6h3HSqa-ESXIHAj5gd#?A1Mp(~!E2fbW6oqie&2AM!UpFi66 zWVu|fx0=mnvpiQQ6rO}aAtn%wMvu1*h(sbst6AF3GZna zwf|r?nDlnC44P^$hQr|-WI`@3E*?;iXl=lvaF@6VU8z)_ zr&1{f_V)J5_*;n^L|~!0%>kQO7n}aK?QOZg+y^J=pwn9g00000NkvXXu0mjfeqS#C diff --git a/core/img/actions/toggle.png b/core/img/actions/toggle.png index 6ef3f2227b7a3bc0dc5eccf87a4158564cfdd065..d06e5cb32b5a7c5d3ae69bf421ef0e21f7cfd318 100644 GIT binary patch delta 319 zcmZo>X=k1wDbCEmz`&%Y;{&9ai=8|}I5;?NKlFbv(a@%zAu7Np#P$FG|3Enz85wbL zaXC3TH8nLA6%~1Tc_68*tgNW0sDuiDf)D{r2C70O9Y3QkpwY4=L4LsuOq|?;BFdVU zo;mr2y%T0ETE4#i_=!_b-+ul1>(5_Rvv;$BD$6`w9780g`kXZvY7SsH5-@S|!^xB1 z)%%JYB=66=s$+90ZN|1-saaF%UHAXK_50EF*TH+8Znt^czBX5PEY)Q^6>6%&@NrER zYbD>*RmD6PSG;1nTU)+ig_T>)yz}$kTu@$I|E;`chiZXT>*b<5=VXt*b+mD8(iLEg XkreJ+c~kcf&E&s-&S zfIw9*7K_EZ@p$|_O@Bj@3`(Wa(@ZAw1~>*Drgm_LAHe(Na(OZujV}LbV6Cl-NDFun zOD};_;A^yg4jclR80VL&Hk@xyHBO;z>t!)9d1QNhEfNHh+ z7^nkY6!j>#;v}GEt!;TJ#e0M2oNEBxl=?G(e!qVMw1F^+c9dIj63}(dH8y_9|L2*; mv9XU9$3{m*92xg9>}~4;N30a954lK;fzgZQ!T^T$&Iv6+^#S{b& faH+^hY<$JSkf6ZilWy;G2V|V5tDnm{r-UW|6DK6O delta 149 zcmV;G0BZl!0p9_T7#Ro#0000V^Z#K0000DYLP=Bz2nYy#2xN$nFgENxbPmR7%2*uC3|w0VIoL*&eqVJ8=m(&G0bcGlMdEH#r0!#i)O}20&zR`&S59;Ti(}rydpLqX00000NkvXXu0mjf D(LOzM diff --git a/core/img/actions/triangle-s.png b/core/img/actions/triangle-s.png index f36faef2b8ad8c706943eafbed40748ca791e5a0..0f533b142eba0be5834b67ac57ad78f3de822661 100644 GIT binary patch delta 137 zcmaFCc$sm6gai{a0|P_ST=7ppin-XyGlYYK4<&Z~vLQuKi~f`eonH@<&|Z;9mxh4e<;@ gKD-W17a3RkF{G|%|7o4KYbwY%Pgg&ebxsLQ07LIAlmGw# delta 158 zcmV;P0Ac^r0q6mc7#Ro#0000V^Z#K0000DYLP=Bz2nYy#2xN$nFgQLR|lo3$_Tz$pK9j zDhcunW?`D~8EjIICv z-;nW`(oo;=OQvS?si5_j=5EQmynU|R>rUq~`PW7=!qNeMZvSM;X+JQfQL0Q>YXZNj zYIuW~s;1cji@8s?xIJOIit}fa5IjBE8#w+=`a%^$tP3F(~d2DNh v!X{svac$9>(Ame0&ga_o{4A5ZUl4{qya=4fe!f61SPv|*TM~%SY`(*m45|E9!WNZIgM~)Y$aB5j>XD@3V0&9NN^YOEXHB1be4M7iL9<9 zL&OPkPrFr*#kVf1CXw9_$tB5^jI~RpQavnSuvllA!j z=dgSeFgNcT=_38mWA+G<41A)8#3IUDa zDGBlmW?&IibIEF$y8Gt4-+_kOyg>03PZ!4!jo{=21->Nx2 zxd_K{ewHdxz4yW^;`{>bm5$*`jq6%6`CNAiX_u(#R9~2SWP!G$_<;*ec^Yk7CHS1n xt=gVn*xN7Y@WQb}@Px$02Ejmyz)o=n2H8Gi#axkKj`)rmq(+XdsY}h91)1CLMrq+QPbf zBS5*k)_{x`9#)b$DbH45HHml9N+d}~;K;K{D$%ld37pgrtqE)3qJ)@}v;nRvh`Hoj z-fb2{&-on`5Iq1jWi)6*^Z*2PWi&zb0t9tsq#+alL0uUs2o*q3SH@QedprJ#Bd}gV zs|@WAk@YFIHY000whkoLk<31nzTSAr=8*3N=SjQ|;lE%^t}7qnZX4jwf5$hc!V`}- S;SK5l0000eFgNcT=Wjp~sA+GyV)Y{S=oM7OW mbCqSS!C#YDomji#d8{sZeuj6ZboB#GVeoYIb6Mw<&;$TMXF0Y2 delta 201 zcmV;)05<>Q0g?ic7#Ro#0001UdV2H#000DYLP=Bz2nYy#2xN$nFg<^dNklD;0@B(NeQo{rQ#_6j8s1MJn zGXsP`RsgP$9e@i&1E4}I01AWwFhQ6A6~qIu1@QzdK_UQCNczv{(_4`C5~dx)v=5Og z%mA3e762uz0Z_v`0GB233cxiy1B8V86yV$qe-5|-jju*xJ3YA~00000NkvXXu0mjf D8I?&d diff --git a/core/img/actions/view-previous.png b/core/img/actions/view-previous.png index 82943c23a59ca65b54c2882c4a2ea8901fb42998..97b41a195ff97cc7122b27f9b0245e7c3d3dca43 100644 GIT binary patch delta 231 zcmaFDw1H`YgaivS0|P^2NcwRg#a!&<8N$KAar>eFgNcT=_38mWA+G<41A)8#3IUDa zDGBlmW?&IibIEF$y8Gt4-+_kOyg>0}PZ!4!jq}L~3XDq@e!O{3WdYZdIhqc^1x^gU z2USd1m-Ac@$#D!WPy=!cOIUj|xcszS7HCHFEPJqpc~;Y6o(fijEeTRxiMq=U8_el@ tY02|GnN7e=Ac@V$%_PB1#4Y3z6N6csG2=`x);gel44$rjF6*2UngE&0W?ujR delta 283 zcmV+$0p$L$0^|aa7#Ro#0001UdV2H#000DYLP=Bz2nYy#2xN$nFg<_aNklW+7x3m}Pib^IIvNxZw`tpJj^spBmGk~kPUUh>tCdD2)&ZkAVM#tH3-$p@O~Fui}9oh8XW^waf^R6(Zulr&JG2B(+0hv zQ!qGfTS2*`k>Anr(W{e_la~gAAwV=%w0YFTiDDJ(?H?T-4V#Rn-vxh7xOWw>;Rgo? zZw-p!Nn}JM`S|#dfR+U5+B9n792cw8(ca#kIyE)*)9l=AifU4S6%1BNXqB(NSZCZn z-2csNF+Yilj3R%%UQa74D3bCX(HS|}qU!(_2ow47Cw2jyi&s!EEY=tlk=F&-WslG4@H zMH?F%C{V;co6(QPWE*VuGf{{)b_r{e4oGyhTO0} zz`%+_6$G2?oe}`lM~@y+e0)5a&E{|VwVfDSo!E~FMF^BuCHnZ9S|w6zO4+*y_Zg zw`YG2iL(^9Qd?Uasj5n`v9Z+9(7@NS?nRFp6B9#& zgM<8n2A&xGpq_ZULlF@X+z;+Sr}V~Bm#u#R$ekUOO9R0@Sq_1Yi*2C`{~1r-)6>)B z>FG()(a{Vn#)P%F7$Hy}ePJBVh;|o&J>wCJaQ0z~SOb|3oVnlstn8-kG3=>5fBu~7 zU6-d~l4Xds$GENn7Ld%%%`tc|5_mp*O99Ugx<3+!?@8#vi^Rd3ZPD@Km zPD>qR)TgsA1{K>J#$F!wrarKMQBi+Ucd<0PTQMNTSl+#RM_E}}>}gtCTPZg;m*H$| zY~+Q@&(Ei!p&?$tw6rva17K8FS93pwg@t@Ay%E|Xyr-n3a6S%0sHv&pYY21!5CASd z_MqC@+H*sP4uF%Loy~v*1qHE3#x^7j1$8i{7cX8g)Bp_U`uciWSXiK(oE(3iV~hj9 zqg`ibC<_Oh`!J$b~u>XJ20*_xtSGGrk8n>+0(0^XJbL7Z*qA>FI2YAt533;ll?S z9v;3lB04IEmGafMTkQ+R#XjD@e@~N>leY@#STN*);)RAofdyPx1b9xQ1Gq*w$8S9F z<>lqEUMwzv7#SI1;JUlJIedSYmX>mO|Mck-FSPWGGK?cnZEtVq)ChGSKYmOfKYrx7 z7#|;Jz>)h_R8+8`06f{p)2C0Vx3`xeOiD_kqM{-O1%`t8fg!+PDl0451DBVV^L)L1 z`#1A;tXkC)g#q{o_W>+Z3Th`9MPenyMu=G2Sp=(KB`NX@7Pdl=G}nIz5Huh{N(m&L zNgxIUK?@&4bNv?g&z)?~iJp_QbKP*rIeX8{UNiI0KmS^5@^_^)*+kxGhcBV6us$0u zT(~eeI5;Tzap}^fVokQbd-tx|(!MbP){TvgDyJ>X49Lc=Ppvy_-v8>-Zy%Dt#C-ht zv6$?4FB6B6TK4Zl5@3HDENJ4FmzN8K=g*%nhG8=xcuwPe{`|SN<=NTUnnY4S`7AJ> zfHf?OCGXt1Q@YSLoclnxySqD>nVG4+S_qi-)2B~W2Ef^5@sKOPglRLjSn=}Z%LQQ1 zZ2cC8UBO~tH+!{-aV;|U<4{>##ua!g<@tlHZTHIB{>_>3w@811|Jt={gPS*R)>%2i42e7Tf)-`-ugW(-ml?3?k;X_TJNxy#m`rzfum&Gs`6o@el zfZo4YFXd=pNFH;}YSQF4ZrrGC)+E{@P2$$pRxzA9zALXRuxeY# z2r%5Y7}S5WF!Yb^6hXk4oGVQF=FOYI{QP`rc@xK@4|94>N2+VP212#~EW5RVu>*dK zifswYsmBQu4;HCVUKwnvjz#eP{rhUyPGjNd2hzd#|5uXXCrQu;!%os}R|0gs#Yr@E zdnIOR@PWv78Ycn}O;ThG;9xA;jvae@do`H>Jb-`ryng+<*cwp8V1aahe}AyEvr`~Z zHru}~*1IeY{c>OXK#7ID+q+1QEO_>|cG8|$n2t>u@AusaJo1Gc)1TNDX`w%ub!}~} z%K4o#Y@vTSWZq{na{R);{#saPrD0nv9E%c68?b3-k}bUp_|u4d6KHZ1xYrh^#CH?w zS^IxJ>}BiAZxMnP^qH(A6;h7llL=K{84gQZHshgeHyPo(df9f>B~RGrIi`#Q6+Hh8xF8cMSD8V^Ngu_8^QG(L~cG&N60L!sxgWR^cix)4JZad96hh8S= z#~eroaG=^)aU7>CI*Tm~h$&^ee1x{_9)H4FfT>{U`>@2px&Ih;nv$T+XHO~#+PZ&} z*k$6xO``v}qttcTHtu}ki^izTdf5-aC1AvJ>q0C>Qd$0dU! z*e;ka-AEhKg{`-1u=AccO3|cYJK=wz?qQNHXcPR;L6KyzPC7W^T>zVlv&ZS;jJZTA zBp5Ji*fr-3^8WUaO4lC0Y124Q-j}{~8My^uoJHC`aobUCT4bEqX&qD=sbTv_%}zrS zbU)*!T>&;T)?BXhDb*8|$C7K~cZ7iQXdsa~i_c)`*iXEIk;~-Woe5cH?MLj8oMkWsa zB*3;zJ&9c=IdXum0~V9Iu&{qn_pq6GY3uNq2yx9Y^pz`Djy!1>wzdWP`{KomvJW5t z+J}Q@!mnPvddwETJ%9fEd9mcEte=pU*r+QhT?qoG#{eh{ZE=YNu(eGHq`wZ+Byr*0 z4<9}(@VA$R>!Xd;)zxxFwZ%5EUtj}#-$h0;A6QxZ_|cQc#xbQgX z_}|yC|1zxqQ2f&*L08L;6L-ZtCd4Hk%2E09sXU@9qE ztclTF*owBKgVnPjT$md`EDi^_v7;;zfCD}TeDdT;rB%D~0K*CV)3DADcrFd>ofykA zvC|yK^nUi;y?eLLB=~<$La-&NU0JjitkTO8C0N$!GUJ0eEy91;yLa6vmM99toW~+Y z#PA3NKukacBEb;}LLd-AA|~M>kG>YawOx$O*mF735iO0dJ=N89S+#2IOEq7IYVGM0sPUAM%>{rakM~vu9ghA3uJ)`M9z8Az6Q2XLV~$4SH_3mVqs) z#bxU^377|X0nQ{FWQ>>Qo5qESvjvI>VI3AYaLZP50Wg{2!ho^5#E~~|-fR z7Z;m%!Xm=7jH7j%_dB4yfB$~V?6TFmv=b-+8Q^GJ?JdY4DMcAfkJYdukYTs`_wQeV zm6ZAX`SaEnAzptVw0MjW#uOGVde&I0NB=RfF?Fy0lT$8CN;&~AG63e6FJEqT8h;_& zyC!_!oUL`j^uj|V!3x@a@3noFZ_Ck+bufu-5@=0i+duXyd#MlbU{yf3%_|Fl((G*6 zzyKsBW_?o*eQR-$2I`VD0xXXnJ=(qpj44HCyRk6V0&ssG0lrweQ~P|%bN%`A=jGof z@cC^!-Qe$JPd;GU5}@n?{syojcKQQU#>-elHkgrSm*e1jn$`FLVlqH`^-DW^XL0nJ zA!Kk!g3OJ8Jw<4C*XJDfn;cudZ53k~w5Ly>UWo*C3`7}|?DynHR&XZ`s#AI3SGJ6) zjHSlU&wzi>(HP&GRO~|&YfF)`>-wX-dwDf{EHwG7@)sag38!;iorI_kJBL2|u0xiXtfG z64>6dcx`F4S?(=BwT;n!CPTJ8z|JEX(@EZdxzFi-``In2@Z|fp8~LJQu#jj8+?FCuL=y%ZmiV+OM8hLNzzs)hg% zb?8se)lbi%t1T$<15nhb9t%>tcpF&r`dPcwY2lTHwo78nu?JR$9uG>In&zJ2;1Xss zwvGNDRxfKsy2j zMgv3(2!JsoKzlxS5%747*#yE;{yDlE8pIc<|u2ShbZ%UttoA zpmS^bU4XxhhE;Fuq&#=hE;iGi+)u#hlt8aj%CdFR*AZ_=txNNxBc=CYILtQ}Q=!@) zKYncNLmFt0G2r{<60_5kf4hGxGUwz0sez@`-?(X?Et|aYoa)eKtj%96OscQ$Np=`l z-#e8{&R9h0O3Z8*;9oB9LEYH7-NSa@;_3sC#^%+lS6iJ3X&%P3D;OXB-nB4~7MeX~ zq-z=mIx($CKkLkg4XiUHt<`-l2GvZ9+XeKPqDWZLu?f6R44CA6mlnXv z8k1oIdi}~;4t#%FbS8g-uB*wvt`6VN*BV)1)5B4{jkE7+N?6gTf ze>wg+$K}IXx7bP^N{d#ke${%aQ{&~9--5R}ap1+vf0G?Assys9Be-@n0W?hgj`Lpb zfv_6Op^JT6&9Hp7gICgMY?DpsWaKjx%mdcT-Ae9rq0uDuAmGDkJSNIzJcsUZ8V`B_ zqk8>lnZ19$7cc8n2XJ(#6L!gFmQ4py)I-8mDgkf*IgQ`GdrwYIf0Mn}Z?u=a$KXN4 z%LCI}WhWL#Z2rQCO=A>i-A?CHF)Zo_A{oJ!^Jts2vq27z4s**#<@wGtt(SFyRc$DO z<~(69B-@}8gr~D6w^kNGwglJ{+lq?|7vCyC%2 z9mnl+hsv9E(r&d0O~)xUI$inmftmg`n@&Z4(5J}=9gQ^s?Jy?U+_7$wee0qL+x0!g<{WDhmHgn8$@aqx0vTI`)MvxNcFJHm^me z(OE~5!pb;siHg(ZS#}O+O;B|WZlQUkEEo{THdsyHQ1o|%8Pz{{NTmp8Do*PR^~8Wc0oaSNov0`ClP z8n9~JvROu^=YSQJfYksIHdwd`9Cf}DP%Z-OGJviESbbhrBlXE8=_TWDkV1Q*OaV59 zkF(C@c>h(s|0!)gt#Mk**Kge&U`rV5Uc3dx4b&43(+PQTYgR_+qU2rPY?|+TxB-7E z>7*YWb*JPDWMZdlssM|MY7~L5TpIRX?54>_^7Q$$ECBl+%51>0n*}Ue2v|oYsASda zFf1!FEGuVNR-zulkfLIPJ6|O(X)1 z2F&1^g3FjBQFw4Z=AS`b{Rs#95GH@B(}f00T?i*VPWFd`@h|g%UYeF zt8hzsp=_lN#*!9KNu{pqmMa{$bkaq-IIUnMdJV1>3rO40BwgLkid1{dUiypTYHyI$ zXX?fB98vZ7^!A+DB;%cKI{6-D$NV~9%de}<&5iD#!LQ~T% zvZmc;y!eqVNuJ22Z3$GwWCsGybO{rPxZHmrE8uqv0@{zD`DxAHOD}5z>{P0#2--+8 zYf8+u1P*9piDq=iw_%j=vj<+*(VJB)JCS&_w8noCk%3g6F^aVS000015EM~V5KsYc@xBmIyz#yg z_2&_`9{l{oxG{&gW7{xQ*@rWAZec$(efeHdDatjN~E-Wm2O#k{*%rn&V_RQ|g z&dl=qP9@FGbXQf^@zhh#_ghticj={r$OND@0n*FOSPrG3SkE(S)~u4IO3zmNhLcE#=lLhmr>fGLQpi_3G88uCC4u z-gI!q()y*7YpQGB2_84bh{UuX0Cw-%n%ZhU2b5fHxpIH#T_GFH>Z?|*G8=8Q5g;BL z;BqK(AzoQoX_hZvj&>LjSY{U8N>C2vumR{No*Z)|MJpU?BI()L!FdlRq$hU)MSSilBXb%5ZiLQ4XGI%32Kv&SBLn3|fJ zw0y%26MiTDIHbxq-+W^hFJ6p}DS888aPr=K2MB-qUkfdK&Q@lg^RB3N2s)_bgS5Ba z+fBf7)glW7*vde|#&}RDzyj7GLxz|$&N#zh%;g(KjvQ$odgvk3+}vzCxR`-=tz5a% zE|}!{E`Ybi7F*cCHF)q~J4j!9?X^w-ppE0=H$=pgg;*I%24hKAI;XfqtB>Twt|gU8#b039gu{VS9S9_%LkP zu#8}>udg?^-g>LK{`%|9-FM%ea;JsECYx+xHrs47`@E3lb1$sV%{SlNoPYlL=Ex(D zwBH3Fc}=+V9ncYnI_e&5y6?XG+WJ;kSDSwwcihp&apO`4z7uxXVFwEebQ#adgS`6o z?Q2Gj8kMRq_uRDMvXjm&i(6JMo~ayeI`X4`7+jQrfwlei+uO47J>1@WS2>E+5819H zu_iaRc*c_)NYZbQM@LugF??#r9e13KmrbWK`qeRoC|4$?0VInSEwa*uK?3u!mjZug zr=utXD=(A>05E&7gt%nM63a-$d-c^ckLRS_YOAg6U&>E8cqe7$9RQNQJX2cI(f$n1`Sa%+T$?HragcHN zKPfNya)0BEH@5AuV#Nxxbm`KPNe6!oG?Uyh7!PZhLP>(I@}L99j2V;D)KCoX1$hEe z%JTHnPn%8GD=zW@Gv+kxZ9kGJ3e7*9O$gw5xy zv(B=g>3lIO)BAx39%%JA1L4UhpR}I|ybFK;@VRs6nx~$6DmBn~2f#V;#1nrlK(^d+ zOY`lw-x}PI3>4x}rc+Nn)q)y;@%Q=XpEv*f^N%^{q?2qLQw{)6x(`46(1Mu(xYu5L z*_n$tl=F)(zOeZod+f3H9^icLx#!F;zx-l$*<}}V$RUT=!8mm2Q1jk<@0lNd_`&8? zDh;c!-YW153k)}pXPqmSBruqDV#tWOz+4%&`VfrnGB%otv&YWqPth<4ZgOObJFNP$5ZD2t< z{>m$_v>+TXV1Q*9$_#%Hcs_98Kr?5~96K%Vw%cyD6OjVM*8r2w)U?iLSn}}054XCI zX;}9G-OoS&Y_&6WWgx(`fBf->jRU|b6N3l20+?W0wJof;-FDkq0P~EgpTWVbz+j-< zl$ShVTm~8UWl%A=Xji~%mplWuX1XUX(?5Mi`!h%Z|Jbo(%|3to>|+Nq@ro(YGDreb zbV;CmXm~15Bjo~E*I)}5yikq7J785Lz;D0(W;>8h-+lMp%?mHQU>ODm1;j8606pcD zQ_M>*y<}PT;)^d%>1=^fa)A5D2&Pc-Kj)lt(lj|>K)cc|d`1ro@Bp0r@D`|C+-J}O zJmR4}DHmWPE^U7-BaZLfCmojzJ9mmzIo(--ytx3i3^sO7z4_*wRtGaU)NaMzE1hE4 zL=<3+Ur>g10Vc-DMX0+BT`Y!$5t$ZYPc$BE%Rm93Ox=KmY4q~TFSpFfs-ScsAixa- z`+oJ+S1GnqnfdHm_Gm`p{{H*#DPW8nH_paoz`*EeXk345q=gA#U`ZnKAq@=7X8`rt zXP?;t0q9|DbTwL(w8Uj_$aA2wDJ}P@E82a*f(5qj09*r)wA2+=XQr7nX_A!@02L6= zn>Vi{iww5k{q_A0f+~U+_ZvQ9_|XA-jDr3PF>0vPHrs4tbr~JXG?I(+pGL#b*mc)k ztrmlQ3cY`LAS)b8nNEkT@R2et(!q2V-U0vy%TWdbaRD@)hXy1b7eHVd)}Br}n!K3S znRWpyh6_xk=i~!0UViyyn=g3+B;vsCdTOqqC&#>OB-f5O6)1yI4b z0E;sH{rBIgMH$+cwB$=(3`PQRL=2RJJSYe3O@Dt9A9+FAVtWcS;F?x8`SnZd->9#z zpK3Q11Qi%E{^0Rb0=+Yd4cvubGDbPtjp_CF+i$l%lH`2o1!=6v%YTJvtXK!dPfK2D3mcmImZp+=s1cWb%bI$%i=P%U@0Z09Q_X z+M9p-kOfT1#k+}*Ye`H-nYqtj(vnVPQ5@dSXWVDV7vvbg17tjtWltQ+C>>7y6o<0# zOm+n1Bf^n)g27$vKpiQ=`~~w9Gp5h@PcY!0O!E>HS`sLqe5Q0)Qb=FrTP`{Wh7&-@ ziw@y49m+HJeJ~Wvrth$q3wk<>_@pOK#lwH_QHPSAIDpWNtM(wS^3*`#GwC$#k`{SF z`FIYvWI(Ab08H)T<}Y6`g9k9GY;GG;cLti;NO4HReSj<}!ZY_hr7*a{IO?Qfi{;kJ zCto*yPs#;LAuX=H`s&m^0odoZ+itT=8s(Ph>OF3`!pxmdT(@olFxqv(gb5b3;SPU9 zTfg$kD``NNi%AUXzAICGvc(DaU$_h<+uz_vcnLff5qwiLFF{WM8}&UGz@qV7C%5z% zj`*JJb12pZ6cz(8pj>m({PI ze)`F#MH91MfdvifB~J>T0_uqN#lV$ECQ~`Ps!O&u2&ZvLsk`;e2}gc5KWs;F+*>DZ?%Dl>i;RCWat9xLu=Uf*v%v8VobUXN@^(mzy3hE`ppuh5yh6vI zWBF7D9Q8Q!%rou#@NBT8tGxr1jq>1PqfCGR-!i^le9+o7qivz=DWKgbGhk+knzo!W zWr|&0;~vH+ZACdS{%8l>V{B0*PSl{z7eg5r4mKpfx=futSq%P-Rm9y)?$NHO$IJMEORqzSM!Q!sxYfBbPq~BH!yIy$m72I?z6@yc~Lg@ zaR4@e&u6)@$PZS=e>{JA@?;BC0)VG&X)i7|`LNKC%W{18HEfb$Iia|rNrJGJ&BgBu z^UxuLUw{488Y(!(@hQ>)+9N|44+GwO^Uc;j8^sV%PbSavg|ISePB)o;l20Xo7zV!ZO^6~>VP|q`~fR+g!r@_ z^?2lwN6gfzQ|-GhyzoL>*Aq@S!7jGI;yu~bRZ_Q>t3gZc)}mpxsfEDQPba`UfEU2g z$uu&IC(Y*?7j%CdQy|;&U>z)Qz|C$Y0suy45MV&DIvYo>yY4#M!L$L>?u|FzXuT5* zBA6EAC_K&c9iZKD#~pTO7gH^Paso<#4B*hVlo$B{BeTFl9GD(fgB1Z8?6%*2`=!8& zl)2}gdu&};;st~Z9@+@TWLcP9SZ-UB5A}zEX;actf8>7@0VYK{0ba-eFkf}mRW?uB zpOvzFS16XNft`)zTw!#Xet00p!fOiYLFkB8_I@Bli~ zJV1k$*=8po0unk#3j+%1TLuTxfUScpvjP^y0T`Le4GY6s0Gt&>x5a;(07wBWvPZ@k+7dvKhOz_LAAkJOmJ3kPUdSLmuUo1o=>ZGiVp`Slj|(oiAZ;ax`%G2D zp_BP8`5`MP*@c}<^wPQ-glG=~Y00A&*6A6Ev3i|*C%A%FBO!Xl?Y4K`sG0@o0 zy62vIT9yMG3?x_*ASo}c2C5#si@K2)GDthaR4&r8pMgy{I@hI>5Xys@gF5p}hb$SS zTBy(tw6L)&m!i@XMG_Qaw^nZe7C>PQ!v=tk1`8V;GL~Qjc5KPl8J03(!%uE6cPpX5 zqAPz~UY$mD-9cR~HPhKh2;wpI-*U?>=7t+?umg+$>!Yg$itu|ikaTIuIP7=Uul*># zJ7|?oOR>sVZ6vRNwoshweodKWs(HlP0REqis#-o9;8LH zlAd=mn2-A{8(~uzKa95_{6{=bn46 zWnl6E*y>;af_q2|?4A^WO*w8uet-y%1b+boMihY6Zmw{hai!t3N1p;pG$ag*X8{l} zP+&9x5um}00Gjt>_}~YnZdmVl6PbANcO7sP>xO@IG36#b zzG4^~zb{?^JRuBT>c}Dm={Qf;(}Rj7J0hbz>0H+BX`pc7`A!3gd7^+PtF^o3B954Z zfIrkdORs<-LC4c+fDR^QjozIKVIdd;0EImX93BMp^5eQ^x$r^&Fo3Skme=9ohaXN! zji?<`u)2vH~Go&?|M&YJIZjy6<4He04|jkLSV3ImdV%X%6@7#q+<)EVQJ7q z4?VQgS~VjPeFc-i2vjb-{Z4?-MZ=P>*opW|{ZVX2dE|bQbkNT!$+CZC(>X`HIclwK ze&|TH_rY*5UwBF<-80WTW7!93KzV2be7|yuY5#51${Z(Nks7cR`K#S1A5%8+hW98B z$_#7cFJ_sPx{^k+gLdUPr*e@q3?k`Dn3-7s|FZTykT>kC*#mi@!KDj8(l*yzbB)at zLUIpdGAqzN)H`Zm7HofMwva1bu3?}Z_wKqmmAUiIJ8i?V@00(2Dg5Ib#FHPdyX7J- zOQz&c$HDA$YB()y0>iR;q;+_8qy`Qhh@TQB)ia%!(orH;=eZh~)iDkqQhpgKq@iOo z?TaNYj0oE?`v?R&9iWx8a2|XI$kau3)vw4<9^MP^7!3Ml8t#8pD;Xk!K^?MYMQ)-fz`E9I zcLI)ccUxQ((8Uy53DfGB3p|||pp)ghWB`O&!(~_jUG07X(E8R2CS>uyE|*885p4@&1`wd zmF1>!<11eP8vePXp0-~&&thz#iZr?k>4&AW&^b&kSd@Qq8@cZz4mu6PNS*C!Or}BB z#?eHY-ijGya4_v^nY25GsHRTsOLg}pl!GZK!`f4`!KfTEcK5MUf`^kvju=_cGdt)R zfR|66u!Z)6mLg~m0#ll-{_Y$vCmvHWQ?5>|Vl4g}j;Zu!p#9MP3l=U&G_Pv@PcYLK z@6@cjE-rulR;bmEVg()X*1k}HDwgf4VUaFcqLfRhREPEc%|VWUXt!1oY5l)t3KFa5 znodSdITSY(b>W~K%Av<(m*~7So3wQNMCyko0vh(p|Kof)YzR8m{z$wF^N;!acXj#K@Q`OPYzOu1#g|%;!k|42U{=DY6@y*}!=B9ohv~1;;LvH|8er-H9 z^>}R7GZT%qcT%Ig|>l+DprEo`w|- zrcZw$2^!|jF@D%fz#-9wfPSk34A<55F^d;1Hf`-~{{#OOz2E8UhNj@7`QqP6BFyag z?d=aLS5=!O|12?H>)KW?X>^HUO@}c{V(smI)5<2VWeqZu-^rOKYU`#`8iA z>UFDu*FE>v-}Rzlx=ap;F(IpHqp~e@^}D zd0hZY>=FLrr-sXVw@uQ8gF8p}eK($a3?@DPy8U)0wMEo)$~Qbf{Z8fb-RFKP$57!z zY0@i}rQUwzcegI7@BCOtORHJ6YNhd5F7N1A6ri;Q=^9VE3;b0H^V^^`&40yf>qdXJ z*;AGc5mF#mzI~Q@kf#5rSj>V$APME+Wdf|{05+K}`B|XVXU~N0x!=>k8w=$h zJ;0)-yY$a~3KZ)=mq-Jtp9bD_fJ*^Z`t_UP3Lt(uSQ0L9lwSlWvjMg% zfOZG4seEG83UH^)NS7G;W^&Vg& z7;A%=1^oh~^FvJMCo5NCG2&(W+MA8-S%+(7AW7Sr8fPtUH}3^EF}m6XScGb0W5Rsk zHLTcpP;1LcrvJc=I^tEv_hRXQjTIKKv8;d%NrH^5nh(RqIx}o6nqgxR@}Ph444XV^ zpNU};eDoq1HjzKWhS)8Q=^RNAX3>P7QR_Hk&JT^#4Bt%>fzAMq1$BzAZZ<8A4bvB` zO*|6FRsI8prr>H*3v=j(oy`0$<;VcVV>hXaO{j^-N5*1a-!4a;*Bv74-iXcI=U%s% z!s{Ylr{`&!G@BOpGSt<}gKK~NETruy$*{Id`;hq;v%7qwpW6)5{gryZ>pOndv@~W% zdq-l~%GS0Y8#~O$!QJV>y*a_fe^S=swl-{wg~e|-vfX_1;Nqxhttr7KnQ|zHBx>7| zY|4MxvpBdG2G=r^G`hm{05I8d#7^V^N!G1OGH^MRLn#2;o|LG77DG2{6*iWHgO_1~ xjVG^4hh5972jx%-YgR1VmIQCw*{c5+U;wEdsO6zi6V?C#002ovPDHLkV1nHexqAQr diff --git a/core/img/desktopapp.png b/core/img/desktopapp.png index 182ddd2cf18891878210352e9ac0f34d7d89409d..25dae6f197a2f22308ced296cc8bbdd8dc4f9750 100644 GIT binary patch delta 2302 zcmV@~D=RE4EG;c9E-o%FFE21KFflPPGBPqVGcz*!oJUl%;Jw84@KR-V}KtMr3K|(@8LqkJEL_|eJMMpX=!O{YHDk1 zYiw+6ZEbCCZf3}bii(Phi;IkmjE#+rj*gCx zkB^X$kdcv*f0B}tlarH_l$4c~m6n#4mzS5An3$QFnVOoKo12@QoSdGXo}i$hp`oFo zqN1atqot*#rlzK+r>Cf>sHv%`s;a81tE;T6tgWrBuCA`HudlGMu(7eRva+(Xv$M3c zw6(Rhwzjsnx3{>sxVgExy1Kf%ySu!+yuH1>zP`S{f4{%Lz`()5!NS7A!^6YG#KgtL z#m2_Q$H&LW$jHgb$;!&g%gf8m%*@Tr&Cbrw&(F`$(9qG*(bCe=)6>(`)YR40)z;S5 z*VotB*x1?G+1lFL+uPgR+}z#W-QM2b-{0Th;Naom;o{=rlt)=I7_<=;-L_ z>FMg~f9mY)?CtIC?(XjI@9*&N@bdEV^Yioc^z`@l_xSku`T6(uA`Xz{pilv`!sHGGOewnr`RY=f{f2JT#Yh%l#t>uf3+7`d8Zmw0Q<(thq znL66y_c~`#{plWD}L(PJ3K zF=q6r5hjz#WO`^MVGtu9GMP+aA%&49(+I*OMwmv03w4xfbhuDQo5q9-b&QFyi3l}9 ze~nNh)ChHmspkAP-80(q&BKJ6uYMzcm{8mLr?v%0=D6K%*K-bQpLyfl?zo|*O1k%q z?*=r6;8Xh=WtZ&1R$*1{FrZ$ouRnHEXD#=n9#YLPpdJE@fPMl@D}H5}6(Fs2>x<(< z)C8w9b=L27zyZuD*_0a%EO$PZR_09Vf6Zpi+q8MrSeWU|i+{d66G(SHolsadZwRQg z>L3(#OZw9z;0;LXT7+G)NBMNvdP-6U)^{Z7f&={e^)0E>5zH~JU6QUO;L+t%lD2_Y z9cQJ$%R@k|RtHmW_EaoCs|Hd6s>uDF&S019@9RVi3;w8&GI8nlp7Lw@%z|I?f4$z- z`_U{@XYtzWD#0V&c=eQ&fmgcrN{4!;4?cCPzM)DjkgMBqSyE|olDinYRIf|pdu#Q) zc0q=;2)|Ck5-IqyKC>yC_%E~_k2D|7Yd2o$aV(wMG5FM4o#rFmxOC~y((Kr;q`>D} zVz5in*W*Ies9VYd%MHDVUzITSf8WXrCYe!x_NG*YM_pE^(It?8w53jBO zJA=swm0BX@P^WsZrKd+dW;mEoCe5)+bBokHHB6s`!3yw&|5GC#M*O#iNeovbS>q zuY8j?zL`C!Tfl>bU(UX|J?aRxyz&kD#`=FxJ>Yw~ukPi(-JzD#e^)b1sQ;6bRhUuJ zCSlD5`;3L(9a6s)h{Kn76uz8r6h0Z( zyt?YmU9*dhI%5E+bOMX_!>rB!$Od@-oN+g`1ox^s2Xzi}Q&s;3Ffiy{*mW%x{Gxd| zjnO{v#WulL@lEil<>0SUnp#Mm=n5|AIUfV{C94Zy^?N}6p2=t8?xL;=Qh(z}IDW+3 z4|U+s|H4kue_WmnJQAYv+s!*}MD4Grtfu$^2kWURfBr-E0qpe^9ci_tezA5%OCC%- zmw@XX_5(R5yHq)$ literal 4593 zcmai&c{Ei2|Hns*7$mZknLOm(IC6fVzMMVS!XO`r({<`$Sy>dB!p~9WnZUB zLdl-JhAiRx>i^$4Kj+MyGxxZ6?(6k_z8=r#d!mgDw3v`wNCX1Gq8mqW(N1ug`F#Z4QhX6l!@oJG13zrFj>YL1PCNiIhst|Xi^SJ$bjeA}5LlIdY~0Q-ocIS-B5a(<6((%@{~k6= z^(_-{0(l_^`$uSLhiY6t|6E(BiH?uA8*lKwcmMvczdQKEgX51lB=C)cNxWxoAu?oL zpJPKNqWV=2GT%iqx46jR_K!};=hM>CUW-J1QonWUR-yXx_!~J42Gd5;)}}WzGlL>M z_jbHvVq;6kbM7;7OA+Ud5W&04a@iM1#>?Jh4!FLks0jJ7pJCF~m>uP_G8SE0>Jst! zwvA1?j1#Nx%2>&@7JTiU&U9%9#5|>(TSP>JeUwBZSzBAH>FF^}PEN9ql6~Md6d7Y< zV|mgqK?L;dA~ton#^rkLoiE|)c^AvCwRq=@jgNa02$!_9wAh@5$clLwLBX?xS-nYf zOwvn-{{O@!B-W`^+x~3jw(|r6p}}|6V7N%X-fIR4Uom5RL`+N!&h;Hb1zyDCx$^Sz zF8EW6hjzH--1J(4_YhGrG5KnDX=R+rbOq5b#+}Jmz+ceuF*tCN8@lf zBO@a|bCkRX9}|}h9|m)OXJc{d$B(wV$C%}PmQF#(B=@k@)z$OE&zLzlI4&0&KYH|t zj)4KKs)|A|Ffc4FFO#;`_y-3Eh1rl#&b!>#DHM>Ey;k=iKAuTdR@TFxWYn-4S5ug$BUa)9YLW`@d4&7!C9@X7u9+QvpsLgVf#pTE@`*y&nPeqrG#CT`irpXVA`J$cycV9|`Y)M)Up z-FoviVh1P``@wvTIBvOw_I8}2&r-)&J%PrNQkKp)q!G(8IX9=}=O^#)?=NoISl8ws zyft~uR_e59O3eDyM-y}No=gRTyzdGR0@gfmZ{sr}?$o(MP$FoWo}S)%vMmC-KGYl( z5WKT+ra-c6fJesh1YDgWcKuOO(%qLY&wUFy2rA4WQRfFozI;i{&hCplEo~&4V(Z{A z+~Dm(%lu!NwTqiuLVdkLcdF#v-|gQBy(~rcfPerdB^MVLMn=XP4MY+6uFHa~&3l_S zM?u(yb8Ax0LAay$ibe+pPK3hR89y`NHONwY528SH^!Gb_t#xJOmW})J%E89o9)lZd zY`lQAY>YB4v26{dVV|wH3f>liDW03{&Dh%BPE1WbcG28Ca{%|PDd4)J@!sBE*pR`k zbib!hpKeb*P_3+~Db!8Ha$QlvVvkEoN+SBQmAfk}-ps?p)SKo*Z`~^W)^Goqno{uo z$p*cI5@~~i_K->i&CSi3sv+6zV%I$WZh4A}i?3~L%(O)?aQS3sXOA_KlCG9s%QG%H zD=YiqAgh|V zhK7cEJ-(a+w;#B|NXOF9(-Izjh)5)M71G(k6IQy7Dh3Nn;|>HO&JUN0{rIUs#}dn4D~C%{wtM0fK#uwdmSfpZfCB=9s;` zJ^Sd-#l_!~ktpPxol2A6Dy979Fihz6(Y=$-7C3Jrk?n|+y}jn|+1{|B*`<+}Hi)Hf zEjj%vyKxUxcA{GLcVd&1*$y2#v^AY%Sm!xK+vLBYj!k`K+sO)k(gvEltfQl@tIHr9 z9|$N_XXg11a9WyZ%J7`}FbE?$+n3dycFrdB-~n!Sc6NSoF)1snw=YX6T{%GZsb+kB zU0oWCpfu^1ZLUm9Ty*r{mbp}V+^5p(gq1M`j6o({au7s}_aadH!P@QBiKaK1;|aVCyISxc}o4GqnmueJKZ{XIQ`e0+!+d@pEveSQ6HUta=vG*T8) zLm9p%rsZHic{)oFI9F7ZfU@^Db~l$#&Mt!6o(5#@?QFcG zP#$CSpLqOPvB=NQkBW^w%!fu_nvZs{wMCrZ;P_B!{SK(F?tU@?!1q=fN`-|ktVm~HpZ&r99+yeCBr6ApCfGc< z{q#R|d}~2P;{=F9+5KV!FRxPyUV>m%??*<`IyyR#4g*zHRcR1JF5PETv$D#8rXhKs z%N0_3HV&>U1Z;{!cmY_~;Gc}lomTP@2j!yq`Dr55uasl~YDcS`a9UanlJ?#vi%KQ} z=kMZ&sR!4iV`I@mLJ=@<&Mm$WCcw>KEY&pS~?yn)m~&(pvfn@CvZL- zFJ=niBQ8EZY{&^jyo>w{c}N?2w=h(wn__?Ux$_^xg^`zNz^S}~f>RHzlZy*FsqsCe7au>%zS^3^M} zy!pfYgkX2Q+CB$xUqsp$kvbx$98mpHs74i3P;NQKy zh?irac4N?Enc1r~DwVCs7^Upr4rZHv&W84Sh50|=*xK59{AiE%@&+rMgy7Ri`hBko zJjetVPRCcM(bd@%7atebJ~+sN;N;}oT>g3n$8+r1F#$AMTUYmKLBSD7_Mqf61wv6} zbvZrU2i`?1qMht(~18Gcy{HU>8PfO3z{!R#zWXRAA$|&bN(^XMtL$R#*G) z(Vx86u`d7_qn%7N?j#RS54eNlx8|m` z*8pYV6devpOTARA1^8i5xqg~q_Jv7E2_qvTx7^+PtDS~Vox6Pm;Z@Ib`0(M$5pZUA zcXtGpN1PoMs2_kQ; z>rJ54Wgj2e?d@%_^{eyX-)JzLAz=n4CJjtdVp>{MULOC~*X|#|Z0qXe!RZRD1C~e6 zx3#s6G}W^Zw!p;3@kvId3}}oL4mPIL_`Fa9n|jV(bif|G6wGyPeh_VKU!h2H&3jBw^**vLOX58M z^`&1RRaKf$q1M3l_nbIQP3IAIc6O&b-ocwo>6&wez)Lm`4(DViC#S@m976+xyC%~b#LAfHhx~cR*ru! z_bm{8rx$AjQ4O{Lfk8oLmA7ah;RY`JxpLah<(62!c$F+{H9$oWsJbK$N{>GmC;zd? zl{97#f$c|P_e@(LHTvWkfB;TIqlr3EUtfPAXeU`a33JY&kB8{(-PzrZ2H?}5#QfU@ z{fmYWXr?=pK+7Jh6UyMH0%as#K$@kc<@D?LsT6rlJuV6DgnzCa4f_+)klzgdSz!I2*DbXpp1QJ3sj8;DOKc3*W7h{Hg3$zThst zb{mh1j#ewb_O!e_zNx9HlDEC9D+W@1S$TPc87DV4H`b~-&Q!F}Fh}J=z-C-r9Akx5 zivjFKu~;me(7RzquC%_Sr>_sYvjWJF({pnKsP^Zl(#Y6Y21P~1OnJ}n%uJr}@bENg z2LlCER%T{pRh58YvS9E4!Q{SFjG+>QBfV6cxSU0dw{5m3jz)h?o375f&atB z&!D6mW@hwr@DxxtQ;BH|Y_yAuqjvwS4wsop$Hc_=QRi8}@PKFcAXcw$t=j<8MFJ&( zJ)dfKtK&o&HsHQ9*HS*SA(6;?@d2yS{aSwx)RjMJr)2Dd5*+XN7K?xfUhVc7fBp6= ztD*i$5z}|(Em0j`b14Z=W60vTycjaw|8*#6{dzEiXG#2gN#f|l-_JBS+`a{CVQanb zazs>znEaWe!KBZYQBjTIRt5ilsc7BtU5<{rEL3Kwug@g8xM6sSt+ZqJqrXl~^z?R+ z3~cs;!UivLwz7I|=}a%@7gZBNj&IF`lq(|+j^$akza~#-x5Cde2yG1mT!s3r@c#iz Ci_HZ9 diff --git a/core/img/favicon.png b/core/img/favicon.png index 79b6795f6f6c3b0c9c6b703460f294a3832d0e4e..02936243cb13d8e7bfa816f2b577f748a4615e36 100644 GIT binary patch delta 807 zcmV+?1K9kK2kQoq85aWp002a!ipBr{00VPENmK|32;1RL;E^#re*t$;OjJex|NkE> zLLMzd9W6v1EkqqHL>(k%+krt z(#p=$%g)ry(ACh>*wfb9)Yse9*xlFK-q_pU+1%gU-s0Whg?(2?dt38?C$XG@9^&L@$c~R^Yiuf_V@Pp`1knu`1twx`TF|$`}_O*`~3X< z{r>*`{{R2~e~VNaF8}}l26R$RQvf=6ujTz2oxG3$00C47_by@Hvo5Q ztG6RQ=3;+<-07{#r^EKC?d?hDF-&|1MSj?*n*rcu@r>uhuOQ(PIO=#ig0bbU{KQY7 ze5e}0_4E!NYHwjB{SDX_p%b8$kMsjv*@K`J=mET=Aux6aFdhW^z_6Fof%XvSdjU8| zwyBExe}F*CT<^tT2y_E*KJ6(~(RF}pC+zLN_dBxyEbOwWq9p+Loj{jA*!!CScx;4C z71bI)cpW~T3)0sB+-cb-z)e}(gQrkMRTJ`ZqBYK$sj4XsN3yEM6x5d{soHIS{iy!| l!?!maj^XqS$7?kISGSpzEonM11poj507*qo1w^hwV1lECtg-+A delta 844 zcmV-S1GD_=29O7k85jlt0047(dh`GQ00eVFNmK|32nc)#WQdV4JbwcXNkldLczyARqI?0BU?fVw3!;RmphD1a8WZpU1Pxlm2nqr*l|v9IVv(bA1r-dM zkf4ABIRv>uK&V_wfI?{>I}^HecdKoLvN7>V-ln^=nfJHz9_fE!YBM_Knwt2e0E=(Fn$8&r;#;)1>=4N0A~VO_XikU( zbWZKx1K8!@j{6U#D0%e`l5`myU42#$z|A`tQ&ZE>mrA8Va73(m0JiLQrf*wa`w5-_ zVHj47!jR_X=3(dLwekSb32BUzlqb3PlWxbQ!tat8cFtZa2Y*oUwwk^jS%JuVNi2u6 zN+oLQoABXdBW7lmkmeLK;VCMs#3t(_%Lh1d?lSU=%F*<>9YNtSP%SK=tM@D7lcdNi zdX47R4r)2_mk79W3q5^<44|x_YvumF57ijncG z5TW9D-o&IDNC=E+eqM!ZQHeA!bb4Rc2-`y*zX#Z0=}4DPrw6IoyoqBH(_yL}N%ML4 zM#m>%x!2V&0C)1_40g$lPy9gE^J0?$NEk?!@b2f88h-}((%Hj$@QJLDIwk5K_=dEs z0-E`zDm62YCM8#$-TkoIf0C{^3xL~RN$ry+MCzF|pb^Cw9%sKW8G!5&hBP#+pk+-u z>KVVQO8~X?&Af-lCMIcZ>(tiK!&@msYH90&y!4I1v9gLPw6=HC{|!xTO8}nd!+8%Y zm2mE;W`r@(pXOUhR|{%Eto6P zu5AvS#=+zM=*5iJ^*bEsz0EtFXehXwjJ3TR z1tdliOMh&m)nN)NzMBN^zzA&L>epEBNlwGxs zRhDT=mTgj)YfPDJPMUF6oNiB_by%QvS*(Xrt#(nac2Tm8S%0#QS+8?Wo@~L4Xu*tW!JccvjA_D>Xu_Rm z!k}%#lxoD4Y{Z^u#G!A+mTbnMY{sN=$EJ43rgh1ucgm%3%BOS9sdde)e9oPyhe`sYygZR2UhB!CgwjKp2M6=lhwYwuOSw z3zwk#UyExH1*=p@GLxCtE3Z9=e;H81%#hR@B-rE2Tz@8N+g{&A!1?(&XK^{FTP2t- znGo9Q`n}g4T&@qtX-Y%dvo47g<`QxXi9~%lSO#@(OBcx)_3J!0#`aUkAW^qa*=&*wB7;eTNY5W3gf>{7S-&er^ P00006?dl&kwr2i?Ng5Vxrl*I@xW+jekc5^LNj@ROp~%DSkS$ zHWAQfCa4cjL;74v8gb*1!NC6W3Indz@|aH>>F!#=(#M5xbetfVE-sjhY#&} z9%=efOth$y^lKw^N!6KNeOXT#apRG}z|ye?<_1q$ix1nhk__neRFB?fEo~M0^zD7Y zh#QX#29}OJkbh?&(W+9iQ|nVfRkPQ%HFsNI-{pDU9$20Ye_XtRnVK2;_z z>P@;=o3kN(DvcR&_8b?= z{Z^v=h=w~G^eAvtqZb-&zs}L2YX+_!+uLx%y+3BT_6==EuypDJW~8Q_HSOA_U`_ca Y$V<3v{SRpXiU0rr07*qoM6N<$f(KXW$izJbfJ= zi)1I&S5lUQWE*1{>zEnKU@*49*p~)CQaaWm67|6Of&Mi5qaWCGRkL0qK!OZBx9P3Xc>QuG%@nA*Lj}&MRN2! zgBj9XK#M-*b(ANmMBX-%$sf}6MxOIJ$CFehL(ePF#8%bo6i-sAH1qXKH+dc6Nh+1& zPODb&I>VDxE{y|HC^x2Z$4+pkiqWD zXZFvSF{Az4_gH`I!*;$8bT0S3|2EF&`@R1@frQ_<-}&B$|M}VeXV>MsFZ;2-@4fq< zhwpv+CzZ-tK#l#UfO^9XH>g904k})}c;dD)Wy+{w!-mS8JGcG2aN)vg)ToiNXV0!1 zZ@f`$+O$!}jvW;e5~7=LzB%#1wrJ799;;=`miBl#bLM|cg!#Jbu2X{s4ea;DiWN(Q zrf%K3y8G_C?dSUS>#KeH_PX!B`*iEAw<=ezTmi57>Z`9->(;GRt5&VVZP~JAv*+cy zTD5AW5+zC~Yu2pFoH?_qSFf%|9(hFf-g~dgmoFdixS29#viIGtT|0Z7ZXfQwY15{< z>86|P-}!&@=U2UY_3ZVf@@ISM9|h{mFTX6>yYIehA2!##0ixy zU0Q$5n>SZ{e7uDLz*enVWwj#v&Ye3~8#ivWTJ`hKKUe3@o$dCXJ$q`+nl;vxPM9!3 z>({SO90*T6^^|`4=_d;aK=kX^&u#}~fZ;P5jE08vy=LHf>#eseR6vOaWcw|*++xq? z1_0WX`w9vQ(gz=Wpts+C+ipi2vK_7Kj#+=TYE?Usdi3aF|K{H4k2l_ULzOC3viqMp zb;@4Lop;`;rAwFUp@$ywKusyZ!~!620bBR(-R<_*Uw>W0hY#1_#n=3_Kb^* zvl@{H4X6No`|Y>eWANbl4ik;ZoH&1RqCMXB?b|hN+BEB<0?qjG<1Kvr=KlNdPg0}0 z!GbUN%{SlZKmYm9?*b^aJME>HUb2Je>#x7o_19mof&~j&4ZC^sW_#Y(UVBZ~Tyu>* zPI!2@KKtx5O_?%9!-fr0#flYw*AKO8*R~q8ZQHhqetT?etQ~MQYSgg61MGi0@4RF0 zk?)))_drc%;bHCAvBQFh=HOvs-Uv`$ef3q%nKMUu^X65PCQYpA!xg|Bt zcGRd*R_pEFz1sqtCr=)072JRMoe=y1E`TQ07x>-`7=SEUvZS7W{&@>7eZl>&UcFjn z%a*lPgg&D=sQ)>j8jX@Zdmd#iQc^jK6;_69SyRPL0Nj`{W31M6+xYvz2OrdvPd=%> zefwH7%l21ZdBp}IMDA6pRMEV7^Q>tHlHR?0D@TqTiT)~Pl+S1&1_6Ir0sijOr;iQD zwr<^OAwvtY9WB+VQz!cwn1B#1&#_!KzzHxeU%p%wDpW``(GNfTumzFN9M=VQPSB|M z+)qFK^ac9^R{&5C9XezO5`&8EHEY(?(4j*U`w8E6!GZ;L`#%cQv>C6~HI1H9$uVmc zGBZ>qpKPZbHx*R6KgoaTdE!Zmf|@>SP8I4pMmP72P>I2jY97B(Etibb?QI(h?*LT8-_aTWge4);xbXz0URIuLHGkw~@Mi z@B$TkGfKC=6{%uI%8!mzm-rd#v1ht^AC6S7gLBpN%_mj3Qb}E%E4$apo}|2wTI8ko zRbuEOm3Svgcf4z4XtYWUo3Bdaqx4k53=P~jRsHvc>&>H)8n9=IS`6xb*l#H1>bk427PG(4bXARJTh5U4LtV z6uCKar6j%U)Tv|V%Sq7RcH3=sjy<(L5b6xbtum)iF$pwkKSnUrpAyBU3c~i!e?4GE6g0 z&C=|j=jea6#jmP%`x?qyAWyQ~6mT+q$!rgE=u{jrRZ4Q3#644>k3II7)mpywnyIC@ zCOA0Q)+EqQo;<1k{rjirH86!sIiQ>1_*;T{$Lk-cTv%)(nB~J_RAI_uRh+g&6{j!O zJ>g4KVa8H5T(C%Q?+@3k6QP=VEKJjlgddx1{tkcBqO-F#|75uOgukfZ<`tDAPqr&& zGMVmVYLF>QW{0TT#B@?sME&UW>C^T7_upFx_UzeXze|mU!^|GhjvP5+%kxt5+|0-^ zwVcYPRxb_IJKq|sis8$C2WF+2OI2ys5>=kPR8{82s!GICRgQ>N)1@&Qd1$&8em_wW z--LfE@|($uG7|mmB*mPXtks&O=wsvb^0>!TrBNAEM3VWkZv@!TLZ?rkwxw&X&?J!H z27K|w7y9nI@9gK)rd54GrLKS};*>l$bpcdhrSt%~VxV4?Bd1EeJ5H76tVjg2@|<&E z2F;6AP~fv|PDZV~>AK*NPt}DCXoOEjbygSR>1Rm}It1)S5F> zv`urgdHrC$*S4;LZz-q@=`UTwQCRZB4?oySC*QKSq%<${^30{DMo2wSuK=iJhL2Zp z)CvRTIWVh6{RU>Wg+^kGEMB4NON=ayQ%LMewOzkdlaEeU!kO_}^^<|qNc>Ne6n}qq zlGdM{sQtT!>GY)D(%7Cl^w#4V*fLmm-H`91Z-UBqs_khk)A+OfDeiEE&w=EQJMOS< z0tL!c_ETg`Fyp)4$X7U4I*#)Sejs`-C87scP4gTfkq`@#z^s9d>nzgv9}2vmG$jzK{- zzoYb!zGlUP+lPB5aLtk>OOn^ZJ)%@Dw9o$!YR+6LH)^6nVpb}|KpC>=JeUT`8cUHl z)mR>^bmrxbS^(goQ+Y(W9a@**i{&QN zxZ+yyzS*78|9x9zJ$CF^n-PDYQNK!UY@quh%Rx{{tu5DxZ;s{Ryaa31r82nOx-x%I zff%qk2TNusXQXtHtOR9)z~^d$KmGJmJJ6HrWBQYOrM@;6nPfpi<1MBu*C+L6h-k~}(!9Y5~ zKsv!d8fs+93(^ep@4}usyP&()48C8FHz}=a^CX>8B50yf(&mO06k1wLpKwb#P3skH$bHS`Vc00hLCOi54Z}L47O>9|6aAT^WPR7gRDR zGzJFRmxYcLWK#%^pHDG4=fIU>PDvKrQmq2}sRlu6DBGxTx+_r67 zz|9HKG09yJ5&g0 z)>!{T!wg->>|98k2~BFWqb271ZGHFau+}>L;AjnikA02F$I#V6Iiu zj|`l9)~VUY>(pZJdNn<`LCro*P(PD|PpIEnU)F1_AKx*sMi~fa8zAQyiAIYWS#loG zRYo?O@Avi6uGyVbwM?Oa*M&)<@vwc@$6u_l!~}m6O+z~+^>PQGp}9!|%ve&OqG2)X zG}ct1HJv+vsr20!2yqFVdG!YsUZ6(Q9Wkl+zDeC5VBr5U7%|&{ z_Tilb_?%oPSrh+Yij@zn@p67R$3siI`{Nl+_@Ao zd#ZmL?_6)SrUi3{0dwbhFn0rHyqfPdaPC{L7N4wFs{awrcYBsgU9u0 z`Fpju>b?5BMQi=^URP4$%b(co{*|<$+p#-gEA7;RLn%a-;4&x=H=QXJ}phXSJ_(thl6gsehYE-yUIkR2Z@uriQNudFpTZiNyZIhniK@bEGRM7A<+3qw0 zi|X9^Dt{rmrvWK`BEA_7E$;85@;86iMdP8d53^v-m*io)#eSIfUw{48W(k}&_XU*! zMj8m;&-vn)@{k>U`9stOcuQ(fkZ9G$Eh@ zADR~5{Ml!p4fs2JPG29@34KB;i*uumajkG)QY7J@DNkfZD-;dY^v|RBx%n)f(x$ zYISwGLledIZ>opel+v|%FTJ{n$d#zonOd~pg-YWbs60SA6FBh!X>_cANUAlZ~06E;}*3!avsdD&VhOV*G5ik)&t)dIki;}{IFI1BBB&qyT3M;>!uA= zpVQ{5UA3)h7wrmpNP7*aM{2azsX8r{P$@)@8Xv5Xnd?uRA?<%<-wd!al3l|uBF9L_ zW6sgC07$1gpA@a;B3d+;^8+!jm}_9iUBL9A33+f%GjmK}#ccCE`9^$6{6~CFwv$Cj zYDSA(rgH_zT==>iF1-clB=@OJgWqmeyYIHB-AN-qZ&mx#+tfdDffm<#UF*vA(AwaawLZ9;HU&RvLH)Q|C!MI( zNn3-O>dBjLQ_(D0mFWsqFp=uvVPVRhY35&&60%y#vgAEN~|-`2{q{j@T;uhs|!eKTE&4_>So~oqw^?i#8ek%`|2kY-T02rp4 zV2v~t{w8@(0t`2^=7KvSb216!LP$QLga1sQ zke0$-@V!4=2dtBChJXP;QXeaWA4~u68vx{f@jv}RCDTD8SWVHQl+1Z^tLdgW>Ud_S zI{bgQRS%usYCdmM$FtkjQ9I1%9qK!OsUmB>r)A~d(6XRGiVNy%G-?lhRNc(qS9?yc z7q6)bxvp21^r^FIDLI4(%3E8|V!Szp^p9_j5g=U7_1LjvSG;QJV$xH|anA&axGnyH zZHj=}d|QM}+^$Z)Y}doTo|8@n(oP1_J_~=BX-@SqiYfb!VyX;QY?arvK4g%#R_m{k zcePbe?!wBM;orB&kNNn62M=1`()SgS{^>IcVKBuPQvsG*LB*1AFVsuWux3}NF#Qrh z&6is(cg<60eWZuA-HL_u^bYl25T}{dCMvqjNX@S@T+4%oDxum?O)2-Zs^=}PYchXk z{nr8N8;!fPQc|yY#CPSrRb&y!n_kKD{^LW+4l9 zRPgG&x+-n@e>I@K!5u-CODmDDWtx#FoeTw82BK*)6$CbacYmBLN;0fNyBtt=TS$9E z$7^Cxq~?~7Qbd(m>RRLx708@lnbUhOn+OCet7Dl~B>E<(BEl#AM7;r;h?Rc_USC}y zP+RSZvcc5L(Hk^5$mAKzFVgeHURIH;g-s-%#p}>C7yd7G@K-VOXim~jq_xNZr1Rc{ zcqQ|wxzv2sG!0y8UK<{?PCaiMqPuff@BsBBML>eJyD#MJVOLM-VRabbO;z=r#PmN?v}T1F#{jV$px%##$BCFj}8nC22%+VelCYov>j0Y)eKdE&_xlmX}2 hs$(RdZ_wo5{s&(`>HQAJJzoF-002ovPDHLkV1ip7F_{1W delta 6934 zcmV+x8|mcgInF$=b_0JJ!bwCyRCwC#oe6wY)%C~EOlBqvfh_EZin1dhR1{pGpaLQm zisDj~Ptht?tF}t9=-;+lcNCPr+FGr&h?J`Q#R`Z(2us+lAp53lvL%5)_HB~;Ki@m^ z(lJbsV9TAF`KL?UwPWWScRT4rf^ zQ%lJ={lKGTke2OQOr%80_fRr}81%?-wCDqoj*668QpRhEcEA}G@)wZ46tO}PsU>o$ zmIN&+TFPC)lfASoiu6rHYM~6#@}Vop1wPf%CDJDmsfBVxOJleGuX_Zf5vj$Jq@_PV zy*|$T7A z_xmfJo%5mhp+2s0`lpskXL@M3mKJ9MP|rU5Y#B6YkQ9Fx7t5hThwQnoUAx-C=c1w_ zY0;vETz1)Ia^S!LY23K6^y}A8F1qL@&(;Gd9Kbbc z(nPMf;tJ{By}PY5Cnv}Lrf=WAQm0NGIe74(^zYx_e&4ojTYC-P^S83Z#>U!vQRj{w zJM6jm_;`OAIB=j`eDTE<_b(_Yut2-~^2?=9pFZ|H_u_ozdZVMGrE}-b_PS=xnn`A6 zX2rAj?Ag;EXJ=Ni@jWwu z8WR&^=FOXD!S>l_pP3*3_{aAA?|=V$JFrKN95Jd{&5$8O%*vH3Ef@gU(xpp{YCU`H zzyJMjvwHPvqh{Ca-@o77b=O_?{9}(jW|n_1Uv7LppP4jilKJ%0Pb((E0}ni4R6|*S z0Ej1^c*33s$N+}pbI(230_67FZ~t1G0ndvszGy)OD2ERpZqJ{8{`vNP&IGvOh8yg2 zsTMbX``h2l`0?ZI`D?DZ#-1NKbZAALy?XVs6Y0@MAGM!(Hu~fF=bty1UV5p$K0kjy z-?pVwr%om{HPwt5F{0LwultM%whb9#&9@GaHQ_oa_B`hCpa1-)Y~8w5?!5C(YcfN* zT_~5FGiOc(w^J=Bs&PeuBs!?FWXTe1`Z1TEeDX;}9g7w%vZgkiVAhe0j0{<~Zk;vn zp^}i0AcF@F7S-0a{-6K+=k`3Nm^ObXV5Li!E^^y#x5?+9e{LxS_o5AacinZ@S-P-& z`}T@Dp$*U+1-kvbd-rbp?DUOJW=Ts+v(HI?>14Ll;dGEQ2B@lCBsn?R0tm2Od+oJ$ z(D2y*72a=WT;k^4I4IC(4KS7IksN-9bA9d0rv$L zTwpnIIB}eqx^?S{YE@CK{xt^*4%@0#s|v>mF5R?gQ#&Ez;^O3%TW%4hGol*O9>awJ z8{G5hr=PaJQ;jZ4Q7Y=C9wrF<8)?|Ep{-N3sBJ%OdF7Q?EWm&J+uz!W>^N7oSv+R~ zNEz^M-MU%L#qk$kd|`pwqep)a3n%~!=+yklTW`H(LE?D*fcTP2F0oDrV4pH&O2uHK zdHBq=Z@>Mv{OVV~l9ZGb`NJRnU>zU^Tj_zk`|i8eSyF0XHMHZc&Adw)lmEZj$Vsoa16{bBn;IjMgfJ$h7r@rz&B zNyamwO|b&>1Hc6EfBoxUt@GErcW--qW&xFOMtqXQG-{>;k}vuDGQ^*k|Ghs1-t4kv z%dDng;E^}qeAAj*%q74BL?3GIL zFakJr!mOrLN6$tfFvrS+kMYF09`FIQs)Xlx=%I%!Wnp44X*p(sU3Jw}wq3Ma9ZLJ$ z&>^A%wLbJ1bf$Wr(8a!3N$z)-G#xxl>L-68hZoL~Js+h?-u{0KDL+n3FCr27wn7|r z#EHgHqhjhvQlH`CFLp_3ajdktuB)^faIusZ7D@4u94XB&g!DyvH6q_HP~F~WsoSNu zcoUPwUsNW!nPt+nMIGtzlOEEzb6b(}GATNeEhTw{k)Dmn_Xt#9v?O%9TD%EKg40{( zcS&xRk)*oCa#nxahSIwKWzz8cvlOWLQk?j9*)TO1JtBT`dN+YQlPrk6)Od- zIUY$?u-5aHNaOY`q~oBTQYX2t0=7VkRlE9&N+LZSk?#_yF_P4yuLY{xT`uk@mx9$T zC1q~ORNtBl2vM4!{=aI&VerXtA zE-uxqQd)l^iS^^9OW&^2R<*3h6D0-8U-PnZPx-?UMo_+RNyOPF=+5GwQZA|!wD%A}5v-GE+^t#0;2wko~P9x{xtWkQLUF?<> zU(}P{?Q-Po#1bi0P3!WPh{-FFHeJq@_T5Ixmb8D3lKS?1S(Ea)9NJ&=TB2jej&>cK zR5#N0&N}NXsb9aoU9n*Wh@kk&l`HK!{kCn}DwaBH3s70rVv&GF09M5oE?j8W`oAlo zzgX#GX_l3)(@&$S>2KJ(zxa~ti#urgT~SiORXIkp7M4fJ;e4MouIra3bpvbfUY5rF zdR%|zmlkcCNss;)NwZc>l(+ijXhyaa7k+z(3zNy}&V&gQ?D8ocytY)#QMgN?B8Wpf& z=Dn&y%N2Ppw5kHs?fTkrlpY@`@yeoIi4uS7JtF5P7AY-IilD03B}V-DdE!-I_aE9r zy7y@>X){*I;{RJIYZq=(4Onzi55kfp%aPAL_ngf{y7%6Dj~U#>ixm zp@5dPetuh9Gu&xgRoPjmN=S-v63tIb(~p&Rt7@bW+y|JP#IXu@e7M9XDZ7*9T2FtL zv`#Fn0ILP8t6cm=d6JY6Bg01Ymzz7bl4bF8W$LO8vV8Xe@t0K(IHbZo_0&_=lt1|3 zgU8iCtofrg(6aO9&8tPOIqEkJ*{Wu;usa+3INs>;H-yAV`Sdm z1`^{rB<&Ilq{xC*ELg<@XiKHemP3Eid`q@m*!N=jNw=0VY5972Z`BrA_tl9dOC+gt z2T;j)BB>-a?X9Zo$x?#9h7(fv;Aj_Kc%h{&B)Y6wvqsjhUmrFlj${>5@3w= zJ5k`4;qHN!Bohip53NOl4ChFkftMaWeE7Kgtawhc#K^fNH_|U)+-40OI@G4q!9j6C zzDY<2tO@{R6TxB8%nTg+mhiygYLh2VmOuab&tEf%0Dxp|uEkseR6yIZWlNbpeY*VP zAOEl%*%6#MQUlqy1t1AOk>AQ5CL9;qKWo;kD$OpTs)rwb*ygdqtr>sx-~8q`HX90y zLXvo8fjW#BF~Vkzkv&Bg6@Vh-#l1;ieD&2=Z3<*)&TJ_6|K0C?XA{ZkBl?+qS)vhl z+;NAD8a2vhk==OXjrQ3G3>Y9AH*O5uez-69=90H2n=2PAGksDQ zn?4KD%#{n%%+-svq%D6jS1(O7{gy2;{gy8^{Z=eB*L+G@X8LRC``HRJV)H^XGw(gK z!~ETBD4%5Ze(}GibkZZnyf(_1Ne>(Ij+UvTjhUu@=R9WopNuif#|<<04(e(eC)cU6 zU9Y_Iirwm=nxSG_$;p&)j4SOy*IoUk^_~Ul_2J(NWKmEz>o#HzMsZnp- zD2R<}8l#i8;ynAUkgZ#{nl^3P*z-EbX3CT)c3TX4xKy(l1&PrCv)8hht4o(I_S(*! zJKJ+?Q(yRE53iWuk6YzuQaL^?LGKBX3QA-y#m>&r7;N!2}S{Ke)-E^nw*>*qZ88J zgZ*agAsabzq){*)(+&l((FtPjSSud2p{oiAs+eQL# zyu8tvHIaj*u`>NoQ(0e@B#rjxNRt%@#Dlk=plVpZ7oUF#ycUZ+aHYi(VJzL3( zqx#Cr_xG0e=hY9}EGL^Cu6eRf5!ygI-X<6mHE?n?@w&-3C7eawBsHUD5ganiJ-Y`8 zbvcm(@=Kk>W;EXmFT7xn(MZFF4YP^XXt1SAm)g8pG!lXtXV+?Fah{27D+(f;H~Zm- zA6m-5?t_1wJ9k#ZjXQPf6!!VhszegdzO)C;jYdYZp>3fz!-o&IbyVK5zzzZW1xFQ) zjP}<_A+Nvwx=fuq)h4NvBu@S-mWO9YQ&$%9WU2e(k3X(*S45RgWi@eXSD^qQAa!U! zR0v3;9FXew97p*A!1V&`IvzRbkCojsj!MGRZOVTVl<(Dx3IG$3TCfHSfc5CP!UBn{ z}Nld zciw+_r%H}VGIl5pafJ538KE(7^UAaX-p@0K?#*%pu+!&I8sxqA-m`J+$`b~#!;L3S zoLD9Gs##~sf|2M{;AI8@2R|5|a=VTRRaq^}OAi3B9(P@`O)j6jRF0Z#sdr6diD_Mj z_18d4q9o+62^=f9rLI@Dtl2Hg*6%;2J!pRkNBc3W>5!`UQB^|5zN3|Mb92LLWwZqY z$m$kak2tKe?IfH4T(k{?11DqK2TmNnfloU-37ls@%b;z;-J5ebY)T<4K;h8DfB^^^ zjIbM;j;7 zS7!+B}NiTlH@u;-cVfXaEMP{Gs3VMI&PZvYp|5V|qa z5iA4!$)tncICT=0Aspz?lxoM5s~_-p2ehg$u#{>|yf1Lh9Xw~vy)QrqBsPEW`NAbT zWWe87NMdHL6xNBgz%I!wmZPZ(m@n0ji1Mq~BYsBq1|T3ge=Keq11-#h+dzxpVeP>2?L{Iq^~&A0>Yu&ss0TADk`^ zjbA9KtM*8C-tmbyoDF9OAuL2Vsq!9roDR$z4iJ3KF>e4Ij_GJ+LO9eBPB6U)AtwOk zEEKTqIGjm^Gb6-RX(J97T#rqFgopqx+z@9?y>jbRh128!2awL3In#cIPCWVKlhxLw zfV8Tu(M)a}F8aZtG)#XqVyA$V`w?2gDnK!u(310vp_&!y#dzSHVQnz`g!|~{lXZ5h z=}ZNdPs4&V=u|m?wIEeMU$A(OT=m9kse7nEHK|Wof-C5jxfH8pvbe>Up)+^xK3Vei z8oB4m*>cB|bLE5i+ax3F#N%va8UaLvSq~U7W$LzTW80=W(FKu867mY*&fV$vv@MC~l)oxG+IA~n>ofGe+ zRGt{bWzme`xI8A@dC5g()6N9qYV2+^x1i;aJ6pV_=yKI9G&d04H8Bzvt~I z(1>6E`qx$ihraNFw!&Z0>IB=-WX+p5w;I=Rh^P}l0~(wc+Cu$IMj`|7aoP%nfqHO% zuID+~>K!UfM4UNZ`o=;7(F%Y|y=>z~Q!-&$tpljso9n3uO8_+i;Pe;$!TngKCfvjX zWK!cKh4Oz->LD_M+2@&fhrxFW)RwmmmbfMj0&DugTvVGq6+CuD2f*4UWxrfLVV%@H znlFCUt^gFEx?N@B)897GjyX`AD`R(Vl;?JAl|@IgF2l0s!b(VuZ|o!X$J! z8W!!t0P~rFK${Vd8y)Sz0Kh!~Fdi*H z;4Oau6(EcrJ=%tkLbVNmpgn|^02iQP@Sz(_AaYL0TEe^o0P4mB15%tsz{650&xcb; zq=U3PoEUOe39nW5{sAh0q#mdbZG_8H(1<)Yt6fkFCK8i|_%M@#w$PuP!>Ta(p)E{$ zLUw=j7wsnMz!GyP1)$#u&EZrL)%d2@Z+=r~^n~~IN7ql1ezPY^QpeVITZt=}hw6Cv z#Gf$j=cOEw?k}#F_@mlkaYmi^68)+~e6CVypmZR+G+QR^{ailD*d<%@bEK%eX1Ay? z@C+WNhruR33WsC>87yWtfWRXS$JubEoZo*UTlr}IGukp#g8(d?55PfN z7&zzygU957S0fBKpSd1>=Y*But`4u}Gxvgrqm9v`#3s?Y;Sy}92a5o(iF%+J0XY3a zTo(R_WpSPl>cE?0cy1;D!e{!FzTrA}H&%fE~`c*JYd!b#+#s?+3AQ|^B*7sq!nt^i2SPR*1qW51N>oDwOG@rcKiON_@S z(W-VA9Nr{TzFH~kbN5TO|A)1W8q>>5&EUtp^sI7r7r=prkmLaeM)RGn;$&8l!~z9k zQl898R1F0D1If>>V7$O^QmJM0)GX=z+#d1esN)jrkvP2|-s6>Rd0)yKyXJq&x|}_7 zxFlbGh~lL65h6pog%buBD!{d9)tc6BPzmSnsT7L^4>it%;=c>Y4tANiuNp z+mhT)IjX8qXtUBzX_k^L9iQJLv3W(}i7qEwPxcnfO;X`m8tN3-LcoyyltvT%VWC5}p|DVlN8KrK_C0@5Za zxzgd;0}@wIBysB9=ay#4jDxc!C1aUn6djRL6WPm;mc-L0?uzq+(?jk6UNz1S(FsC1 zc;7fxC%ep8TlhFy8|SYkxA&YRP}|tI_ccz*mv+x&N~4xie9!O<0JXV#FJz6v+k86iIZkPttN0 z$n?Gck^@EQ>d6;GdNquoU077$Wx^zu;8+ncL8B7R0<^XKpU^pdfXZI}vdlbbu{T=I zc_v#nXRMZ)nNww3&W3*oKu@IqjIj#=l!#Q{^rvaL;)E{tL`lQ8?WAkWWwLMc8rfO0 zRSNz2>R3fIK}1feYy+roYPs{ok($kUth)6A!*R`ZOnZAE$)wx=FM*1ZpwMa-8 zYp*5W$?#`q+O1l4MfxTpwM2FW6{n5mg>Lj=OXT}nc*{eVNIym7dz6J*t_y0^Dup*V z{6x!qIYa(=^hh~v%KRYqj(LlS>o|brJFk{LTG-diJ6a-<{fN}0xPw{~Gta9C4_Ae; c{}*5YyR$1*p07*qoM6N<$f~Ky$iU0rr diff --git a/core/img/logo-wide.png b/core/img/logo-wide.png index b0c90984e44bb4b8244339c62c609749f7db6db5..5b7d4c6f915fee2bf95c9ce7b903baf30b6c006b 100644 GIT binary patch literal 2227 zcmeHH`!^E`93Lx&d4y%e4CPUB<+<2A)@0J;GHX;auN7h&duZjNLQAOSxe662<(WLM zOUiI}ueVLiYm^&zuB(u)y1ReIJ*V$EpYP{-1g@E{OqV)n$0Oe#^Zf$_3;;eU`roAX$*qi%u+F~L7BGJ#2= zMF5ygrq%h_==d-aCBiC>M&?P8dH{g@GvDKQk8j`Sy956d2i)uen`PmaB>4IG1LWj^ zJ9a84f|Qh1z^ZEM8oM;Lv?057pnCcSFhjVJvB}xT~@oFoPYojQFcID`}$e(ro!bj*d=I0}^(pFn3Y zS&0|fmo6v$l$?@!YBRx z7Y#3)np;}ies2Gzqw`hQ>u!EeZ{M$i-+u2O7#tcN866Xf#@|j%il?S$X6GdH3-8`9 zepvcby0ZHB$4~1Uo1eG7{ImVF0~)IZ0PNs+VchY=uCR~}wPzm)r%{N**YZgN0O>kk zgYt?|gYeq?D-6oIgPf@%;p@V~LJGE^a?&WZ8tzCVD(Moccjb_cNPsNy(L|`wFw1Cd zN7R_EuOlQ`T*6iw#SOkA62a&~U+G(nlzXhB;UW5v_LW%)KdBPt z>LM*et${@rWb#sAD)+18b0%=ccy&CamF$EHepSrYxqn}(<838x3tn8=+b$V+Fk$Q+ zfjYK-`hkrWW?^s|hq5*kM2NHUKCNT#0&cIFTTe#rtKAQLY%Hpx=&Fi9!=f;qK{>AB_k%;Won(vjc3=OTF+|J zZKRM}gmQLqlzKpf@hA>yP$GEq4HWfjq+1l^ zI@4icKquQ-0eAeGukEpJ$h%y%8x26)*q~SeC#@#uiqI zg@pIXl9(H6X*@eqSW}DTEu|h>FsNU#-u+SM$itkBP@;0f`&7FMVjIE&FIK4J#V|}n z!p{MTI4AWA5}n&$Xh#pO|N49g3|nh*xECE^)RCy%4}n-s&e`6cl6IY+1$NG+YUSSK($-!^wKYN&83n2#?W%JsRK222dni*ahl|uA%q_%SjD2U znscy|GDH)zv2B(avCq#G#QKTVZ6_{5BHM>2_m$T&^7wh`t}6oSyv?v`tT55j+{A3gfy0%iK}^h; z(F&}Kw~>mGx^C#HQ2QdD#zNEAq|A@6DI$%&@zDMbO3CMh)B z#Ab<}zR5{69K`gjI))}MIHz^x!6PA$v_!sHQd8DtKBG$+HGQaQ`CU52%_C)l(8E$% z+jUkWLd^gsiaVz$g~b5#(ge*lB`yBoK4dq)WOBP3{L*Xy7JpNdgrfIUDrM9 z7c5)VR!L1tV^$$pkxuW;AeTed;l&xg8ZUV2v)YF0xr$B~-`Zs`tlp;v#z$RFc7m{( z{n@*(ZVKS#Y#cMw$Qh#==R2IX#G5d7+eSXw!U^FE2+eO1s7NMlTAN8I}_unTxs5xNWs zecuhN##`qPfSMxute_2%=Ih^{@%vTaCEy>xp*-#O0ZqW>(8tNZ`+&Yc7vN}G8%_;y z4e&Xj5qKtru74G@A<`JrVqgz&JFpcP4D`c<Skc4yn+shLZZ1@_$PtO6Uf~O%*4)eF&F?$ z!%^HUV1Fq-5Plsv7g!g5SI~iwZ)NHMbOkO=(AQJID>$4l1+Kz$!z4^%K8X3J$8hAh z1xJX3OEg}4;sm@B&j(%r&Tm(3QX1%DiiU*6XiOVq|dlvr(h6F9fbTiSX_O*Cr+M1`IwV2s12kNmemIU9&?0QE> zFMr^B*r4{evo0k=6%Mzj#mJn2x0*Ptr+g_S14(|2auhJJOnQ_OR|7u-Hnz7Sr9>5Q z5%JsD7szi+U2$|(4r~EVFF?LIm8A)1GCTp?hz%_hb(ms^LR{S->@a8Jy}%tf;@pX& z&Z{{*Z~${~f5|n00x2hE!_UqQ-l;vL7 zkm_)>d0K{SH|#5wB29TRHju~ge0$?yKd-=B&~~( z%U3r@(sNm|+a&eLA%BIWN7Qmi-Cxo_bI4|wQK4;A-Ec`ShUXJif0Lv|8P^v`dLY4= z4f6SG^YzDqzCB~wjFYsW3V0)dWq(c!RzD7>?9RqZ{guE7{8jYBTT3a?6vi!tyV{DE z`)vFcb7ygXze`cqw*7}n>5IGE0z&xCOn*`gj zQyGOG*b$$Iqo`uA2NS4w5q}*G<-#Vst>i*KOt6*;HF%}ThrP5Wbbp8=u0AQpZNeXP zJ~H`(w9I!6j{Ndr04>461`5!z*=PD{Liypu`$c2$3iUOdhMNZafNua_1U_6qJK?{Z z$E^|<1CNK_yKs(H6pjrgS6#6m%U1k9!+FGiEW3$5M%s;Y@8b@HtAFvCX7hYs1KuM3 z$g3Lrzs*$8X1r3J8Pf(FE$?jRB9>q-Cf}a|PQga9IYy=q`w)YHm3jKh#|; zQ}A4JomtMrM!PiQ-hVg4xX0yblX=iQ74HzWIoebMR{+bhL%ee&HN}M7Yb6bpbe^QQ zBI=)&bW}!v)pF|Y+cAAg(mQg>Zs#n0&JN*k9M%T8<}mhUN!Q9LzTG7alk`hD)bE$o z|0p@Ezh2Vmat`_(@-vt!X``g+l6q&H?`pT)&BV|h92}vhLj5l4FKLpbxiU93H(U>u z)Gg*k)JkfUbbo7jA-g0!Eon}8AT?R?y(HZtX{Dr{;Q`&K)<&LL221+0q#fa<&5?9c zs2d^a50d^J9_DS5PRM9m3S%PlIa$*Dpu_oD^^Nj}`t69e10>xoe=KiGS}uPGRWaiY zk@P$HquC*8X&67Q%?LTqf0J6ULDCF)(cpgtm8rmD5Dwsz00000NkvXXu0mjfmZm%$ diff --git a/core/img/logo.png b/core/img/logo.png index a84fe145bbdc5aab34b353dc8bb3163fd54badbe..8d112d99be554002b6fcab41b6468d27e75954b0 100644 GIT binary patch literal 5182 zcmeHL=QkVldB6^P?dMAsBURDsji{48RT@r%TcB8KzZS`P7 zb`w1B?|5&{xpU9lGiN^BbLPWLqM^Pf1t~Kr005xS0;?I{GwvQi#02+wK`El)o(TL^ zv>?R9#4B3{oA)J&57@&0zJ2k3fv3V(5OOav1*pFWF!6pF5bWUR0tgNc7IE|P@ON_X zaS`$Mb1gWPW4@mQFw}*p-~E65zXSh=9T*e=JKQhKU4XH^2>=hD-~l1gLt+wAGI9z^ zDry>9I(i_(BSt1>7FITP4o_yT@x!FK-`TKmUNh zpx}_uu<$p~h{&k7(eGkn* z+WN-k*3a#o-MxME!Qs*I$?4gz^NUN&@2l%SSlr)#H@8Q`%Mt(pRi&1iG9(1GTNG>$ zF=hBZm`AUo5lz|6 zH|0dU10IqxE&MoU+NbY}pXPbr(*K z9oQ}GyA-ZVbgOHU%k1JWCCIacjUUk2Sq)-sP6b z%-pR?n@#O?)__|r0cwi2>5IO>NkYMeJE8b?Qcw1?l6Ir}Tsvdjcn{a+qoxOQ9$v^u zR)WhIYhw$;;RInRANYVvwInxQ(h1u{@C1fZ_g3D3fzumwFTLI$9?uSIk`%Ahn@u5X5AJO@vMpA~a`_cds*$6dsgMl&>x)e>YK}VuK-ib4 zW|k!GVC%7``&19Eurjj^H_Dtg7p#vUc+_H7t`=(ko)*`n0K`<2gEjH5wtZU{4KKIT z11_}{{VN5+2fDh{|J@e;b^wIg8rhbdnr_}YiB-Tg%j0+XpifIV!nA}HAFVy8>9O|h zXi0pOE~&t89w8avI+fPPjJT|L2kQ@U5azUY*v$!{>b4oU@oJH_-(XKj@+b#>+L|+JBVPc1o6d8^4t% zlnY4BcaeFj;)g4L^uEi)=^!yl^B@`%Kbrcd7*#I(h$to;$bPIqYu!q?u6-eK$LrWyyw+) z0Q%jNQ}c_YP{*V~0me-MX@kE?i!P0ACQ^TKHxf50i{&$8X*sc*Kwy&SX5<%_fLmae zdc@HA-_g~F7~GFlkNHtjV8W;btb2U7PPCJl?78`X=nypCD*VV%9+u1$f&X(&$<>wI zI4=f)R^UAIH_O*EJx7dkejaASsMlD6M8=OH3!4hb&dS|sq?;y;dz8|%QFk@;yB$JS z7l&dDGEdERW{KSsclp*|UM75yi8R)`;38sm= z5n6Ns)+J@JrZJqRixc4;#CM&SkI} z4|dzGqvf}Bhn4jc@N_K`cSp=fP+5|}t9!k-GOaH0iCb9DYs5x}InRUSSb+tj?k43! zhuV**ka_% zFYB=K_UXLTdL9VB76v!S!ov}_3Y^%#Z*oXJ0lscx-{ZwS@5S=?VF_wh`)XZN*G3&p zGya{&oq&2`rQZ>hY9xlE$qZ+GV*ziJ*O$e+3ic6$#$B=u92Fr_rAJa;znPrA^ZsV- zpgTw!fCtKpa?LRkn7I>fISFb6b zr9CPXqR+Sj%J3`;ZobilGRB@>lGyaO26O%DSTdP(+`+U5wv6^o&?{=j?|FN=KQ2t^m(zgQn z1`ULrQa`W_1VV+Pn`Eb!PTzL}*_BH+!IfJ{iDf(8q#+aP7m!HZp!{m8j8t7Fd9lcW zvX6ltMaNDkw_nmfnZvy20vtI~rp_N#atmj{o*kW$gnu9?a(7CI6_%5%E6YaO;l_huTjvzMg3zn)?S5!`R3Ifp{e%3sTrL5f|m`h@rDp~E~KF>&B zkvSqN!VKydhHm{s-M43Q+HxZk|vlT#h>FH_&4I)HLao-c4`75!spa7 zhZVJdA4fz7uPm`KmbqnZm-YNwIjWfUo~Nlx*wqsaA+@>5lB@rg_O%;02vqShz5;FLM6 z*G)z}ROa>T!-^}5v!a^cEmVrkvsFk^GDpE>>G%2x+eCgueDC$ycq>e~eW2Bf` zElzcxhXy>vn#B*aX1c#4_V54^-H;^Itxn((a8Cr|Hz3mj42%>$^HzNgBSy zm|b0;wwhq0S&zB+o0cNC^HvN0%n&`N=MOqV;@K?Cc?a=Ua@<{i!fUMPtb(JxGg5c5 zmJ)u9L=dg`q;Di=DsH^ly#8u6-nucx&Q$(9&nVcz=F6GW_7xH~7{ zfdYTY&PyL?g|1zf-bU*gIeKn*gdgM*%dRCtkGm~q0SR$qPBl(3k(@{t=SwAOb}(kX z&ybwU zq(knz{Pn+{NUe*Ni@2LlA0G;;U2_z?>bJn{Q;ipWt#KWZJfxG*3bOUAf@)7hpGry> zfbN!{Em5GE>+A?GKJSS$RRz&rA43JJgT#JNUMtjg(j`MqScf9jHEx;*^NS3WcR8_8 z56V*%R5H$&oox}HZ;_7M3bR$-JnG(_o|2XXbHhIImn_Z25tr3&WPYD@3g&p913aU&<-JD z+TP~HZPGFfh=z_obWQiyHu%_$Bn*I(=ZS<877S$!aS+DGuc&RhKEuNjQJu+A6X@l@>(we)8~Dx*xT;jb&HT;V zXwq|Go1n0fY3&Yw)`L_95Hts~6)n+xGmp6bRrO_nuaI?LriZJ9<-x`!jhjtW$2bxM zCB(frLYd}42EP-akRM-QD)Mz^6Ig`=R)*CUk=z!XDAl2B*1ofD+K8i#_KJZ?6b=@GYruVOSvUpFm}KUbL#A2 ziaC*cBIKb@84R?sn;iLC(64T3+pE7*@?SYsD-_H{vLHDsjdK;cGFMj|k@)$>j?%R! z$%`5Te5tA#)Q*v0Dr}&El3tD=Pe`lW)i;Kn4!3j|o+OZMV>{~6jo|Z(&<*^RphZEp z&;EXxN-=N9WA40W;7t^YIhUB>v7IN?X`}U#0M6f8;(RKidcNRBeA$czr+rFm9$uu; zzWdqU6QhmIP%NN=>BwvGgw?J6saJ2Z{HSw+o{?4R3d&NbW^AT_@`}%?+}7{Cv#S+* zgwE{%-i?*aA+PKD%!vGc_A6y%;XCubxwKXWZ@$ih6bHo!Sk>U$r9Au@Xl6)s&!haK)Z^oc2IU8w4)QT|P5Lj}>Y zMbK7DhbSU$y)L2EahC1%-)=mmV7)$puGo{m9Ncyc^NbVtI^~L=)hcJ0#;nn^Axfp- zOt}az>DQ`oxiv}%znM7x(hZXt?A-(8)j zZXpV3|%lU>cD3Z&HCYp>gtS`#;&5+~E;YTlDqb(pA02ImTej#A|0 zdgc6ShQ?||01#_qy|X+POQ?-Za}fX2J5X`EaOtb!k>NA9WA}+SBjWN)rU924$tzZ* zJ;#m*w~yl{cD~zd$ripCqP5^$X-(j1=Q-)$vlMG@{iN|qL{CRxyq)HJvJ;eL2Y*aw z+cKHoBrTOG$7S_f8n zXSFEk#!?oAsgPYK&CamLF=rv~+o*Dp@5hM!|xE`ADTXpwJ8f=IHe;e~|K+*V`}CRJSV3|la0U|FJ_adeylE@A`extgaX zCnO{=_DQ8rhFX0c~!kLeTTcCP8O=>F9@aNzaS|ZZICglP@ zVKN}k%gt|(v82Z>@)>TBZ)$9+-s85^;V}fPqT~C&PK?M&WA#_E-W=gtbCEyOt6^uJ zy1lGjV+_jilPKspj>@F>#`~_H9&u!cJm>eD*-fXJpmV{-YHW9vz~KgKvYLTA2L>iV z#eG>3Z;o=~-0kL$IacVz$?oIq7+X=W+;t;L87g-X!~=7@|6KsI)b-VxRP3Yw2V&rt A{Qv*} delta 5831 zcmV;&7C7m?DC8}W85jlt007~hj-CJj00eVFNmK|32nc)#WQdV4JbxBpNkl@zA7rom&KFe1!|B$;`vBg-(4oxx)pBwGeCwkHWSObtbr zY-MS)7f(bfgi>j_-_IY{_dMr&|K_)x?K;2nJ6+$`>+{Eb|IW3X>s+66uIsy9bwHhi zLku(r_62SLo&a74K7R#%1Qr0(fN{XxK!0EZH)iR>4T3{d>_swlZ?y(jsqIpxH_UcWCLyF3*JcbG8O3R#@G?vp}Ob-yn|g?0vzGS+7aEM zI@kyJnslTQxD=>&c-v?-60)x1iqj;(tim2);$A9bO*a=1x%*8 zvJ}|GJqt&4hv3)C~HWLxe~)`Z@`VZiR9cwEape@FB+1yTLc`%3u}GEVd-)xG{uV9WcxOOpcwcFP_qJQTNzl%X2&spZyj1zr6Mb0>>%dfCD@SyPTE|{72-HF9xG_c2ejC9tXO_C( z_ae0Uozh1*qC3NgmEmn9MVQJAsRVftVngZGqO( zUIWGxuYV_SByg6zY{ml1D>%(8jnS|FbVPTkWxS#$^J?HJj5}=5=&vNS?z4a^fgNMs z%X*m9&|?(o@0Z^?#O&iL;BZHDhg#mJFA!~W=YroFFtOczfzvU*?ZahX?oImbBNFFJ zOiuS6Mf$WMCM|S-;5^_aU<4-M=AW2c?^j?_KYt&Nam6i6Bh^NnfsT~FcS~r$-^&r* zp%&2sXsP~QN1RIT1s0Z>^slKh^Fw|ahsf8rFmi4%CU<+30GTgj$=|z#J^a@RZ7n`# z4azI;2$DanCtt}W0VjMTu!)o%5wOflz%OW;k>(uHZYL>=fssX43kPGuSL4d%j_3}x zhJTj88M1s2E2l{v2UWOkJ}{tQOE8e~$t{wQMtKQ!QEjg;OaC~syr51;bcal1OHA^J zs4@ZHkNo{IU-7mDU)33;D=RQ=uI*Gm`o`44-|mR+Pzy*R@A^uhJ*8vP$H|_*PQ1(> zuCnvY*K*(981x9KUnumRYvqXUkY$`ga(@|N?ovv<>FWQFDka}0z?6)5%B@sejyj-| z*zTi9KSy+jJo>kn+6Vtq>fS}P>cfF%^1q(IJhCTu%FC%vRwc6{)bXSvxy)a;=UP#|ltbZ8i0T%%$V!Q;qVFGg;(H&C5Xv^d{TTT8qseS2F zVjSCw{e5ykg(7*wWO(cB!8mla|~10pEu2h`xql17LiFNprW9|Ea}^`IXWh|AYKW zcZhw^MNs(^6OZ7Cz6N2#5KHw!xkl>P*5agm96yodvK$lL^MUV@QhP6xv4b8R8SQ3e zeJ;jic|h$gZOK{E#!lp0Mk`B4T5`1``kH||V@{M8RbAg%nv6%0Y<~*ntjc6HmJ3sA za~ZI?BYM7ZY{E*UnU*Hw-XwQQOP1wxHI{Fu*zSXl==pYpnUlaIS%vTHG0xIN^nAB3 z$T`th;k&~=nPR(*z|M~7`NX*iP881t_7+PMabwH%XGuEBz21>>yLURG=MU>+(g!Cc z-Z8&>TAGAjQpHEs0Dq!;_U%hkZg(CT2!L_qOcnzyX^ZQLmff_Hte24DuolEy9o<-k zws&(x&les~c!I3NPg;11#mRr!8bEZvxi zoRfT^dQLA@q5TPt==s5cmL|yz)yAlpb$yRH@pLTkD*h>@hkxdr=+o2~&aOiH?>M68 z2Pa#cD7#A=9e{5_mK~3Ydv9N+?>%x(^s(w*msX+uZ&dqjfbB4eE9)K6YY%_1I8mnK zpMQ2-z%nB+uC1jq+7$Zaug)>ihsb^Yq>6p;4syIr{qH+qB5*y%JJAun25?u33Y~IJ zA1h?ftx4SrIDZr4sr4Slfn)*ZFo?8LNmo<$!#`T8THtriH*>s!v-`{t$yk{2b?h$|=bg;rk2RU&VfSE3%OluA3)YEl2c>;_oR; zmXCneN(--T>#OijL#@Z;e_I@&&J*wtJIJFvgrCCe>whZs;j0K*|05mIvx#d`nl$>n z@{X9a#sF7F+(wL2<=)L9(Y+&@{-cV0m=QtizmNnISU7?vhci-~IL`p<;^%t1M=ehe z30c?os;(+k}OF+>Md$I4;kpEW8 z_D`$WkAKUgADttVJ<1V1TWBZy?%wo&t|@T z0;>Zr@Z-c9C;4opu)MI!eHp4=I8ly;T7@}#&wmj;L+FHwI7?H!Lj#fsk@fbH&44L2 zO!PkZo^aLFIjq9CyVl8GJF4s+aX$7Eh2BU<&g3yH<;moQu?|h3t{>IJ+_cI|-l%eg zdKNcVxi4OJnR-kxQB>(3aV{P$<(E5RCXWu-30Ey88<1@Bh)MXq@I6WX6jGb=xa#{6 zB!3^)8%CDkdmY9(ih8+Hlsckk440=kp}g!Re@L*->(#yVuMv_@#rGQADdm@KF}WDu zwD(brdM3x1hmPo$u@>-3N)yV{mUmCM-jhiuGA{|4i=RWiJ@CI(?$3Dq48Etutm}41 z^lW2el1ckqNj#^J76~u2R{_0g8gIWMgMTD{9X~Rx1=YzQqvb=jo$5xs`1eMP>#ieu z#*xMn@_n^0{b#~;-&Sxxdy(ErCqd)^{5WsV^X#)K_UBv7S$Uq9;wK4@zax5vu`AKs zQo~3eHPII*IBAPzrP%@#q)|;-4V+hEyf?$7Zc1A|Q`+$c;OUt4%~CoCNAw!OrhmYj z7AM&x)mBo89?vRsKdmultZFE{Uc=ajD;-rmDdj$OplQ0Of5oV8Iey5oBYKTt9gK}V zX@B@eOz5g!!aftT&b#HS6vUJ`jC7oYJ|bLzM=RhujBkKV8D22U#LtB=>Dt}tz{jY)tpO2&DK=u%z;Zhw*&XD17D z%n?09sK=yRz7)7mCgXHqKJb>1<}!?TRrd%An)T$1cpv8YWxaKnD>mPw11{Ay(V_fN zLoI;)!>VhB9SBr2&&oQ(o z*3A~`&lAz}4oCEyqPJR_KaC%g?TGG(?gk_$*bI~C5!nm3w$zRzx+A(n74e`v)UWyX zq>+y3j_7Vca$>6UZ04t0Zp#tf5#6CmctzQtn>nI8IHKndyDQ@Dn}0%kj_8i)4pqPn z%2l-95#1p!(Ywn2?@G)OKzE4K{y@?Ax`F-o#1kh-V8w%C?izu~!+t6z+%t)GK9Prc zLrV8$o9J6&BJi#P?gbu}dpiennry=wHjlcBBhR&%`1{czFeNC_+hg*F1@V`DL!32Q z#8`q3!#|K9EY_Ct!+#`@Axa(RN%_NKJeWSRXATljG82>QE$Y5{=PG<%Z4kYsOy+3; z#%#X0)NT^PYj7CwD~n@vn6z@tTysCPLXAD4xb>0WeO!N~0;B0p(qyrGE@MOSMs7qeSlud|YHq z7GqAn`3J>Mj#&y^P4N)Xa+ojWPqsKl*QfxPu>S97Qv7)5g_s!k`$FJ_azt;33Bl7& z{WnYW&6Wk%Hpiq(8YDprTCNMZ%&KLgA5!pAoGiZ6o0nPEA1sqtN2LvpxIceA#ie9Y zL~oGQqLz`EtbeoH7MVL8WSp-Ceo$p}&bV48dK+L&!F;$Kb545HK%bI(^i64+=jsg! zfC%$;UZBd44zVn)RiY2TPcE<=I6vf4d;qYh-~}19>X=kAag@6$HS}wyI?{* zJ^3sI8L~+9wwQ=Ty~5iSOUk%)FkzA2SNtNP1;MwMiGSzGkQ@_zPyA#HZ&Ex7L=bcY z#;X3G7_gkTRk*Rnh_1ink6?~YiW25ISbg266D%SxYea8`pLS}Myy#mc)Q_S>*GKLi zpFkrcRDJz&Nc0WxGopT(fZJ&c;BBdIMZlHR2Xg(NYl!H53rHTfKZl2`FKa~ChkaaN z+q~98X@7~wB-BVd{1iHKs2tZ@Yec_JwRcoPW4051?)0$%u76doy|zY(-cl*v=12UJ zm-F+7%84VhMD&jMdEcjyY#OPeM4u@C_==|4ER)cvdU9rth~7axphpvaIG3pV*t5d5 zkI8ip)(FuDtFnC(?9&GLDYaj%A)*gcTjd=s^narX(YH{8Kfpp`k10Rwyb#?>?ywC1 zG}ENeTrJ7(s&MTsa^1ulA^O`&yPkBv^hag88X)>w%2IQA8lG{UEw&L@-$G-@sRyuS zPKZ7};MXH6?ofOGawf|2mDV}yMBhx6JI+GCTHz;tJii8r-dl~wE@=>boc!^DrN*{X zH-B_e4v5~M_R+Uk8nYACz3f;)>+i|WGfwp51Kv{{ObxKY$qLbLQi|7>X%O8zzUCoI zjWysO6LeJ$h~6P#>qIG~oF~7oV4Cs#7B0*<(JxjWZMH&b?~yiU*8tHUQ)byzf?7Oh zjk7H_=s7psn**Zjd-0$O*MAOA**h*O(eH@p78(YpsFz9BiSAiU?o5m5 zO9M`*IPhFOAI<^M_fqY&wK!&8Ktmf7_m`J~h} zkIFT(EcKzKa*Mvc%yoCkHH)wpdDw*L*D0HDa|?~>Nw|k2x)q}9Nj_T~NU}!sT`a$h z>Xlu3XqoH&WZ9go@3U{2>jtUowtq^4=zCb+<6W&>9vcGK+rN+4&W7qf_K8@>h@SV_)s`(4<(~gG>be6h^kcC4aJH^6j;k$OZ;qAvmw4u{ zIm!Vf$qCX0Kf37F3fJzc9zYZ~++V8lQ8lWI0(b~!mFRWA?^WM!w%E6Cq<@WpAlr0iSrCVgEEBy>2#!*I+W4}M53oco6~y7a_$QHE{seasJ;eR=KFSJWEDW@q1`(Gr`$XV(pf|?MfMVvr&VzxmkTEco8 zouekVVC2y~0lNPlIYpG@#T`peZDF^r-|`_mI(pMPD5PU_xARJbrvojDIof-tajq2NwFue36KaCZC0stQmiQ@kK9D_65MO$4 zZ#_-5zY5qdK>0SxbANBXC`oFa=-N|kWx?0IYr;0`6;uwVEjGDzlFU&7#=US`c#iTO zTurpF*Ir72xms2#VfO4l5hpND7E(TNs}#BcOO!R>c3|Cz&!wH3&)*{%k&9h;08Mk4 zO_i^~+7)hifKo(&2}#^MLPxu*ppmaINhwP`?6cLw_HJr@<$wLOS|((v6~#U@O{x2v z0R5{aqI*ipH&mY+Wt($~?3v?4i_KKy95w|~Cl!R^Ino?c;cM7jEJH7=a*K%<+ujR5 zK?>r0v_B@bTDkc5e#)KJ+cs<+qaQmLy!<{9Gh~~PD+_%u|DO=0+`eaW!BTjYd~JsV zrvv{bn#E5Fu77J3pZ0ZP-1Lz`a@6v}Yxi7vi_TWRe@W9k-P_1=)srtIh~Pp|)(n&T zYgE3`rv>a=tr6YRO7|-mGw)eV!6dG@US6C%Lhg^>C^61KQfsva?x$%E{6=|p4~d>< zka%qtOD{e%A$`*3G)*??&G(s@w8?+Owbft9xTM5*42hr*xJWI5qd3#_z|V3NMCQl~AZd$2AGJyeA``K5aK-`3jW(=I zq{t~iVSn}zm&uZECMLoBJn776`O?}tmZ=ve`Qa#ez@LfDbSS~%nmdbw#spb?%mbbR zF2#g^u4za7=%x1|z+XiH`Jz}WqB^r|C99>oqzHV zrk{(F@o6zpeJ#uMw?s>RhHO1-Kcj7BwP7_}IXV1K|#L_t&-83n<)VyaLO0MHrsaxQy$aW6rQNeP;~Sb}jY!6l{y zjfo`~x6gj(z^}N)O=VsbUKooH{Sz1|AtejdU&VI&J8J$zXmoB3>5>+(p>(qp@@e9- zYZf*6W~7UeK~d{;4HPjpivnRR^as*>hwxD3#r}(R;Fjy39)Ep-@+434j=!HAypPwg z6ndsSt@7}PmIz(u!ck0BWy$cBz3D8)$+O2usY=0@FNmx$n(J8!TWLhDRriYl-(4;@ExDBEGW9s7JlFF^K59ewOGDmJU zTv`|wtYc&OzJH*}ACuQ=1TlE|804tPtx^{U`K1TI_mU1+(-a-^4;TVt&&+?b zW@~kYm-8s!{;i&Ym;YdQvcqLq-XZr*)f^8X=7!#Et#o+XS4!p~DtPU%2J3elX-4m) zcyk0@C}POVbHmy8T}|7;+Y3v&zsdD77Jjx;3GID_?|+fX+e;Pr5A(!$_#RiQ?j(M* z@~d)a3OyUOl9@Eu*a!%6b!RwihX#TgsjWCu46QbU3u4JozJwCQ z$}F2gVQ~v+sKLOfJu%T0{mOXD|k9)D-$*M8?ff{%90TRS<}Q+)dKj>-xy z_`R+au>mDx{hIzLfDMPXQ^+1@x}s>eot$zslzzq%N$} zzzR13j691Hki1qqLIe3nDG3s9ySXnfpMP(g>DWmG11?1zesM6NA^-CEt_zvo+5wam z@Tc}~lhknhYj!ze`>p_F(6h}C-Pm<^ClMq__oi7K7=OS9mdZwo(_%CB3>No&IOY+% z{jh-f4fgZrMRXI}u`7lof?g{;-BV5LQ!+l)!<@k$0|pqCiMl?*mqxH`G+3Yma)0kO z^na_7o+zRKf-UVdm_M!Bb+{iEZSgKUiXP|V+0lU@ZoggoYw>oN} zCrR8{Rq+tM4(CvjS=-K=N;MA2&atM(<($b7!n^*&C-dbuUkT{e6$#Dii#*<=+E)~t z46M_8#H~n|bSTj(m2U$+MnS2qr6-m~V_$YXpz?eY%3geYH~K6*;9)iX;JwhMxPJf<)x z4l-~MUQ!+OBpc+6Qi8w_(|A@04uqj2A_dGv9qb#dy6_xv=jy{hb0caYR>#s}PQ)T= zd+U&gM*R1aGKOzLg=HIKUw>uThY;@QVPTh={*xa)U5rU*GW)Kh>F`NpCq4# zz+6~_LRp{wm1`+@BFvuP6@)0E4`oZF<;puNxp;3*R2D8eXe3r*Lw^#g)VR7YsS2OV zQX~xqVns=Np?LgR%-3e@TJR@&<1Iy4C#F2B%*hCFbQ`w7-oT@L%wYoCj_#TS%YQ)Q zNs4`8A>5vSDgJ=I0wosF*^D_ssK3U1+*of$BLyOhZ9QGiuOf*`8#G7M0uE`ZBtk&u z`d8T59m`S5d3N(xvwvWw7b3igPum5^W76u4NP*WP@HOZFtbPlP{Zkc4QxDir%J|X4 zYBZg`UySU&{ZP<@r&e~WR)-tgK4)6&(t#%+TADla_+PJ`i2L`pB=%{d(f2?2_%uxg zhwhDV@L2ohY67ok_<>FNH~G%3&iHQ(pCha{`dkNQoK4KQmw&07FJh_pDG__SR?}T2 z?`lraANW-v)$uVRSU||d=P>F@czl(mYa*KTwg`1^!Y-2VwNtJ>3cXS55CtS|!1YF( z+FWI7K3yeVelYXfdcp}NYRwksO%uXXHZ->ELvPHS-K7Yv9`B$9l5TR-NmSnC1xmwmiYRQcqyil9D%u&xiF^?G(I5Vzx5i&5v z0YXiF>XPNX{xXrZ^D+cp1X1M!v-Q;5)I0?_BD@4QukjNB4FCgnLgP}?q!Oc(SFI&E zd7`52EZuu^Sr^iN~}3_E5-FjH~+(&6MO4~S&ew0|jngj$KV5P=Q;?S|;)d+JkJ*Oupp zE^?j^uO+CCf+-?j4HYLJgl2PQON>gb3%MK4kSRiTk%{QlEMcHmUuYS z)4fc6)qhR=d-#dD*DAOlwNn;)h6rJ}anD91Q-)&!WkGAF|CZH)l0een7!i>9RIKZS@ zqNL1Gb%M@Y8CZOAPfsAL+<}msQK{IYMG3h{8-HkkAm~jnHRUzrsY+fkOHTy)TkJoe zM~OPlcoM`Q)jo2*;;azt31giW7(I5D+l(-eQJ2{s;3X>aW$!nybCV-gAdDv^CsBBR z_=Hmz;$y4OOID2<&(M++Us4-R;^j;dg?XsJztoxrqS2l-?i-!_;L63wEx(E@$QWO| zfq!qILlYLoumL?KGh8o%Z;2oE0K1Ni3@l~wLIA8|rATNiLLTS)P4LVc!oxI<2@2eU zkXfIKxZzL*W(>#m=bL_YnJ;ejA~=WS5$#@9*}5$iiRPx94e;0Nw}f_XL%Pz${rVmt z9%ONlrg-9iir8I^@Ifp9P=XHTuw%qI0)Jq3WNb5bV*0Qdcw!J3URj6t_rdxUPhm>L zXVO5!MifF0k&;oeV@qdf!uHlU>sHtA!p4cbUM2btLQZW+tu)!$vOwi(7y^e7 zAoW??%)LN21#nC$`A&PcuT6+sNP!`q5@dHkx|)AYajXc!p=YJuljbsv4aK4$mwzP; z0KEFQCh3TKB|P6-CT+j70;`VyG7yBU_}jw$UuZY`gGeA7%JUQHrGV-o3CPOD5>8_d zd*seu9~SSf1HHsV>AUNI4m$bz-{r=5-d_925}}ugc69e3teOR;yf(uKesf3QZUqpS z6YUxuCdVxR1Q+-^;dyFEwB~Y6Fn>L%&1aokZOhC&f(tUFo?VIrHUHG0R-~?D@A+EY zJB3x?&zNcJj#`uK7c9V5ZMpa`sZ_f^$zwM(S|L+1!*`9>SR1K5b||AvB{nw;4}?@1 zzI+s0nIVJeO-~*LsFw;1FFtnynk>e1^X-n|F{{#K>0A|th$JGD;002ovPDHLkV1l+X B+*JSo delta 3061 zcmV|8*f=f&Z z8WT$}Za@3I?i2@p#Vu|s^P=#=SbXT8z(@%xS*ZRhw%gxP^B+Q^b8ASKw15qzo28IX z6PI1HsL3}YU5pHhTBmEEh_P7|2xFl?kmfsthaxZbU#tVSTz~)c=nIr5d6IYh{p8?% zyoROFGv#TOhd;DL=rR|MVyY@jhOg{RXDLpeJw{4Z3ch?<3=@dWH_UrS$$*~R{9*_> z)h;U*G6Yo)&h|P0EHNS7VSl zaIyICQNI0KJp(WQ!R};-%dosd?whJP9ze_uz1dpn@V2j%%tKW0+F=dW?>5qm z-bwN12)at!tbY^4&~`+o}GBbB$8D)1lXiSh6~u2$Vi z{AT4><^v%QGu(y2y2a0fD`GNN>xDcrm89;x-k@U6B+^lIMrE9m_Db zV_m5q{#S$aJJ+~gdRBuKQbI#lrGo;*o)vmsC7LdJj&=wjkPtF=Mf)_wiz}n|YWIpV zQ`GGmlz;RmEn;sZw0mD3*MryQ^#iIF?A==;RP3Wg95RoQYA(qxAjn(~1`sJkC%49Usj!Ni%^U zY=4*y`AMv^)^F}_7$#u@rhWX8hu9s*jiymm`PXVHT1W8%Jg!JAan;PQ$9TwI<;f66 z?6WDT(-Si7DFw?QMG*7XB(;%jVcai-H?tknECYI5uJ*6;IS8o> z>ol;!O#ma$q68$b)sE0W{!vPT#M^G}%YVz~+h#g;62X8=5ra%2j6H+JeIJf_ z#BM(Z3QzY`)B2Q*PxUZou*ZM_MrER|kMN}tEE^3L=zoCR zyAA!{YNRKMD1cx~I}PSft9Bjkhecbw%Z?(6i4Rx7Iv}bd%jA_VTR8|!X{bpHgJ5R|g7mBxp#QN2=5UV$8YIrc}Gi+@u#VRJHOe_V}YcnLI>5WTun&UCB_o((2 z#U=ym^d505(j^^Av`XdMfR9m7YHR6HL2DF3)vv0T{DNj=fY#o>$0t>}mDP5{2!8;2)1E z42pvc9E6ut2R+FKIir*y@WV8o6@mj{=!i%Gb5RHT2CFVSN8Gvk@Xy?cT8P!Lw3rjI zh}zyduCCWVZl7s-uuE; zGUQMOwVf~9frp0JZ3d7hPQ}UhDGKY-yA?8GGx}=#@b(1U0zEEGS|LjVhYU7{PR}RF zry(#G7NJnqr+?*I3Z4kFCwK)RO6Wt`5^1^e&Pp!cn-i6Viw+uzm4Dcfgeo4?aFk zQ^BEoBOE-|ez}^!>luDvQ~pi9bE`A{8^h-a>y19wff;8LGk@-7>gJ1B>U~PY-mcYj zSIN7Y6Z8juRY-Mwj0hGGa`8Egx)L5=W$BuTCcP~}-J7tBBz*0ZtB*o&)H*}~i5qae z(WW+6nVL^miI*SD{5Br~OXPk&mlK{ya<7#MX(+SP2+G@GFqiDo`jqa2L(tG9rzH+c zebjsI^;x<2BY%+(@^$_d=Q>1a+P)>3t3a-nb&y(eV+SwPW-fEovro)p1_jQHt6hW) zOmTovlb^a|d9S}rWbM2Rffqqk`M_*F^)@w6L5>J7!Od&@L_h<;fSu5|)HJEY=;T#v zNlu=qXgf>y-dq-Q0d&fA;7*Zo%k2&++F>*`iIjgXY=5c->0(#3tU$rLB9@Rz2jPLj zDX&hztG`rxEhYUE834nM84=7>+`e=;dCCJKnKkWSiXWj?qAf&VgMYgry7`{^RMxfS z`Js!P=fi6Ws-s|v$X7$f$p@j?oY@kiQtLwQhI9GD2aJ+Nl=pf=1N2rr*M_9%jx(MFF-WzKoUb@51bf0*rv*ljo#i$o%wyDLwg-5L%6!@T&FkFcNEHa=eV;tDdx z7k_WyTjsTog+KQ0J`F;~T^M>#+jbnlW z_aJ1}ry_1RRDl`8asBzGUtQ*lTfGR*A$df*msPfIOGTo&DQ5%x_4+NLo!gMEG;zPa z2Z#q*9Hc3p_@5$nS0j873jma$gE{ONaes~gm>n70jGdT1YzCef1cq1E;r)HEKE+d* z67iWd(6AAOkVB+ol;ucb1h^GYE9gwc(UsD__f^g_rsrRJ03}ZvFD1XRh z2?GGH{;f$m;$8{Q_m)Z9@2tS8AKC(pUWuhJ3JqW92fhn)eFoNIQ5x83c z1m;A$Mu*993jo0dzD{_a8WOF!Tz?ZxPipg7=T_S?Gmqec45??AB0)3m~ zR`*U}75Fn|+Pb6GB>M#muvJ?wK1?dr?oaaA4UJaFl+5s5<2BYsYL6YtC{u~e&B6mA zRfaDg#a4M1_+0?bW;3Z0=;#W&UW^tAYTx$%K~gYx4#!X|o?A`{J}|j-?{0<*)1RsE zcvXL}!sws3>tVBGtlloCkl{WgT!Z@pg)ildU#alGJKE7Le>=k^o+n!C)8Y50?iTQ< zM9bHlC+sZq<_q{h ztTX@iboqh8D9b#BEzb2070m1GKea1tc;3i%=Km$1hNJvqjH}L?-`8S%vBx?;@wd-Y jt1S}#?#G%Y@fR^pRWjtyk1t#ZbSi_VtDnm{r-UW|+qjYl delta 441 zcmV;q0Y?6<1AqjO85jlt0047(dh`GQ00eVFNmK|32nc)#WQdV4JbwXwNklyy0cLI)0Pw^L z7~!qofmS()XhlTFYJZJq?fa(F0sN7OR;`#%!Pm_EJ>p<40aP*89Rj}ZAD#ePrBnm1 z)>~5oV|d^94;=!Y=UwX!K@h}AlH^J$D5a1jNgf12Y)W7Z?|I&}?+6+PuIt{zFg&Gc zdQQ{y9ERb^b=|uu0TXytEFyB>uvZZV4c8+&QO*mF@H~b{g&&!eeYT+^Sh6j(zO3JYH-R^S|4V?EdWFV()&FHFrRlUYTcwoEJkV5Nx7+00000NkvXXu0mjf6=23Y diff --git a/core/img/places/files.png b/core/img/places/files.png index 9c7ff2642f91b06a93376754d762f402e3f36581..52e0c6bf949ca5021b22b36b9753d16faedee8ed 100644 GIT binary patch delta 207 zcmX@XG=ph^gaivS0|P^2NcwRg#a!&<8N$KAar>eFgNcT=_38mWA+GKVdivo47Nv#@#X4NE56&zQ p3UCsC;UI3|yvl*k=)VNBB+x{Lx8m_K{N}>P& delta 255 zcmV}c87#Ro#0001UdV2H#000DYLP=Bz2nYy#2xN$nFg<_8NklCVa^xP1~>&I=clVWh958)qMj16aW*_ z>JCT>Nl{g%*x!+wf|r5ZFrelJ%#(p!GIA2qEwe*d?>jFgX*8(Dwhj1BK29|*?L?3Jaes4X%<2BtFb=venv3$0V0VyaItgbm&t-@G2ZzlZ<;002ovPDHLk FV1mjxYU2O^ diff --git a/core/img/places/home.png b/core/img/places/home.png index 2945b84e868b2ef01de8c7751fed415ed1011daa..e664719e2ec960407908a497a4372e024f429062 100644 GIT binary patch delta 268 zcmaFNbd70(q&PDJ1A~Sxe=v|@E_U(^;o#u7{m}oxL_^#9zyO~R*E46%Ff%htgMo;M zh=72Al#~=NFE3CKNV2i9iHV5;*(N3?hK7dP+S(c#8Y(I(ii(P|va*trlA@xbf`Wp4 ze0-c>093D;qE-mBOu8hH<7n977}|OAm7LH97D&T#_Z**F?zt%JY{=ALRi)V-0;1V1 zm3r!RpKhAU94h(PbbJPf3|sq4*=5But|ji{`&{^EBlBxl&b;8I7tR9BX7F_Nb6Mw< G&;$TTf>C_{ delta 281 zcmV+!0p|YJ0^!;GMt=AI)sF}#YQJ%U%dP-!EwiAxHOqt*k0fv$gy$VlH;_4B_D5xc$)o!9+vbdbt3f5ZC`O08{`3OP4MM zlAAYg{`>bYP=@7ruA_Ns2^Zpz9Q0aTt+Wj_2C~+9v23NIfCTE-3e?Zw>B{Ek Jvd$@?2>`ejK*0b2 delta 198 zcmeyw*v~XULXv}xfq|j8s_F}nVkvg=4B-HR8jh5Xi3YayJ)SO(ArY-_r+af9FyL@8 z{qiqdW6Cp@d;Yt%TFmyhcFvY85EOhS7^^W`vh~!NRgNxBF3)7XpI^?Zp!96*oXvH$ zJ1#SQzqdkb>69I3a#<^EPrFB@80i9Sf`W$RMQz7bgIDE6JhW$MC}?;nV6^#k)xD_y t?F_5)kH;x-pJT1NZhmoh&o+%34*B^)2X%}dA5RBq_H^}gS?83{1OTO7Oz8js diff --git a/core/img/rating/s1.png b/core/img/rating/s1.png index 445d965ffeb2a64310790eb99829e92f22d48672..015f94837142b64ed34837e2e36922734de24769 100644 GIT binary patch delta 299 zcmV+`0o4A+1BnBW7zqRe00011T*kqXGgE&68&FJCMF0Q*#l^+U%*@u-*52OU=jZ3{ z?(X*X_W%F?#nIFT00001bW%=J06^y0W&i*H0b)x>L&M}lG(W%1-P&L~mI@SI4YHkwAhnLs` xn5T#)aq|docK~r>ci$v>fXlM_CjA$2egH*1NhYG6P@ez*002ovPDHLkV1izzh?@Wa delta 360 zcmV-u0hj)X1I7c87#j!%0001_a@+C%000JJOGiWi{{a60|De66laV1)e*r21>mFE0%?r2z5%W8{~DIW#%QHhh?QGmyx{;&He39sawg;(lA{a)Q2u|k z*6T0~D_P&SetZTsP4l%f$vP(eG+^Ik*LAP%5V9f)==*-V9>?+3ok3P$0k%QL7#L#! z0Hsva9YWT9lJny;O%njXe;5Oc+3Rx{W5}`$d7guFPF94qfl8^>7_&8Jw+bm?R+W#0000)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^CZXH`4zL!*J@lZSR*7jDH~zIx9}# z_m}^}q3bgCNez5}Kx!m})Z@8FUp$N;V^-794j?G5zq;N+VHO2tmPNHa3=#%XePv?L z#5oAb10fMWo}-rIw7cDEg`|N{)SsKDQ1X1QKqw_2KuAoGDj8%wqLpi@l<@|HbTLMf w0mcon)Zbshkg2{%28+w)2OALG`?4RP6Ya}g#<^2S761SM07*qoM6N<$g2Cr0@Bjb+ delta 756 zcmV&Fwlj8uq3N>LW~ON5QD07RjMZcY&gZ9-q+D;HlW z0FGXmOIcm4^2p4#)lw`LwZ00dy}lSnmcq)96E#YN-bN3LTK)#yQ$N=T-9CoD=Hly$ z$+OSN$dQ!Q#rkA_J?L?`ZQB4en@y&tr_nS`>$?LACuTIi4ql~#@ z|F(ZYxv9%|wPi5IdPD)V#U#FRvG$$ryOdH^KWj7lM@L70`<%b!91yH8pcw|Orh^DA zbnC!IZ&Tk9eudB+Lsb@%jpaki>TWx>ZPRMCk`H3R`e&q>MK?1c+FdQyyGZd mdHX0%S;<*RpQls%$MyqD4?3BHWb!=#000083+Ra005J$E5MO6Q-1)%P)t-s0002YfDO@$8Pks<)|o5Woh99< zDc!0?->)&^wlw3oL*%9ZT@vmoilLFva# z>BnyBwJYk$f$Gaf>%Bzl&6(@YhwQu}?7v9t&w1^_FzwDs?a*57(yQ*nLGHs#?|;Q9 z@5oQ@)lBfqIq}Ue@y=86+oJK@fAQR!^3X-{)mZY@Rr1_d^53xZ)xTJ_#t_Tggp z-kkUAwfF42`}NrS_2&He@Bjb*(#JNk00001bW%=J06^y0W&i*H0b)x>L_q%8T-X2r z0KQ2?K~y+Ty~tf!f1$v zL7IpX2j@ybf@HTF3liV1Y2uj>{cO|NHPyNp4{jef$F7NV_0hI%<^4Q+H(IHV2`ECK~ToEw>HvxC_*qxl0f-#`E;+Z zMF=KYk&U!5`bvc0Cey*)bH5*6h!80C3h;8-6CwEgn}rC8b_Qk1Rh%F`Ce{D|002ov JPDHLkV1fbi`&$42 delta 631 zcmV--0*L*w1k?qP85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um0ys%TK~z}7 z?btnQ6hRok@&E4JzT|EphSR9g7=#qoVq;-v6Tw0R5x+@VJN*WVU}GnOg?7=xQqYJ9 z3XvS5=EdAg_HOUyW?wB%PLHg~<`TqWo@R<2e*3`l%*@V$j{iTR?x#%FmojY~zEvtR zsl9TWB&r`uF|{=s=3WzjWPK?kZ6Sof|9t;I9ipuDAK=Ae9fjUE5`&+*eR*-L4$)SA7$d;e^DOjV69+5Ay>&{ii&L2*m0P4yfFWk+`fJ28 z!nCHbym{QC7bwqM#;VL{YYb}$Hs0OJOskD>DhSgaz9eaHkaWL)0gxsRraea%#U!C3 zQ~{w<0Gz$HtgSJuk&60nuV<;FaJ*^K?kb6F4WNEFz@_>%rkLeFQ1T{ees~0ccce;E)NU3^PFuTM`2~EE@1}_-yOVy=>#v9inbfEIDoM%NqR6t3BQGD&BbiIMdeQTRQ%6`~*W+baC0Z Raf<)|002ovPDHLkV1l!fG*bWo diff --git a/core/img/rating/s2.png b/core/img/rating/s2.png index 4f860e74ca12642e13c7fccea7268977e6f4d8e9..94ac5bc956648b35bee893bfa64bcb237dab79a2 100644 GIT binary patch delta 441 zcmV;q0Y?7Y1(yVn83+Ra005J$E5MO6Q-1)8P)t-s0002R#l_6b%+}V{-KZ(v-rnD@ zG2^&H<+eEHy+Y^0TIa-a=jZ3?#zE=FOzO)<>&}Plydvz+dF{e5?aoQ<&|2=pLGJGE z@5L$a$WQOpO!3Vx@y=86+<)=hn)1*^^3_=K)>ZP{SMuMm^wvQ1*;@79UH0K(_J8*F z_uicM>$Ugny!-Xo|Ns9B<8tQ!0004WQchC(siA;sOG0;D-DE|DGL1PlFX<3?Q9kq36Z%v%BN5vN#D;N4a6Q><%K#VX{SkaZ%|q>hXMi1UK$Nu)AH`^ zb58{VMxHmG$cvZHH@_(r0y^)9z6)&y?I{npf^8(2k}&e#k9hf zq^z5^={A$JP2!;@CYz>>wxHN~PC3l{c**n3JAVMKe_xB)m)LQfcpog!^EfM`T9rZW z*)t5~r+YE8-|z1&82;mWV%fe(zDeCn)TCEmTRVCM#;&?m;0QkP2j!(WhYsE@|m!BSg$AaWSR2mQkIh_=` zHp1CCEbVlo`-WkpEYmb&-}loLBq}THkXboLCm$cikrF^@9wC~U2-&KKMgAOLmDf3d zs;bG63!P2}gpeGo+wI0>iSRs+vwpI2dqC^%DVe(fyR<;)ol^I*FvBnkg=HOHmlDqU z#VTyVH}AbA!6-m~$QB^t5h8zHcG-Yo7=^xAR$y5&4xP336x29=1U4B0(v8(Vz=DFC zx~^|5ERm*ZTbJb_v)0~(7tOxs_W+s;XArY#3vOVzR{^I;+HhZ=iA= zf?Pu+*TH7fwf$^YaaM@|OK%9sOEV2?0I>c#+=r27>{DAgKB>2mole+qrWzXKi}@?7i7~6|ef-T4fw(as4&@ Y01vaP=yqgK!T)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^3JS48DESKInST;NFnCJS zbR0#!_|9d9frJB4x~_?+5GEPSUxvdd^1M^mG**JvQ)n1`ekc*<%un$Jo@d>d`YNZq znAb8z!n7y&g*?l0^<_bFj_+D+0vOp7u>fO-l6bKvRVRS1#3E;W7 h+)4^7m-_Ul`2?fzD-%TR%;aJW?b(I8sHKs@d8o3Q2DvC6XV!d+&Sq?j0=c|8K$I z_t-sn7@q~pah$l_ZZBDX?<|+)rT+8J2!n$&N#^eE?wJW=9$5NGFSrK}W16q@MyP2ylk=qr3><0}QgM>n62S@n87_B?N_f|1Q~Y}#tI+QP6B z8SVXiD~?QsSz0B38q^8hqctq@{G(*J>fJR$w=Us#ZG2s^aqST~SxKMg==5$0D=t({E8#&z9e&P+OMSytx4HIJ+r33!3b7tr%LqI>~&a7e5i^74Iz zgizV2&g)Zux9pQ^ z)zKdM9}i|8S?LLI+jQMFrOn%{U%#ipv+=Y2pYF%a$Db1n?5rn)0IaXCC-%{!&T(&V z52e(Sl{o#}`R>G4y!GohncDR%$FfIwEx%^{sf}R<;x>W0#pD1002ovPDHLk FV1h(UplbjC diff --git a/core/img/rating/s4.png b/core/img/rating/s4.png index 47f1f694bf74df3a1664d8b5e3d3e9e3395b4656..5ce388875703076a48cbf08db65c0ee4546e29e4 100644 GIT binary patch delta 621 zcmV-z0+RjR2g(JI83+Ra005J$E5MO6Q-1*1P)t-s0002R#l_5k4b05U(Tf?=k0REY zE7sQ5*_|cbs43m5Mc&@t->)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^1Pjj_34~US z0#qabdpd0iBus*+Nbv3@NvB&Uf}}zg5*7M*_B&oOevDfON0(2_67f-xSbuX)0qa77 z@&x|iB~8}@yVcJyV1cwJGJk0wh1qt1jcK{{c=6TnFnM@{NDbgxQ3mGxG60yvDQetO+#m^)P>eA%3M z6Hy@m!?@*_o89d?S=v@knr5jH!0YDbUZmpB8wfYQq(99!$_g{RsHVf!00000NkvXX Hu0mjfbtFYm delta 898 zcmV-|1AY9;1>Fab85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um13^hdK~z}7 z?U=uB<761eKeiM5jT0#(g#s<5Lb?HYq$~_~u7?2o2NDQ!{lNew- z7#NY@5JCm1kQQ;hq_lB<)Uo~AvCU9olE!I#mk2PrXR#%}{^)(4=leYG4|r(*eG5lF zC*IlZWL+%Vw%5XPUAORmtWusq!-Jbd;n`Y}IXt+@iT>7FSVu=kYZKYO#Zs3I@Xl^0 z#62`kWAMudD=B2c0%*6}E3u{(R%F)F3OGM}2T`p9;Qap4O3IjK^?JRPSe;HMeJ?WW z$_nsWA10cnp=xDRt&C;}&hFfJAcah`gb)C_D+dI2SwXrG`Ppu3sK9Plxx=zk3NsN^%CXkR&Lf^{k^$~2qCCcD%9(B zOw&{@mvz722f+9Jbo}JK$gC9D{r=5FEf3L*Dw?XNKSje1(daG!ab%$CyCmV5D3Aow zA&?S)XI{ONo7HZA+`3XpmSv@^R;!ixzMm>;VvC$C8fzw_gYRBTVnbroHi<_qBJZMy z#eQ%RKu`Ylj8V;N1bv4JTn>7G$-3P_V)Hr6lI3BzrUX>QkUzx zg=WpH0rlr@DZvoDZW~4H%mDrlzC^1%OVD@l!$D^7m$4RqP0X^aIVY#plBKw!v*s4z z$6xqdkv&P|g(%u)s{ZLDB=HzO9PsojUuFhB59_j8EX$hfv5TBtq_QHiGIv4M-8b+C zCs5v)2|U19+aZt+#$zweExh;3nkb{$Y+mW)#2Ssp(h@HkEAt!>o*$x=%lNL178$6< z6Bqqk{(%;Mbcys0WcM)N)k6krx+G20%)M}Vo;T;%wBto&El9v`2)%-;mx%QW-sqe} zy6ECbGy#!xkiC036EM%p>W!;fQCXP@7`rE+*Kj(=_`?C_Q`afg>exSi0zmDN4Z@+F zYXVs;Aq2K<-?uZD`)sq>ob1O7%gRoGXVdp=YP+vpv;Fc71%67uoqqd%()s#r!jY3N z0hz3K)05-z@i9`$ytj-1Y;SMR?8*O6tcx4V!_Sr;#k)UznyibJ_v$v!xT3Qj+COZ6 Y0xSd%q-`{iKL7v#07*qoM6N<$f|ee@Qvd(} diff --git a/core/img/rating/s5.png b/core/img/rating/s5.png index aa225b6a9a9e2b12e4f9c5cf91fe0f0b29a20765..da4bbc584795ae60fe2c469ce217f0ad964da283 100644 GIT binary patch delta 603 zcmV-h0;K(`2e<{083+Ra005J$E5MO6Q-1*1P)t-s0002R#l_5k4b05U(Tf?=k0REY zE7sQ5*_|cbs43m5Mc&@t->)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^kU;6zpWbD*6^jQfNgCQP%{gfx3GcV;&W6ZiS zv{@-Fx{GF}LOjh8KMrPDt~M3WYP9dB903gMQ9doDhaxhUTPKPH&~}_ow|j9ycSTgZ zJoMuumm`3qD2|%cb?J_XR!Cn5QY3)=h-$}|jfSx$qP#>%zJEmm(Dm#5cD21JB829D p7!z$M62S9vaVw%=Z6Qg2nlE0xITvwN4ekH{002ovPDHLkV1i%0J{tf4 delta 848 zcmV-W1F!tJ1*->;85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um0}n|=K~z}7 z?U+4p(@+$KU;D=PjT0#(g#rzwLh67rQWgd_mLf4AB!u`UUD@CtfRI?&5E27yz`%$E zMFfZ30`2RA134s0R*cM9HdDD&6aPy*{(7eMf+)JoE`6;E4d92p|$gb$#uh z91?ELSDE6A+<0yma3|LqtO5WSeAt#$>4f0D5XdylgMN;kYzd6tS+$j;kM5U zO%N#s!i(KMxy=gP)(-%H=StwkCHPJouFYUG9X4YCfOFT^r@~Sc#kVZ0>!={cB{>*{ zLLt_yzKUw^Z}^^n#2}^T;k6XFW~YaFmfaE1WWPT>@bWV3h7Ox&SX_OL1kFy3wXw0` zk8_t{7=7PmS?=CnSy=(caj|Cg%>kJUPdU2@n6)xEy4VN!BNziopNHMhVL94J!J=jb zZW-mcaY+^mg(1P>$Qqi2PhNV?u{wimI^f8B*Rj3A`Cc1;mZRb9wO1nrn+B^l*>NuG zO>(eb$CWj56_i@K1ykDrgtrunZN%mB34w z6Y#_&%+?-%d}ctTr$H#-G99eG9kKw?vG$AJK08aSkp*ZQJAjymUMaz9YLL&YB9YEO z{qz_BkUlmCr>TZ|fhbvneKwcN1?%y@7A7vN(FHJ7G)xugrJKlKUE_ey-QRZK-S;bR z?!sy5;R+BTD{xUhpYL0f2fNTxsRYK@OtU&Cmc?f)6Sv~Ek5Bx=W`#N84SNh6SJqJ+ aa{L0TsY!fXgR$iR0000)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^S{QY72_s`@fNiY)YM++~|MP%r|o~f746>{w?ogBZ><&G9rM6Z$wxiG$I&BQP+e} ztWk_61mF(_RTCHN3tXK>+(Hw~sGNrScX@Ouhe- z)IN+P0LQsjkE`uX0}|H8k}OLY5Ww?dace}YpK)AR{6>G8PvAX4z&lS&jQ{`u07*qo IM6N<$f)g7@CjbBd delta 901 zcmV;01A6?+1>gse85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um14KzgK~z}7 z?U=uB<761eKel80jT0#(g#s<5Lb?HEq%1eEu^bWuLPCiD|VhY9WWLf(1~o*B4@qx;1Uqg)`t}?=wW91c3ARHw!sqRjgL4wGgY(Xbj)e zW}Q0&yxP}^rfH~}j;iTsrr`MQ^`~;ks#rn@0BW_`Q?Ujv6+&cx!cxW(JNhvRIzQ8Q z9@2N~=Ol& zKsp3c0`S^$jJ3PFo6K^m z>$<74#@2w+8#k1o3tqF1BDTf={|hG3imwy29sIB}Rj@RFS+kO?R;v?&jXH0dd$V9o zEW$5d{Xvl}N#unn+WOG3qrxR|A3yBy>bpNp6)bJmS?5)&)ro#ROSoB%O^Y>k7gX5( z5U+Cx`r4RS0DWzXKsuN&yfv{{X2}}3tWv3*E7%~)|LvR?C{!XBUk$SyKzpcMriR;xrEMyB(}ou8}L2u72M0(g=e@B6U~_YGY=56M>-3g!@8*R^@#eknlgr4O_ZoPfaapjQ bMauCn%qVk4d-E>q00000NkvXXu0mjfPh`9Y diff --git a/core/img/rating/s7.png b/core/img/rating/s7.png index 0d18a1dc025eca5097601a17f12e783c78a3bc94..3381d066d871291a5fcb47078173953d0242708e 100644 GIT binary patch delta 604 zcmV-i0;Bz_2e}2183+Ra005J$E5MO6Q-1*1P)t-s0002R#l_5k4b05U(Tf?=k0REY zE7sQ5*_|cbs43m5Mc&@t->)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^Q)W7f6_72V;ruiulf>|&#Gk*(vyoS)~ zJjHR`*SZ~X8K%10M7h4inLPB zO{F|Dp?TaqY`m5LR0n;nmE(BjsTnP&{SHeZpjRJgr5q^_4ar_?Lu3)qaNTCReQ_dp z4Jo-N{rLM70*=CNSe2e9cS#Is`7o44zxB$|AtBt^wd`d()7J qYyhxnBa49NMRRLN!Ag@xe_CG;LPr{%8l*Y^0000;85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um0}n|=K~z}7 z?U>JR(qI_JzwJxgmqLOtojRP0i3h{cdGX-Q%S=2N6Jz{OcJ-$JfyTs(H)G;KZ_|TE z6P+<;n#`0LWiSVYveNc#Y3l)tz+iMzNilmaEp7Rv&-eNEd4B*$5&v*nUwpH==Ks$u z!!UeRRj1BMgn6jBc^9sKQ;npUab<07ZAE6-!?5^q517?8A6^}V5NKZ?PUMidvU=TG zE|;gu8v6z874L(lG5`Sm`{Rk65m#2FQt6)8>-DL!4*UX4<&jSa0Z#<*L;#T}s_UzN z<&e0t0+&)sK`8|QD2g&Q7T1^9?n~d+-lDB>!BSP#Z!{VJ0L!uv2o{_V2Bj3qWD=Q72C^(i&guedAMW_P z&;*fEAiUW9liRGoZT$cMc&-FqT!Qbk;o1x~(_u3P062GJJ@za`QGCm?y6y~OlwgBV zC=?=R^;J}Rf7ADWBnBxx53i-bH9I}bv+PdNCi{K#z{}@hH+0xM!{W+oBxrUfSQ{G~ z{wSv!hSB$1mgVmC<>h5?92YsOZw$y>e8$;Lz^s+Q(ZxQ%pClPb`U32R4$IMoCK+c| z;Jjh(9VJ+yP}nDaRIGi2@X5J1a!*Vp7z5Z%wl5uDC3OCBJ zy@Cz){wP^PXF;i@+c32qK$z=G5CGa_5jN8yow%}ZfSV;&Hk%#WE^@itf#OHO8oCZ} z_KM&H0hXbHxDt5jRHx^%pCEP(t~du)D~8)Hh$+i7&3z*EiYUu+=mB*S)`$Xp0~M3t z#RNPt3A43-2cH=b>1hxOxJ(DDZ-*2uo~(nSw`c!r*3bg9jU7NtL$8!zH8sd*R**<% zpniG+07xI3gVR()y+B-9gFQQ!%LQ}$LyJ5KYj^=n6%A8Gdg&JO*H$^;bNAlvy9a*d z%{@3RJ)CGUWd)AR=ktB@`(Q;|DwV((n>wqr%UFCXK6WWy`}owKWmcH&;;>uFQL>I= a%JB;xy{#U?K0I&$0000)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^R=ltXhxW^`}Je8c=~!UDj*)z?Cn0)aA-0DN1PP#_cu7M?eeBs4ZC zK!E`4`Mf7dLcfUO7CyWrvHEgEkTl3Z(xlI4-|~{_W86D9x_nx;Cf+a-BY)!*uxun) zC-6rvX_`*Ma1cE>RMT1$7R88lP6$D)5vzFg{x%+mq3fPIy0&Uf3M)kAn^Vz#omgFX zDZ9^g%{yIPwWmBR%PD_CgIINEZ11jVI_gq_cv=-!ZlIPA6Klp>qx4vYc(>Ki80!P7 z&r#pD2gBjj8Qqs5mROtn;#(CfjZfhuilZ)d9J(h%zj-BrO}Cks-p5 zq$D0qngpO}xBPOmyDdkCvQ?6z7@Gv}x?bGNQuTihgvH<159}yU!=3}7_5c6?07*qo IM6N<$f>Ja{&Hw-a delta 896 zcmV-`1AqL>1=|OZ85#xv005+N+wuSa00v@9M??Vs0RI60puMM)ks(um13yVbK~z}7 z?U=uB>r@oSKeiM5#)%Y?LV=c2A-w^4q$~_$;hLS%oZ%`VZbG3QyOP%&W{g*56wT>+tX}^ICP;0`K%rLfk>q zGrx8I14{@2K%>#P6lTE#R? z-^8Ygp_D z=Nt9pzrQi6d4r(q5U7%!n|CRQTJBkY7+*{T$u!N;XC-@kdnk%B!P?*7Pv)uKb=^#? zi94YB(rqQ^gV%1Nh@A<*e@;rY%8LYD2S4o1bTY53c>%M3ENd$G<0_tY60)+UF5#zN z`9_f)N#unn+GeV@)oM#i&pg)5J|H|hKq(gST^lVjP>pBK z>!kb}Eoc*e=^M!QLADk@N38KuVVY*<3)S3eps_=_NumwH8TN2_ZajFPU{H2-@|)&^wlw3oL*%Bmgz$8PGiE9%LC>dQv!y+rHHnd{Dn?7SlEzew!QdF{e5?SIZm z?a*57(yQ*nLGHs#?(XjI#VPN|Pw&-C@XI;z%`frJQ}NrP@!Ws$+?w*xMe@~H^43-I z+*k77u=LhI^x0bV-d*$Ugny!-Xo`}OAh`0xM!|GH7Dvj6}90d!JM zQvg8b*k%9#00Cl4M?^pRuORl#TKkU zE!steqP6w?-^j2Pl*>WC3&{Bn=g-U#0QfgPm+h&ZEpn3iPu?tkbdj^nBC z4}u3vaE?*3a>k1MYEa>5@ird&zHOgdDqo{iQ9hB#>sP)3TsX0O&bIYCRaqldzC)g$ zKuLEd8?|-aQdVfSX`q%56JwUvA;d9WY2|?G=csR*gW>S%Ozh)T@ruchPvIm8gRZbF zv4>ZiGen@`Fc8Y=b*H25;5Jnn%~(1msNnoIz1{3?;}s#_($rTaWI|w}!0+~a9&)9-*dl02rNclz3 zqvxT{U4oRGOC3wsb>8W80055TAPRnTzuzdO$Y!%B6bevPRTxM>>+MZ0N?i~o2O`Sx zkAiLkLGLR7APf|U@&dT$BXAj9X2N9*0C48&TB=x@rg6t{Vx>nmF8KScQmF_-JHU8z zjfV<@lAlG`(-7Eydo?U{+&xEa_Tw5tR2SiPOt>P${PGKAXfbuH_4Rc=PW6^$4SZHr zHU55SX$gWL2tz%faPG0-b^*Iphd}2C06!gLAo;U!J0={@80lDASdofH?Syf`uT&~= z@JBY`;}@O^tj!SE9t1KQE2G~*9{O-R1E;S%AL&?{Sp7+V7^nXJ;77Ipz<)uxg&VMq zZ9tkCa0&o?G7p!TP>x+3YD#Hk6^q3~OHZj(8Vdf{Il$YkLXadlmJSjq5S0^qb&`Dp zaa#!F8L(D0*@&M4mTlWZ0q;+Us;Xm~^OyvD29>iAKLh~ekIca9>WLgk18aZ%FO^Es zobY>xalWmiW9!H-Tu1rxiU53wpY6Q9%Ns9m!|R#JUNi-)NZsXfId01R({Zg<17qwL vP6n$_4jsi??;i0fYxn?ek~LHN3-%rR=n&6g64PZ200000NkvXXu0mjfs$+Wq diff --git a/core/img/remoteStorage-big.png b/core/img/remoteStorage-big.png index f225423303130d4524e184c622efc42c8d8a3b7c..7e76e21209e539354805d12d8f92c5a8176c0861 100644 GIT binary patch delta 8335 zcmXw8XH-*NuqA;2q4(aql+Y1^LPC|QAe|sc4MLQTNJ*$FkObXBvJ*!QRQx=7Yew-j-20QzNB;A#nlIYJ#_Nx zhSz)+j8nFYr*Uwll$3)(DH8aU!`5WF*YEx)Pi#uwtDRjOQ zoz;R9l&U@??`^j4xa0eR62g>U9(SJ|caAZBQBWGvXblM~to%$>CmYTul_S{`)pHg% zZqXYk{99tVPgam!`=-qr#xCm|HxU5L_3T32`l7l`CZv~AXK*5~XUjL~x`%YKtShlP zX#UFL|EbNrqZfsg`cQrVnU>XCc#H?0xsy;sZlRKL_?mzMDKZ zef$Z>`Q;FAyLMuCR-i20=cvr@#)e3tQcw#~`QzBp2P$IrcjY~L@Jw!30Ils{vqe4; zRTUx){T@WEGMH@D;~${FL7;$+{zg~TF^A~%Sj`;&ie3#Wten8uIdliHt{3rLLwsWC zk-$p`?u{D($G9~MzEoox4H%9V|b-csd_BnOhr;{3Yxzy3ms!=(W}P50US z1GOxv6xe&h>>u&b%j%1uGirH2!_?E)QceO3Ph)Ywe#fh>GX&~SYnrTtTRl+O3+kd_ z>bxOa20&`>VY^|c)~MO?AK(UkLHi|2a&J-^(*G3yN8VM-*jHmapjIM9DOzNed}L}9 zf+Ks3YQ*-eW9_dG*QUg>KM9MQM>I&PTUg=*mE-#0VM^;McIZghNjZ&Yia=T*Ca+-% zJdrWr+Vp=wT5rwRvCJHA{H~s8^?00$mmIPeQZ;SOORF28P~mpdXj@mwPoi@S2F>;y z0qPxQ?AT_G|9$1pS@o|Zldp06j1xM_2b}%Pk=Bkd6z-8x3+Ayf0w-w2NgPNlCnxU8 z0a|R))c$?}`(|Wv8Nr0!!z^A?>?V~TRZcp6Oag5Ejk|!Glv;CY-|91iIuS6Gu5hFy zuU>*?-kQ2)4d@R>V$&c#G5$Zw>Uhce2AGPcDt3(n9pfoxC&)%An%=7yAVZd9Ya^pt zq(d~8_3k?N^+;i-Noivj5# ziEd2(W$Qtwg>*lPXhn9j?hZ!bW1^ZZcX)r54UulhzB*CSF3vyklh^k?FHv-wiCrpX zYVWV7FQx%b>RLKOz+&cr3c11eEl*-cH10HkjLP=Ee`wRTT#L1PHu@!ZB7YWP1WCBL zXb4sTD}m+f@{;aQBiRRk-jrXS#n30B8Yv21)B94Q>|)M(|BB5MvJxlbA&Jm$b3+5c@uuisRcKwQ>2S`uP&=rrZ{-AysqmGq>M2)W;fjm)>@g_= zZW&biw$Vvb@_u@ugg^uBQ# ztnbsFhnOObxQXfec4?@^7@- zII;b{^EgWt`Lx2lV6JBTsog`El%wjEgnfEmP%7on6d|g^0YJF=Q+3)B2vP7qqMG4~ z^u*>ijPx!&Sp0cS2k1+)Yf&EmLOg5q)|vJs7!3)wEm2sNW5OTq+R^WiY>->tJ6)u{(GySy*-b>VYZ zbO@%!7qinJdxGC+78k%Ph-}1+EUZeb3q@)bpYu;#hT~2+2wvS*#w9ma5%MYHvj^e$ z$pk9cIyhroC(Q(7)lex!fkd;91``8&@<$1&kQ-~1eAw$PVzcQNdJ+uf&+)tlN=MboT$ z%#rta7U_wXVud-Fqr|%GScR!X1ZFv7bYSbHnu^F&2^RsIYk7fXi>qjUx7u+#afgk_ zB+)PJy!T7ScfJz=4>siE?(OoW;oeZbn|KUN85&4Dn1p4+R1?QtD0atsBhX;Y$quU- zZ{>!O#vZBIihutuqfDSKk~Om7ay|5U_GTcyxlu9Hshl#>Ub{Y$2ynU@^w(>sYtvz` z#T2B#Td-Ay+2>b3F0t5B35sQ=%VT!?Vi3N(n543S=qZmK;XJ%4)}Vig#?$SG$?KgA zS)03YQ_k5;w3t1GM@|MVqF*r)M@s?pLtT$DTH<8|3FQH?)ZeG0$*J?M>FbA1s?eM3 zl)Rwf1RoVE^xMhOVJ#-;V28tC#WMN|QV=7wbTS_EmDVjAK`8`Dy0O z0UFM3-#`7`D<5g4E9TXF-IDBRl^&LAr2Sd8e8iL?pM<8LJ|@?j`0UiN%S^>5lT%eO zac5$oOatabMA|IH`M@pLxBal71&~1Et_QV-F!v$WoBnD|&{sVwwGk=}pDz<}MjJI! z*_v-lHbqzRuZp3OBk-f5tCK|sam{90bSa8s@X@<JRdY_K^JkvO-=(uFhXWXB+NsNL7HBu`5 z*4F}>+KB!I*7->iZJMpKNNE7}apHIf%jvsWO|(WaY$FauM_HhQj_&sMJo@S(ZN4;J zk=s+z(41*FDHt70gB-dp5qkpt6Hz`MrYm)(^->QW9IZ1nmx+w>jx!R+cEp#6`ez2V zDnX87hBa)tUyl4pg_YVVFe1HAE|pEWuVCGw z=s|VKROnKLjWMn$sl`5hm7Ji4l2}6Jy`#8P;6+sM;^7a?kbp-txinx;DI|vq-3-qr zVqxFu?=?FLTs(>`Z<(}O=aLt`D178uAJI(J;@eAhSpuZiA0D?7c%%6Sg_N}Z|!O5rScPR?@qDA>VZg9Weiakd>Eg3ly@Mq_l3DNm> zXSg#IQ(m~P73-25=rk8W5LDJto!_(8BaVvn-(w}cT5Y5hLnbPA=l;y|Tl%qf%^^y8 zT0D)%KThLLgS)U^$HVQdwoC5cfAoQcR0T1k;(z{HTt>%K9&512%2N|QR%Z#Qp$QiW zgzJO^JnCscS|?1E)$UM4&yhOE4Gm(2K+^NGcG_=^cC>GB>GDl-hPnO z;k~j(<&+P*@nn8rq{sq}ea4=E9_?<|EXbN^52wQCOIYEX}hM%+Nef2n7#u*39LdX*YH` z)dpDzYeFSsKT+1^cCSWge}WTcU}i6|itF}4ovi>%(x=@<%em=}-I|6N|3Z-3WObI< zA&*K9={cS=V+R>WO3%|Suv{9Vp7YL)rypEfcm;yde-351;*zG0ye)Xeo`WDU@z8Jl z{5m)0FXi6VF!c5KmNNDDq@&mAN2h0TNk{z=c54&` z5=X9rh|dEqVH(`&kNtHMe&~w4xb(Cf;U-k=uoAv7pphMFCqqg18$zhD1~&r$`Z;t zcbEQ3^dU{1b-XAT3C(RR08Db}Ney~`jE>60*p0tuNvX-0;G_ui2b9zIqbrF{drsWhq{gT6w`z5n>dkbc08jvPUs#2=5L|= zzgrY1X|*VOQ8-0s$P8do7*gc+|;ZJ|YSW!PD-)<=5 zF6NJAcW+x`4wDszT-(;g-tKHXyhQwk_|Wa{AKw|g17|0Jk)>8OrSa*olN+0kl@gx-h79K^DL5^UhCD9Boga8Zi+AewniYSe#e)-#>&;E zXuG@g8_g|!*EK$o+6IHsv7T<%$N%OAzKy4tyYjtTcU=8EtN7EOe&oSNpt-Y+N3oFG zMbeAHUbph5qm1E1*kDP9ErpsHHQu5nO5-V0eI`dO72*A#MgM#eEtcjVBlv;yKhNh! z;Mx@ZBO(LBBvQ|Vdq*6AI(O@aft=TVjOfdchxYS+@vt_d9S4OMyK4i_HElJ~^7l-a zWH2ptYfCPyE${l+3;(Ir4&sD%AAIm38ET@hUEV^xk0J>ZlFGh)toA+Klb}pqy!ASr z+K_D~OcXC@Aj0p32tRUCqTeeE)BSq%L^IpgTDki-Dl@wST6T8&a$>U<7SH)5#RR<{ zPUvLirwd~MFz()ek1H;^wsdaYHthGDPcpm3x%cc>DB+xPyM!idNk-}bbPEi&gsPp+86l~(s5BOvH(SqOpt@X#>wGwOV2cLG72Pun-*3nAWl?z#sQ2&30 z8^I+?X7My}6&q93(7DYjta9I2C}CaKSNGZ#rtd%hKFBL^r;hFMfs7b>WOzXbUKES@#7ywM$+@Rl>6j^ydD?;-RUtx-E&x!RtK<(!}q z83>RPi*31u&bNR(Vk5?6tw?bX&ip`?mMyM4aqtE?9Y}E-p^ZMCpAFsoOivIaLOuwr zgk@_;D`(}ryJ;qssfu(=os_DpLzc_gaEd+E(T=W|ZK=8nsB;CkpiKLG(1!4mu-uda z5^%N2$jtkR<-i4!em(1c5hF{!G ztSebm1c2lM`iW8?Kg|oBr;uj{0ZI2gSdg0(#%>T3pSufb8tmPP@Of}3oNYHDI2!O- zley-VJx=$EIXwe}6$x+0mGiyYI=ufcaWtG6Q8TO1(7eY;ML2hM^IM$#-7c(RhBN9j z;lgXRlDwegc1n+eeyEI#0Q>XC|-`ULl157-^hhh~XEpf8d@1(`_QoxuFP%r2H6 zn<V$9C)zKK?_!y-}r@?E$s{IwRtqYGjHgfbgiiy#-CdF(fGRlg$DNow+53Y-Qpw_AsvW7PbHh| zxmOM$Q#2q3Zkx9-tvWF6{Jj)A(LB-8&|Ce_Z~U0BKYnJ`9)BWAm$Q^)>4}@vlWK5T zRfoX70q>jYoOf#>J@Pcvx#YO$9P`23V@l~uf_5!PB8$Py{G=pe*AxcPCx&RnPv@@s zh>3gqn8Cimu5I9h03+1%QQy($F4$2{w(ZvTv`;OpD$lc>4W%{O z5YcJT;{D63F8XCtct*p@N6F$c&q;~Lu~c%L^h)2#_W?%HQF*IZT1hi3U6HBu@Kx|F5OBKp+Wr(U~HL?(e$ zzy#gS>~x;kMEQOs6m8n7+4FoUgA>_NFR?yrdD_@_7{;tp@3Qil-Vl9v+Ni0|lM9di7<5VPUC4Fs ziv+g{$A1bb0^iZbv}jXiQ#mN7nLs?q!TpFrB;`w%UWd5x6H3e&Oqs%8GdV2dBTQ*s&qh0_f1(BMYTCco=MJIc`$&v7h z%Ry%v%-B=-QMWVGa&XVawA`-?m)Ns1m&_I zT%#q45e+4Yq|gvdh1te+PNin$4_4}AP0qnPG#QWUWzOS5l$*s8u`>U>fuEn;5S4kw4Qw( zQURs3)z_peyrw@n*3*0N2C(vht5uapZC6ZAVao3d5H@+rGbUf&PQU+?O;+o)cmIGZ z=2iEUBn@)%22Sc#J?cPm+PUvux82CP9v6K9y(ZJ!MZg>@SDTLL=@6ev!4MA={lNR4 z$z}B7YD0h8Bb&!eWo9+IEV(wdJ4!;r0VAA5670A z0tCJ?KYZsI)d33L^ITPRPEJ@cJ{FFbe{*{COsMb%-GZ{&-7nz1)_G()PdIIj8bEyDyROUMletMXJlD=#356 zjCr-k)TY_<1|wfLG!RQ}+K=vCaM{M<)xSD=8KlRu+6R0D6)67zVeH-ZVm?dB_Dwxbd= zJ|{wjKs1`$kUG1i*wqI4JbvEqw=kBo3@DZD+k=#6;vZ0uScnXjnzVe(j| z;58SQ_Bu5K85T`xN5xX@jO#UBVVOaYMyN(XMOBdpmSb9TfdPS- zKs&TN)tlBs&Ib2aDR?icf+fjyu>>NjVHPncSr#AMW3^dHy&8QdnBcq#&ZU}Fq4AuY zo;8w{jms7d=n(i_w3#rJ`1VFlXa**uM->nS-2aKA-~h>SC_z>~2xKT2X&o~)mKtVV zirTh!VZY3AXbfh3C&$rvR%SSUXu^2t^7sfG#OMlr2JUY@v1O6&H_>U-}0IiZjoK$ z8ut3+EgGQ(aeXRFNz7O5Z)X-H(P(m$*Q_4YCNfo4uF(O^UFUWGTX2(@kH(xcwal!! zsm3A4IM2weJDf5l#ExWLGNw;O$Z5I)?8c}m-^ptTG^|A z1%Bz;(eb%!ag%o&5`ma`(=AA9yB+IAkyeFt?Ss@I`n;jLw<> delta 8964 zcmV+fBm3O6L8V5JZGR%7NkllrJOeR0S6I;4>jGPkp^fAuvLNI0ozBmX8nM>fUjiz{>VAT z1HT{$r#9W9k@*v7zPAYQGhlyU!PwrcA8<3Ul>^XP@)2+Xa5_OatLYw%)Fp%ZIlu(p z+uhn)hgguA0-xy_`$*Wf2yiU$sGTNgq>*_XXuh{GFnA-#ZQ8TcYVMjSPGn&G$NigDgcH60^Nb zj!l;KBhCW;*TFVR+9t98rvbkK{zwqcZn{n*15cy*-Z6VO$}OYdct-g+f$j>W+V{cdpDrrT+cV%sFD7u z(R^=deD7@F-U!HWaBjG0p6KV(3dg3kY5m<6co^S19^YHE=}L|CAE5c3hwmK-JOO+^ zqB-gSRXeC--gP`{S3ZI7?TPOVYPwV-eG4?-8-EKtj7|tIR-&U*0vOXPXs#lkWq@;l zd-1)|O}A>Khb_`}ucPmc1Wp3JojfSAZ*k!wJGy znl9Ezdx7SA!+>9)=_`XBz?Jtm30!$#+ZDL90LZEUE&l(f*3olvlaABKpf&((FuwOA zV1Ej*UkqerC|VgR*OKWm@U_DZOl!9gaHO^0c4@j=qtWUF+2-h6)0z%;7A0t;D}8Lq zR%l>x<}+~AW=WbWPpd`$Z_;rZpj8IgD!^}nogAGRy+I#AQ)KRP1X-Q5G3)>Fz>!Tl zP6MWiVe`>AlnG|J+Og;V}O!?D?%UB ze!wiWjKO1lNE?&BCvCe8IG7-OqUnsw{nUar+mUddaVoG8@KP_+#wyw@z8&CtYrj3$bk})BqiOoe zAJAI$NgyLftGSNkF8^2kgqC{M84cok->%QaWIWH7YzIun_kP!;;|z45Y5K}Rz_Y-Q zGALzU$P=Gx**Qnsl6j2!Aw9UwIr2 zom$KhTxGOc8GEg)SJPO4VF72__;Iz%a0FG>{$+tbq2&}dZMyHkkq+Q8ba|s9Qbenn z3|dshUdyx7W=H0&uX6?B(j6GtCM6V@V0eq z-3VM~jG2>oagj$#Jey68F@GP6$N^{~Y)iH=#!PX3z#`iMXGS*dZ;ZJ0bp}91*eLv4%{jt zW7^D^#ujY9b&kf{4}Z8I#l(sF9ZnRHbNjE?Q6ni11g=KwE57d75sGTHD)ySY*D=`{ zQb+BODt4I*jcv7i0bOrkqJ1BAR!v?I_=||N)04TWh%Dkr8`lO#Wb7Yishg|pEh7D< ztVBo3wu6D^fPE~LJjBw1GNW-(I$6YCBST}vfhLX=5(nB?)_*R`v(H*G6%E*a56#kE zzQnt|6OHC+fofT_v_n+OEC+lKI3wdcn?-1NntYtH-9uMky}AbNcc7(iMBeL}=se>b zU_;`uV_z{Uk4Q}YL}S;1Ao%TXu$R;wARQZ>qsa#ZOnYvr`r($dT{ zSt(B8GJmw}Q#r@>8=z%%kj?Cf@h!CQ&IXoVc9j^#%i3!=0x&+0Rwb~wXpnH82AX3B zs&%a$agcR*tVeMhxR4kPZjF~w7}m$$$GrV3IoL`qd10UcEl(Cg(>Nvq!wACfT4V6` z63&t$_F7SpWC0DTx$w)n@4M{4v>`#bkEP-d0DlKCcP^?oB(4nx_j91d?V@)x+P4vh=Zxd!K@KSrKh^JMdM4@O!}f_}&GUF8)^^ zy!T~e-#=*c^+u;nBZ$bFzzTV0TtTmGzmq`)Xk%K3`T-hyw>?2Pks#a(&BC5s!BOIx zB!5apph2<8a7z59e*xPPgyVq6>{7w^1K%k5yeo}i+0w~<=pJQK#{FN0?qvb3C~YjN&01|H1G^D~K0$aNzV~_S>^QB0 zO;iWiei(Ni7-MGiLSGv@KLf3!;7iW?Y<~@GitqgfIG-TA3g5dHowqqCfwJUji6WXU z{{QS4&~gWRip`fLQJR)9ej;!!L1^&31*{Er5OYiNWgXuZu`cp4XnDY>+>mqVFcF!V z<6wEe4A5-U$Ux6R5F53U`G`77*iv~i6rJN3hwmLs5KadEitk+x?1?UQJB;d++J9-9 zhX}y3fR+^fK?b<;?1VSa>R^|BR_jA6hMkPg<&=pKsRGC`BGPhoFN#Ki#AOz6Ue0-@ zI`p(*#+W=iZ-j`fZH$RlCChW`4+QB%0}ZmItHXgFm6b07x7dvBlL*33fj{7T7Xy1+ z+iqyhS}h4^vkP`;m$0hnzG>)M*?;2+!kHFei=oQ|?^Y8%Hzk0#Fd96ZCC3|MdUM6n zZRlS9Z@!?7Rc$mEDmfU~7q|o8)6xh*_z^*PGVo<|5_~4*CbjeItJw)Qnu}M_W#DN= zbDRo{CJ4`qfNTdeU+LQg?zu0d3ut%Y)>%39acoZe`3`7RJIG4FCHUT%_QF+>L<0<9qw#dtL-^PZETCTSvl!1+-fH zdmeSnv&)PH{Eh_SPYA-7BLEwM?;VMzf2>i%fK=xA;=SIOE;O&JE3$c{h_o{vFb<%t zQ{4LV1<>04lG8evXMbP(_4wZU-Hr&t2MNOOpow`?9O4N{OY9FZ5LzA8^Eiv%`3F=lD94LHJPwaChT-_n?!l`&q||%lw+Fdq3*Zp8}jt5P#m=qm}P1jjqW(7WX+Z zDe>IO9$Q3SrF&HS;%x->`yz55>Sb=pp#`;BR{;glFXJKywFzKlM9}n`oAAA@W7^Hw zu&y1@%z>#6c2-oQ<#{b%L>KbdwFk(2PwX1hH<433re=!W&JHrC0<)=uJ`O1ew6|j4 zm&s^5Jm=Vc1%I^O09YFRTM9T8-#Z)MTP_B;E`soCV0$#oX<7yqO!7L$+rEM3gMEV_ zyp=8gRdodB+Co0hf72D)ScX%=v6&hh_=eb2HfSIs%LUr@((cZ4FHbaP+> zeD8GNVuG+M0=QY|yxcX`X|h{nl#G`$n4Lh$-bKrn{eO)h3=?SLf@t*0USx*|m8E*7 z;4y|?jEigoeSAzrUQMwD?>5GKToh;`GQ=1&J)!Lv`XkWFQik3dnL90?zXabK*<)`I zPA3S@vy}28bTYYhtvLxA?L%}zc}IfqvJ{YQ09<8(*3qUxq|9>}=-Tb3656f>)DM7H zBAXTjj(_f9dx(4!&03Gzc9Z*?Mr+4QtfKLv$BnYi5{$Nt*Q(b64Yi&;Bu2a;nP=U0t2MnuA#Hn$pM@)k|Jk)A0!PC&ErJGxivI#@(T zSOCvP=LmlgJLWQDOuIGOU=hi)-9L-oHzhhz-G9b>Ui(34$-6D_z2gYNi3u9+9pJb4 z-bIn~JqU~=2-DNweQz7IcI6T^)5LZFsJB7s5)V0y{4DKTtvwcX>%VA>dCKuV{)E=4 zTt3ntcBOmiJYw4Hm|l233ub8R&+et8W-#=I)?3bMuba`VfN2SUdoA++3mE_#0sI`D zJb&-&rH}@+9p*s)J{FO?=$>hPV}avm*t+{y(7ljq8psZfFLu$_Hd?#DQ#WwqfYb`K zzPAIuSFD3-eB$@eVCD_msMXswI1N;}u_SG5f$bJFb~9`B(+`22j4>zoryt%iKsrp? zwHHO>49DVo$9D^pN(b2*R*QX}@N}%5#*EI@I(NkOKa4uSqQ5B)wkaYq(hjs+pq|VHn7eG#RSsUvs63N%&v6M$ zJfki#+jMl{mRsi9u1MQD+s(36^4biL?FD=v&6AUq&!CKbW!u)>PJp)v!sQwzIe##u zh+Wc`_JcT#GMA!pby;$S9aT*Yzp<~Mhcw-H;7AAAtE^P%2&Tq%(T*K&{{R{v`I6OI zixPw%#x&Uiz#uyfa6G=>V3t!Nh58RTt^?xJ?r(2KX*U{P}t$@-_ zx-aC=iIx{Q0@xMbJDnh$1YC*l-G-Kf+dikWO9{#*y$wjK!OlR_izc9vH7{G|&lbSn zMdUc(m$nW+c6-u!hoD*SKYv3D!6wOL_PPtAMT)*}uX{Z3Jg^Gt**#B0wgmP{37y)J z?sIWVqU%#{gqB>m2-w>g^Qi-123r8XQ$YJ&VDI5V`*|BJkGLIhv50&X*e_vmji=E1 zrCBngqn~Q4H1FDjz;OiO^Hz(kXF)P5<``KBb@R4lp~(4H1J1zr?tcePBM6@Xj>7k@ zw%*8*6~RRx1M;`%;)35a##|NKcd8w=|6sM-)z*{u&kSk=@VGJN&YbJ+W3|UOj4|=` z(9RT*@o0AUAtW!{KG7KSPRf03X9w3O?C;Bywb5$Ki-^c_S+v>85om?3^DZ z0vF?ZN8x+R5QLASQ3k&SKB)k%c0HHewj#2m)nrE}fD8+&b1l_7qGmhrAmGmlAZuOs zA86IE14N|IvQ);HR)y!EIxf|_DLQ>&fYCYkKFkgh$0vZSb$|Vv(dEhx6_L(5ypHV# zP|?oVqKVrPgaN*{1itrk;7aB$XPV^t&H`HWn8B7ZUWf1P2XqpIm!OMvT;C>ewNvB$ z&{F1ea@w5;tS=(#)P%JytwZCaoOWkf=fRF8uJL=TrM7WsI~rZ>=qWN5IJB~pbqb!C z)9xrV4{p0UfPYq&%2erWX`S^UG)D0RAjJ26Xzhh>MZBewaQ!5pb*8k9w%7A(lIQ!j zGS}|Fv!u^u^*1K44seGt=EIzJty(Or)C9Cufp_zYu^MCEMblP3SM&nLm}zJPzsu@7 zn_8ev%+qN08BEGsf4~^?HafYzN}WKf3Z5!9-83|K^nbg+bNJqlmg@Zfm@8FMz$SE$ zE=Z$}Nq||xQmSk5y)6jB2d!uF1WPBWIGD8C3%N4ci}bZR%}3UTU9l#htw_&0Bx&-7 zz0WcdFTs#R1y=?}SdiTVd@+aat%&<-I~W`o)Uo-!S*3%D5AnjpN!dX26Ej?}L2gPz5I(&SLfwn_u7H#Am~yob)wd=q#F-#ZS?fBLe+^|HX? zqS0{Bj;(DzT7&XusEgOPbaHx415RCo-LrJhFwUZn6OA!XGq7X?`K1Xq1)>F(T_lC_CFn%y4QOr0+ku@)4){$Q{iT4{(M1zxY0d?$7P!MYN&alT zZ8zc`2;6RscLlJnjc%W(#M)UaW!a!2vN$^3Gcg9VjYXtSL*WLs$=1j^-{Yuz_ZO(E z_MgE133RWBHp_E{bUN5&;;5|`1C9i41Ao3m5bleHI@P)SQQ7BzDVl0B-p*~!OR_gQ zFP0TJzKMNaQJ~#}MwzVM-+v*2iOA=zeRPg>vuDx9S7UWT9)Gs) zWOQHthAN|8kp#&Jz;CQqY=ZSDrY$Owc7B&cOM}}y8W|eV#U6_8TMzgfnml+M8rF1- z)zvwlaxQPo8*voz61Ck=;@ybwiEZB|5FG+G{gbakF2(g`#ZU{7ne zZECgK*mly!6u?abP7sk(?0Ul3R^2dquv7#+a$?w9(=+1x9Zk2nFe5p1qc*ftE*e!zQEk`^Q`0m5nj1;wYJgMxQ?qoFgLl7=L4KqMwVs@1sOy zIB=SX{39iuW;F0G>kx{c;{y?yY}>d5i(i=HDBPLs1vZ?4R^~;1WU0x+XoT|yWG}Mr zqRsNa7XMpBqh)EeGWMDaC0xroNp450>28Ilm2?)Mk5W^|J=f+}T_7SW8Dl~QhP2{e zcSMV+CIRh65!oo^_~+H)%zzR zUSA9@WfMQ2LRWBk$ExBT91VO*I6YiP`Xcja6gZ!Yy;j7@F@G4H>$=*qfW4?`#S;

R5vdXhT;oBo(w;RF*-f0JcHH(r&HL;a^1;OmvZ@aZhc@lMm5=Ul$pU29wt* zn*jGYw40P*r@e}M>dW$IMdaFnCg_a(3D%2v9Gc-;)PG@Q9+7e}WcUaYC3zlD2_*>dR8$hC-w3`L9a-0RT%K6-{? zy;9)bS0sC4y)e+ks>qA1x8`umad7}<9h1>{lgoL>bSBV7*8t)=?X@x#aC0=WrD)ZZrpi;2kEIiOh1cGgKXYO@V3V{z4J!$l+-t@A9fYF=EZ zwSAW&dx4F@K)V;X6WGOirpi#Fvf8XFZB*OS_q+uAtZw>Pm-|2IvxEKoow+qW^5hSe zaeP0c!wf>pHB6{+k-oca2h5A!I1mjkuXFxxV}G<-vP&t2f7^j8N*}L5%V!*vbL^qO z3uV2uaiG0!LADke+2Iu&ja{Sf+hLcbX|+z;Ll>(|YP&LnPP9tb%67zlJIBfKGCJLI zf}Qh;gKS|m*mzZvYb%x#JE^=6@GTM9HwECk0s8@m*l3mBw$HG!l8;8|qbAYJ zRjU$N^9fc98Q1NpfW(S3sq;Ejk(P5_07_c|9cZS2FI?6>L@PwJMI1s4N@t^3BQ^wZA7KH(Oh5 zH|yDa7!3hC+a)$H=Kh}J2)4sT_(Vx1(h>cCcFiS*rnmZH&1s<$RyBEFnu?5wlIlShRxd>KUL) zTEsnTtuoi+$oW6(ZxZ06-?t_RpTzgZpcRd)0+Md)K0d(D+n&O+zb{+l2?pCIgNy6!*(T1$fPZG!N} zXgt_I6FNi@o5FRztZr{(6|Wv5FTs2k{3I4rn0sb z757&GS`m+7JM1;FcJbN3=YI*pGYG=jP4}FifHoI!uMvdbMJMncpjwb{yJ=(Hksz(|-*cpydJXV}kHV z<`$o++b*jD#1_zo)<{Ro&_`kby%6{UL3koTIIHP`^M}+^ZY~I41a`*vHb>L)TLn~# z#xX|s6$v;_lC)UIB+qHq|1PBtTmW|;a1cTGP}A)ijaC(KccSIy_6OcAX_wWd*~)kw ztJ24$-})M`J3+Wv1AnpxXmx^Z4ncS>nwozmb0fcdlQt6bI+i_0m3A}G%D`(9gcF*s z)&Q+N5`^y)gg-$`AlyoOCx?@^CsD_`fSh-pD}c2K!ea=+=}k9lr2UK41>sY`w)oyy zG%$8G2OFzs!PF!f8gqs~cD!a$n=OedJ_7uNAe`8AtwwrBqkr`T+)cn2(Pf-Ipn6PU zUi&!E+F=K_K5wC^{F^i&You?1reF&R!r!A_$qOQys~z@J*$}KE*9p<2*)<8mKR4+s zjiiYfWBTsuzPBz~S$8z~8Ps{zkmK8?T0p;(K@+Rc#~Xmd2*T%^Zq!Ks2HIS}jYEsG zu9N~OlLM-xZGRu4p3hfvK$W&FZ657O;1GiFwx;_u(m$zVI;Ff4tD@zFf3*7|=Ax*pfjO=Nu|^A6DF z0&Zh#zpY;ZXk&m|DgfOAnu5&`gyYf0=T4$~I*!X{>4E_L2(3%M4ncT*(>)rQKY%tDa32wbM*!=hRiRvg zwp0O!$9Qx;?4%}rrIEU&V?f<)5WWD6!}qp8({VMoR(Q?bb?0891WZLPxI;s_SLBqNp0uF2zhG?V#TD@Rfz}j!S0cQYB eWPKxjD*p$&2_wE$H!c)I$ztaD0e0szN0D6aqj delta 154 zcmV;L0A>Hi0ptOY7#Ro#0000V^Z#K0000DYLP=Bz2nYy#2xN$nFg_0)7sh%ME{DdbSZ9>AOrEP)&kPem>TSV4a%#5)E&}jiO`Qq*e!7Id( z+Xy5d=j337yO(05169qL!Qa8x9qg~a>R@nD%8~+A!ie@aZcuP{D!0cXiU0rr07*qo IM6N<$g0eL~-v9sr diff --git a/settings/img/apps.png b/settings/img/apps.png index de5ccbd2c5fc6276a7ea359fd8b708b85baff6df..2b18f678a0295f45a82250698440a9b6d9e1ed43 100644 GIT binary patch delta 122 zcmcc3c!Y6+gai{a0|P_ST=7ppin-XyGlYYK>~1ONe2w W3Ad4UeBoE1S_V&7KbLh*2~7Y?fhKtX delta 145 zcmX@Yc$;y8gd_(W0|SHn=l_X7ilx}eGlT;OYB*9lCK}l0MtHh7hFJ8z4K(CpFyy#= zN&V-4ah3c{!Tiy$0%Uf@I0P(GbYxW!-EwJb$CsNkX1X&q9J73E&;D-TmA)Q*_X_<5 x|E1q6O$eFPy?LJQe1l{c_Hd@<8Sn2~Feuaqw~OAZIuEpz!PC{xWt~$(6991bHh};D diff --git a/settings/img/help.png b/settings/img/help.png index c0200096735bb7394db96e70170a18b3dbf3b127..00d9761ee363fdfdf979280edf980b504b3e6d1b 100644 GIT binary patch delta 385 zcmcc1e3E&Bq&PDJ1A~Sxe=v|@E_U(^;o#u7{m}oxL_?c;hWPT)ld=sHh02X5YSjkLw>l77`NLvuDqrKYxHa-@SWx^ytyBu(0RPpTBtV z;{E&gfB*gkYL-^6^#$rMC<*clW?qwYU${kIC=J*CCk=s z+;-u{jr$KCK7aZ8!^f{be*FAb6>stys5imW#W6%eGW4J;9}}a9%fWVQo_A(D;-l~X z&(Y!V{IB)z)^DkU?=01Btnj|@;wfhlYtygH&Xay}@0rs~{%3ScPI({opi95BKzC)! u?3ZpE!lE*h&h7FOJ`*^-j?FkG^yg2ej0f!IlHz*cVDxnLb6Mw<&;$UkH@+hP delta 405 zcmV;G0c!rq1Kk6V85jlt001BJ|6u?C00eVFNmK|32nc)#WQdV4JbwXNNklR7~094kQ(M+b)v z7m9Rmg-AMBs1!@EBDmKiCAWU>eSD8&T5F^|B02(a4xpvA_7*vBHk+ve(=_ipoz6x+ zpZ_YAN)L;iEh|t;4S$6YYBU<1hGBTI$X8Og0SF;n0GpO&U58=#k1rK4#-0E?Ypp-x zxRJI@L{6bl7}~adlQa`sKtyW*t{lfXY`5F2*XwO(5(ptK`~Cj9l#&^S0V!n^MNzCE z_Jr|x{9{?xS-0Dr1Hg1TeN8He75Kh?!WjFsZF>~}a=F}NCUOA))a&&JvUV^(*Dd;7L9Xb@jL4-e=N!!g>h-Oeh zEDdRs*Ch%65dF?@;PAjXM@DvOQEhqh2kVGcwA=p+00*ghY8n~oym$;?$Q*!#9!=EOx<(0qrcZsK z*_3~B^Ch;q;+3Cr@E9q-_N{c49~U5fF9YeQ094rG5*MEx2@`x=F4$!07l_w$%@`?~ Q6#xJL07*qoM6N<$f)nkQE?;;s@6CIkdGm&0LI~^==llS`F@VQ$=q-R( zLWo~UPD&}ran9|;&wpmKPdlB?3)giIUDrKy9OopT&$n)zB7{KP#c?i|+t{{E00u$` zbi3Veq^Q^HT_!a`h%12OIA1rL4G|Fy1_J_6@H{V20iNfD*8y76NvqY$=(-L7Xfzry zP4jL#oeqJk8~})8TcxgTTqbMA7^>Ck7vJ~K)WNE;Ex<60mw(B6yzN9$ zEbC+kz&Wqzx^AylD*}LWxvX){>r%=$Qp!(B@@zIcl~TS|q0cLo3Jr%t@_nC(h$fQ> z)$4TvFmE=SQ8K`GyZr~i2taN73jKb6=cy9S=W`0faO+1=M5ED&YPA{x7z4PE#bOcd z1N=+l@t8`b(rbhTLGWACv;*~Cx6yPu{hrb^?FoSQ06YLc{|AuCWbQEaGZhMj$TZE= zo|+q4E| Date: Tue, 9 Apr 2013 19:11:38 +0200 Subject: [PATCH 051/575] Fixed naming bug of public owncloud key dir, which caused new keypair to be generated on each pageload --- apps/files_encryption/lib/session.php | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 171a6900f0..7bfea7bed4 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -27,32 +27,44 @@ namespace OCA\Encryption; */ class Session { + + private $view; /** * @brief if session is started, check if ownCloud key pair is set up, if not create it * * The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ - public function __construct() { + public function __construct( \OC_FilesystemView $view ) { - $view = new \OC\Files\View('/'); - if (!$view->is_dir('owncloud_private_key')) { - $view->mkdir('owncloud_private_key'); + $this->view = $view; + + if ( ! $this->view->is_dir( 'owncloud_private_key' ) ) { + + $this->view->mkdir('owncloud_private_key'); } - if (!$view->file_exists("/public-keys/owncloud.public.key") || !$view->file_exists("/owncloud_private_key/owncloud.private.key") ) { + + if ( + ! $this->view->file_exists("/public-keys/owncloud.public.key") + || ! $this->view->file_exists("/owncloud_private_key/owncloud.private.key" ) + ) { $keypair = Crypt::createKeypair(); \OC_FileProxy::$enabled = false; + // Save public key - $view->file_put_contents( '/public-keys/ownCloud.public.key', $keypair['publicKey'] ); + $this->view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); + // Encrypt private key empthy passphrase $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); + // Save private key - $view->file_put_contents( '/owncloud_private_key/ownCloud.private.key', $encryptedPrivateKey ); + $this->view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; + } } From 109fe198c3b8ffd5a4f7f4a4aba6639480895644 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 9 Apr 2013 19:19:27 +0200 Subject: [PATCH 052/575] Added info about filesystem method access conventions --- apps/files_encryption/appinfo/spec.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/files_encryption/appinfo/spec.txt b/apps/files_encryption/appinfo/spec.txt index bb15864cbb..a1846ca47f 100644 --- a/apps/files_encryption/appinfo/spec.txt +++ b/apps/files_encryption/appinfo/spec.txt @@ -47,6 +47,20 @@ Lost password recovery In order to enable users to read their encrypted files in the event of a password loss/reset scenario, administrators can choose to enable a 'recoveryAdmin' account. This is a user that all user files will automatically be shared to of the option is enabled. This allows the recoveryAdmin user to generate new keyfiles for the user. By default the UID of the recoveryAdmin is 'recoveryAdmin'. +OC_FilesystemView +----------------- + +files_encryption deals extensively with paths and the filesystem. In order to minimise bugs, it makes calls to filesystem methods in a consistent way: OC_FilesystemView{} objects always use '/' as their root, and specify paths each time particular methods are called. e.g. do this: + +$view->file_exists( 'path/to/file' ); + +Not: + +$view->chroot( 'path/to' ); +$view->file_exists( 'file' ); + +Using this convention means that $view objects are more predictable and less likely to break. Problems with paths are the #1 cause of bugs in this app, and consistent $view handling is an important way to prevent them. + Notes ----- From 98de385b8adf748bc1f7d9b527b253624575e370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 10 Apr 2013 15:08:28 +0200 Subject: [PATCH 053/575] add $view as parameter for session constructor --- apps/files_encryption/appinfo/app.php | 4 ++-- apps/files_encryption/hooks/hooks.php | 10 +++++----- apps/files_encryption/lib/proxy.php | 4 ++-- apps/files_encryption/lib/stream.php | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index b095f79c0c..47f4120fb3 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -24,8 +24,8 @@ OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', ' OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); - -$session = new OCA\Encryption\Session(); +$view = new OC\Files\View('/'); +$session = new OCA\Encryption\Session($view); if ( ! $session->getPrivateKey( \OCP\USER::getUser() ) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 43d3dfb5a6..82de80a1cf 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -63,7 +63,7 @@ class Hooks { $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); - $session = new Session(); + $session = new Session($view); $session->setPrivateKey( $privateKey, $params['uid'] ); @@ -116,8 +116,8 @@ class Hooks { // is in use (client-side encryption does not have access to // the necessary keys) if ( Crypt::mode() == 'server' ) { - - $session = new Session(); + $view = new \OC_FilesystemView( '/' ); + $session = new Session($view); // Get existing decrypted private key $privateKey = $session->getPrivateKey(); @@ -189,7 +189,7 @@ class Hooks { if ( $params['itemType'] === 'file' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session(); + $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); @@ -244,7 +244,7 @@ class Hooks { if ( $params['itemType'] === 'file' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session(); + $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index d5aa0f74f1..7e18ec9b10 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -101,7 +101,7 @@ class Proxy extends \OC_FileProxy { $userId = \OCP\USER::getUser(); $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); - $session = new Session(); + $session = new Session($rootView); $fileOwner = \OC\Files\Filesystem::getOwner( $path ); $privateKey = $session->getPrivateKey(); $filePath = $util->stripUserFilesPath( $path ); @@ -223,7 +223,7 @@ class Proxy extends \OC_FileProxy { ) { // TODO use get owner to find correct location of key files for shared files - $session = new Session(); + $session = new Session($view); $privateKey = $session->getPrivateKey( $userId ); // Get the file owner so we can retrieve its keyfile diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 9d01c2ca6c..8bacb98126 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -236,7 +236,7 @@ class Stream { $this->getUser(); - $session = new Session(); + $session = new Session($this->rootView); $privateKey = $session->getPrivateKey( $this->userId ); From fff979a5907cd3d3ff018e541c50c6bd8c095c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 10 Apr 2013 15:14:44 +0200 Subject: [PATCH 054/575] add $view as parameter for getFileKey() call --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f6386ad84d..815f2594ce 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -518,7 +518,7 @@ class Util { $size = stream_copy_to_stream( $plainHandle, $encHandle ); // Fetch the key that has just been set/updated by the stream - $encKey = Keymanager::getFileKey( $relPath ); + $encKey = Keymanager::getFileKey( $this->view, $this->userId, $relPath ); // Save keyfile Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encKey ); From 4303d6318ebf04929a74e1b08e3fad82e1be3a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 10 Apr 2013 15:31:19 +0200 Subject: [PATCH 055/575] Session expect OC_FilesystemView() --- apps/files_encryption/appinfo/app.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 47f4120fb3..9747fb20ad 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -24,7 +24,7 @@ OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', ' OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); -$view = new OC\Files\View('/'); +$view = new OC_FilesystemView('/'); $session = new OCA\Encryption\Session($view); if ( From c3a284569b5a6f83104cf3b5f0a52b2ecfffd8c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 10 Apr 2013 16:46:02 +0200 Subject: [PATCH 056/575] make sure that public-keys dir exists --- apps/files_encryption/lib/session.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 7bfea7bed4..0c6a7131fd 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -38,7 +38,8 @@ class Session { public function __construct( \OC_FilesystemView $view ) { $this->view = $view; - + + if ( ! $this->view->is_dir( 'owncloud_private_key' ) ) { $this->view->mkdir('owncloud_private_key'); @@ -55,6 +56,11 @@ class Session { \OC_FileProxy::$enabled = false; // Save public key + + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); + } + $this->view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); // Encrypt private key empthy passphrase From 8f0bbdc5cbd17d8fdaa773a5a3558b7af7f0a734 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 11 Apr 2013 22:55:48 +0200 Subject: [PATCH 057/575] fix performance issues --- apps/files_encryption/lib/stream.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 8bacb98126..dcc12c9f9e 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -224,6 +224,11 @@ class Stream { */ public function getKey() { + // fix performance issues + if(isset($this->keyfile) && isset($this->encKeyfile)) { + return true; + } + // If a keyfile already exists for a file named identically to // file to be written if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->rawPath . '.key' ) ) { From f87229ddafff57980bfc93f52d6aff3427e9a0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 12 Apr 2013 14:13:38 +0200 Subject: [PATCH 058/575] fix stream wrapper to make initial encryption work --- apps/files_encryption/lib/keymanager.php | 18 ++++++++++-------- apps/files_encryption/lib/stream.php | 19 ++++++++++--------- apps/files_encryption/lib/util.php | 11 +++++++---- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 9bb062d0fd..3e26e6bb69 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -113,17 +113,19 @@ class Keymanager { $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); - if ( $view->is_dir( $basePath . '/' . $targetPath ) ) { - - // FIXME: write me - - } else { + if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { - // Save the keyfile in parallel directory - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - + // create all parent folders + $info=pathinfo($basePath . '/' . $targetPath); + $keyfileFolderName=$view->getLocalFolder($info['dirname']); + if(!file_exists($keyfileFolderName)) { + mkdir($keyfileFolderName, 0750, true); + } } + $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + + \OC_FileProxy::$enabled = true; return $result; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 8bacb98126..3bad43de2e 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -52,7 +52,7 @@ class Stream { // TODO: make all below properties private again once unit testing is // configured correctly public $rawPath; // The raw path received by stream_open - public $path_f; // The raw path formatted to include username and data dir + public $relPath; // rel path to users file dir private $userId; private $handle; // Resource returned by fopen private $path; @@ -80,8 +80,9 @@ class Stream { // Strip identifier text from path $this->rawPath = str_replace( 'crypt://', '', $path ); - // Set file path relative to user files dir - $this->relPath = $this->userId . '/files/' . $this->rawPath; + // Set file path relative to user files dir (7 = string length of '/files/') + $this->relPath = substr($this->rawPath, strlen($this->userId)+7); + //$this->relPath = $this->userId . '/files/' . $this->rawPath; if ( dirname( $this->rawPath ) == 'streams' @@ -110,7 +111,7 @@ class Stream { } else { - $this->size = $this->rootView->filesize( $this->relPath, $mode ); + $this->size = $this->rootView->filesize( $this->rawPath, $mode ); //$this->size = filesize( $this->rawPath ); @@ -121,13 +122,13 @@ class Stream { //$this->handle = fopen( $this->rawPath, $mode ); - $this->handle = $this->rootView->fopen( $this->relPath, $mode ); + $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); \OC_FileProxy::$enabled = true; if ( ! is_resource( $this->handle ) ) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->relPath . '"', \OCP\Util::ERROR ); + \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR ); } else { @@ -226,13 +227,13 @@ class Stream { // If a keyfile already exists for a file named identically to // file to be written - if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->rawPath . '.key' ) ) { + if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->relPath . '.key' ) ) { // TODO: add error handling for when file exists but no // keyfile // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->rawPath ); + $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); $this->getUser(); @@ -317,7 +318,7 @@ class Stream { $userId = \OCP\User::getUser(); // Save the new encrypted file key - Keymanager::setFileKey( $view, $this->rawPath, $userId, $this->encKeyfile ); + Keymanager::setFileKey( $view, $this->relPath, $userId, $this->encKeyfile ); } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 815f2594ce..4605c0f597 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -511,17 +511,20 @@ class Util { // Open handle with for binary reading $plainHandle = $this->view->fopen( $plainFile['path'], 'rb' ); // Open handle with for binary writing - $encHandle = fopen( 'crypt://' . 'var/www/oc6/data/' . $plainFile['path'] . '.tmp', 'ab' ); + + $encHandle = fopen( 'crypt://' . $plainFile['path'] . '.tmp', 'wb' ); // Overwrite the existing file with the encrypted one //$this->view->file_put_contents( $plainFile['path'], $encrypted['data'] ); $size = stream_copy_to_stream( $plainHandle, $encHandle ); - + + $this->view->rename($plainFile['path'] . '.tmp', $plainFile['path']); + // Fetch the key that has just been set/updated by the stream - $encKey = Keymanager::getFileKey( $this->view, $this->userId, $relPath ); + //$encKey = Keymanager::getFileKey( $this->view, $this->userId, $relPath ); // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encKey ); + //Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encKey ); // Add the file to the cache \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted'=>true, 'size' => $size ), '' ); From 02d1f86a535410e26d20d860f800ff069a6aa25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 12 Apr 2013 14:30:02 +0200 Subject: [PATCH 059/575] fix some confusion about paths relative to the files dir and to the data dir --- apps/files_encryption/lib/stream.php | 11 +++++------ apps/files_encryption/lib/util.php | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 3bad43de2e..d269a56240 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -51,7 +51,7 @@ class Stream { // TODO: make all below properties private again once unit testing is // configured correctly - public $rawPath; // The raw path received by stream_open + public $rawPath; // The raw path relative to the data dir public $relPath; // rel path to users file dir private $userId; private $handle; // Resource returned by fopen @@ -77,12 +77,11 @@ class Stream { } - // Strip identifier text from path - $this->rawPath = str_replace( 'crypt://', '', $path ); + // Strip identifier text from path, this gives us the path relative to data//files + $this->relPath = str_replace( 'crypt://', '', $path ); - // Set file path relative to user files dir (7 = string length of '/files/') - $this->relPath = substr($this->rawPath, strlen($this->userId)+7); - //$this->relPath = $this->userId . '/files/' . $this->rawPath; + // rawPath is relative to the data directory + $this->rawPath = $this->userId . '/files/' . $this->relPath; if ( dirname( $this->rawPath ) == 'streams' diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 4605c0f597..6e0aeb96e9 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -344,7 +344,7 @@ class Util { // If the file is not encrypted } else { - $found['plain'][] = array( 'name' => $file, 'path' => $filePath ); + $found['plain'][] = array( 'name' => $file, 'path' => $relPath ); } From 854b9207878d9c5cd8f0d972f4b16b618beade3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 12 Apr 2013 15:18:19 +0200 Subject: [PATCH 060/575] fix some more paths --- apps/files_encryption/lib/util.php | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 6e0aeb96e9..420e3398a8 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -505,20 +505,22 @@ class Util { // Read plain file in chunks - - $relPath = $this->stripUserFilesPath( $plainFile['path'] ); - + //relative to data//file + $relPath = $plainFile['path']; + //relative to /data + $rawPath = $this->userId . '/files/' . $plainFile['path']; + // Open handle with for binary reading - $plainHandle = $this->view->fopen( $plainFile['path'], 'rb' ); + $plainHandle = $this->view->fopen( $rawPath, 'rb' ); // Open handle with for binary writing - $encHandle = fopen( 'crypt://' . $plainFile['path'] . '.tmp', 'wb' ); + $encHandle = fopen( 'crypt://' . $relPath . '.tmp', 'wb' ); // Overwrite the existing file with the encrypted one //$this->view->file_put_contents( $plainFile['path'], $encrypted['data'] ); $size = stream_copy_to_stream( $plainHandle, $encHandle ); - $this->view->rename($plainFile['path'] . '.tmp', $plainFile['path']); + $this->view->rename($rawPath . '.tmp', $rawPath); // Fetch the key that has just been set/updated by the stream //$encKey = Keymanager::getFileKey( $this->view, $this->userId, $relPath ); @@ -545,18 +547,19 @@ class Util { // Recrypt data, generate catfile $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKey, $newPassphrase ); - $relPath = $this->stripUserFilesPath( $legacyFile['path'] ); + $relPath = $legacyFile['path']; + $rawPath = $this->userId . '/files/' . $plainFile['path']; // Save keyfile Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['key'] ); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents( $legacyFile['path'], $recrypted['data'] ); + $this->view->file_put_contents( $rawPath, $recrypted['data'] ); $size = strlen( $recrypted['data'] ); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $legacyFile['path'], array( 'encrypted'=>true, 'size' => $size ), '' ); + \OC\Files\Filesystem::putFileInfo( $rawPath, array( 'encrypted'=>true, 'size' => $size ), '' ); } From 448a3904860412c8277718673bc18773990c4c24 Mon Sep 17 00:00:00 2001 From: kondou Date: Fri, 12 Apr 2013 19:06:29 +0200 Subject: [PATCH 061/575] Optimize svgs with scour. --- core/img/actions/add.svg | 115 +- core/img/actions/caret-dark.svg | 103 +- core/img/actions/caret.svg | 119 +- core/img/actions/clock.svg | 41 +- core/img/actions/close.svg | 75 +- core/img/actions/delete-hover.svg | 75 +- core/img/actions/delete.svg | 72 +- core/img/actions/download.svg | 75 +- core/img/actions/history.svg | 242 +--- core/img/actions/info.svg | 1768 +---------------------- core/img/actions/lock.svg | 13 +- core/img/actions/logout.svg | 179 +-- core/img/actions/mail.svg | 62 +- core/img/actions/password.svg | 2149 +--------------------------- core/img/actions/pause-big.svg | 75 +- core/img/actions/pause.svg | 74 +- core/img/actions/play-add.svg | 86 +- core/img/actions/play-big.svg | 75 +- core/img/actions/play-next.svg | 82 +- core/img/actions/play-previous.svg | 82 +- core/img/actions/play.svg | 75 +- core/img/actions/public.svg | 292 +--- core/img/actions/rename.svg | 74 +- core/img/actions/search.svg | 1642 +-------------------- core/img/actions/settings.svg | 283 +--- core/img/actions/share.svg | 72 +- core/img/actions/shared.svg | 1739 +--------------------- core/img/actions/sound-off.svg | 75 +- core/img/actions/sound.svg | 81 +- core/img/actions/toggle.svg | 64 +- core/img/actions/triangle-n.svg | 88 +- core/img/actions/triangle-s.svg | 88 +- core/img/actions/upload-white.svg | 75 +- core/img/actions/upload.svg | 75 +- core/img/actions/user.svg | 1699 +--------------------- core/img/actions/view-close.svg | 75 +- core/img/actions/view-next.svg | 75 +- core/img/actions/view-pause.svg | 74 +- core/img/actions/view-play.svg | 75 +- core/img/actions/view-previous.svg | 75 +- core/img/breadcrumb-start.svg | 73 +- core/img/breadcrumb.svg | 79 +- core/img/desktopapp.svg | 103 +- core/img/favicon-touch.svg | 789 +--------- core/img/favicon.svg | 798 +---------- core/img/logo-wide.svg | 797 +---------- core/img/logo.svg | 761 +--------- core/img/places/calendar-dark.svg | 78 +- core/img/places/contacts-dark.svg | 76 +- core/img/places/file.svg | 1851 +----------------------- core/img/places/files.svg | 131 +- core/img/places/folder.svg | 1842 +----------------------- core/img/places/home.svg | 1826 +---------------------- core/img/places/music.svg | 76 +- core/img/places/picture.svg | 78 +- settings/img/admin.svg | 2132 +-------------------------- settings/img/apps.svg | 2117 +-------------------------- settings/img/help.svg | 1748 +--------------------- settings/img/log.svg | 94 +- settings/img/personal.svg | 1718 +--------------------- settings/img/users.svg | 1727 +--------------------- 61 files changed, 333 insertions(+), 30919 deletions(-) mode change 100755 => 100644 core/img/actions/clock.svg mode change 100755 => 100644 core/img/actions/lock.svg diff --git a/core/img/actions/add.svg b/core/img/actions/add.svg index 29994747c3..136d6c4b31 100644 --- a/core/img/actions/add.svg +++ b/core/img/actions/add.svg @@ -1,109 +1,10 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/core/img/actions/caret-dark.svg b/core/img/actions/caret-dark.svg index abb1dc192d..be45ad402b 100644 --- a/core/img/actions/caret-dark.svg +++ b/core/img/actions/caret-dark.svg @@ -1,102 +1,5 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/caret.svg b/core/img/actions/caret.svg index 7bb0c59cde..d1ae8d60a6 100644 --- a/core/img/actions/caret.svg +++ b/core/img/actions/caret.svg @@ -1,112 +1,11 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/core/img/actions/clock.svg b/core/img/actions/clock.svg old mode 100755 new mode 100644 index 1821f474df..f3fcb19031 --- a/core/img/actions/clock.svg +++ b/core/img/actions/clock.svg @@ -1,20 +1,21 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + diff --git a/core/img/actions/close.svg b/core/img/actions/close.svg index 6a6d98e34a..ef564bfd48 100644 --- a/core/img/actions/close.svg +++ b/core/img/actions/close.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/delete-hover.svg b/core/img/actions/delete-hover.svg index 63cacd5e38..3e8d26c978 100644 --- a/core/img/actions/delete-hover.svg +++ b/core/img/actions/delete-hover.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/delete.svg b/core/img/actions/delete.svg index 86c8317d01..ef564bfd48 100644 --- a/core/img/actions/delete.svg +++ b/core/img/actions/delete.svg @@ -1,70 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/download.svg b/core/img/actions/download.svg index 107a46f07b..a469c3b8a0 100644 --- a/core/img/actions/download.svg +++ b/core/img/actions/download.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/history.svg b/core/img/actions/history.svg index 9c2838d565..94512a2d43 100644 --- a/core/img/actions/history.svg +++ b/core/img/actions/history.svg @@ -1,240 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/info.svg b/core/img/actions/info.svg index 1e07aed852..55bdb17f2e 100644 --- a/core/img/actions/info.svg +++ b/core/img/actions/info.svg @@ -1,1758 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/actions/lock.svg b/core/img/actions/lock.svg old mode 100755 new mode 100644 index 8fb039b9e3..beef1d3ad3 --- a/core/img/actions/lock.svg +++ b/core/img/actions/lock.svg @@ -1,8 +1,5 @@ - - - - - - + + + + + diff --git a/core/img/actions/logout.svg b/core/img/actions/logout.svg index e5edc24895..59543875d7 100644 --- a/core/img/actions/logout.svg +++ b/core/img/actions/logout.svg @@ -1,178 +1,5 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/mail.svg b/core/img/actions/mail.svg index e82fa3b467..2c63daac03 100644 --- a/core/img/actions/mail.svg +++ b/core/img/actions/mail.svg @@ -1,58 +1,8 @@ - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - + + + + + + diff --git a/core/img/actions/password.svg b/core/img/actions/password.svg index ee6a9fe018..9ab5d4243d 100644 --- a/core/img/actions/password.svg +++ b/core/img/actions/password.svg @@ -1,2148 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/pause-big.svg b/core/img/actions/pause-big.svg index b521057a35..9c4944223f 100644 --- a/core/img/actions/pause-big.svg +++ b/core/img/actions/pause-big.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/pause.svg b/core/img/actions/pause.svg index ff3c69d6c7..d572ad6f5c 100644 --- a/core/img/actions/pause.svg +++ b/core/img/actions/pause.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/play-add.svg b/core/img/actions/play-add.svg index 25ff0b57ee..cdf4f6ea9f 100644 --- a/core/img/actions/play-add.svg +++ b/core/img/actions/play-add.svg @@ -1,83 +1,9 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - + + + + + + diff --git a/core/img/actions/play-big.svg b/core/img/actions/play-big.svg index 2ef6741532..884171ced8 100644 --- a/core/img/actions/play-big.svg +++ b/core/img/actions/play-big.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/play-next.svg b/core/img/actions/play-next.svg index 9a41e4bd9d..8b3d7d6eff 100644 --- a/core/img/actions/play-next.svg +++ b/core/img/actions/play-next.svg @@ -1,79 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/play-previous.svg b/core/img/actions/play-previous.svg index 31d45dedb4..6210b088cb 100644 --- a/core/img/actions/play-previous.svg +++ b/core/img/actions/play-previous.svg @@ -1,79 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/play.svg b/core/img/actions/play.svg index 7bb7b5c262..ae23e6a0d2 100644 --- a/core/img/actions/play.svg +++ b/core/img/actions/play.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/public.svg b/core/img/actions/public.svg index b47305fbd0..c70a762778 100644 --- a/core/img/actions/public.svg +++ b/core/img/actions/public.svg @@ -1,292 +1,4 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/core/img/actions/rename.svg b/core/img/actions/rename.svg index 44b464c850..d6779709d9 100644 --- a/core/img/actions/rename.svg +++ b/core/img/actions/rename.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/search.svg b/core/img/actions/search.svg index c8d9d848c4..4f27369dbb 100644 --- a/core/img/actions/search.svg +++ b/core/img/actions/search.svg @@ -1,1632 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/actions/settings.svg b/core/img/actions/settings.svg index da685e8be0..bd7ae3b3d7 100644 --- a/core/img/actions/settings.svg +++ b/core/img/actions/settings.svg @@ -1,270 +1,17 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/core/img/actions/share.svg b/core/img/actions/share.svg index a5f2f8cb4d..d67d35c6e5 100644 --- a/core/img/actions/share.svg +++ b/core/img/actions/share.svg @@ -1,70 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/shared.svg b/core/img/actions/shared.svg index 2302cc9891..3e63cc5468 100644 --- a/core/img/actions/shared.svg +++ b/core/img/actions/shared.svg @@ -1,1738 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/sound-off.svg b/core/img/actions/sound-off.svg index 053291311f..701d7a1a64 100644 --- a/core/img/actions/sound-off.svg +++ b/core/img/actions/sound-off.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/sound.svg b/core/img/actions/sound.svg index 6feea076a4..ecadf7dae9 100644 --- a/core/img/actions/sound.svg +++ b/core/img/actions/sound.svg @@ -1,78 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/toggle.svg b/core/img/actions/toggle.svg index 82a5171477..1b774a19b1 100644 --- a/core/img/actions/toggle.svg +++ b/core/img/actions/toggle.svg @@ -1,61 +1,5 @@ - - -image/svg+xml - - - - - \ No newline at end of file + + + + diff --git a/core/img/actions/triangle-n.svg b/core/img/actions/triangle-n.svg index e8d70fa8ce..4f866978f4 100644 --- a/core/img/actions/triangle-n.svg +++ b/core/img/actions/triangle-n.svg @@ -1,88 +1,4 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + diff --git a/core/img/actions/triangle-s.svg b/core/img/actions/triangle-s.svg index 396c61e01e..b178b20a20 100644 --- a/core/img/actions/triangle-s.svg +++ b/core/img/actions/triangle-s.svg @@ -1,88 +1,4 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + diff --git a/core/img/actions/upload-white.svg b/core/img/actions/upload-white.svg index 32ecd8b82b..9c54cac5e1 100644 --- a/core/img/actions/upload-white.svg +++ b/core/img/actions/upload-white.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/upload.svg b/core/img/actions/upload.svg index 718da8f4a5..eae4515c72 100644 --- a/core/img/actions/upload.svg +++ b/core/img/actions/upload.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/user.svg b/core/img/actions/user.svg index 6d0dc714ce..aa71957370 100644 --- a/core/img/actions/user.svg +++ b/core/img/actions/user.svg @@ -1,1698 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/view-close.svg b/core/img/actions/view-close.svg index 45d6697608..1d5b1a9f49 100644 --- a/core/img/actions/view-close.svg +++ b/core/img/actions/view-close.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-next.svg b/core/img/actions/view-next.svg index d5642f1a11..07c95b73ff 100644 --- a/core/img/actions/view-next.svg +++ b/core/img/actions/view-next.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-pause.svg b/core/img/actions/view-pause.svg index 0edc6f14e2..d901a4d789 100644 --- a/core/img/actions/view-pause.svg +++ b/core/img/actions/view-pause.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-play.svg b/core/img/actions/view-play.svg index 0bdc63bf7e..d9fa355371 100644 --- a/core/img/actions/view-play.svg +++ b/core/img/actions/view-play.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-previous.svg b/core/img/actions/view-previous.svg index df1f49511d..68a31c0443 100644 --- a/core/img/actions/view-previous.svg +++ b/core/img/actions/view-previous.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/breadcrumb-start.svg b/core/img/breadcrumb-start.svg index 4197763dc6..7f36231cdf 100644 --- a/core/img/breadcrumb-start.svg +++ b/core/img/breadcrumb-start.svg @@ -1,71 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/breadcrumb.svg b/core/img/breadcrumb.svg index 9d522b42b7..05a216e50a 100644 --- a/core/img/breadcrumb.svg +++ b/core/img/breadcrumb.svg @@ -1,77 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/desktopapp.svg b/core/img/desktopapp.svg index 93d91e461a..a983e6f959 100644 --- a/core/img/desktopapp.svg +++ b/core/img/desktopapp.svg @@ -1,100 +1,5 @@ -image/svg+xml - - -Desktop app -Windows, OS X, Linux - \ No newline at end of file + +Desktop app +Windows, OS X, Linux + diff --git a/core/img/favicon-touch.svg b/core/img/favicon-touch.svg index 6d766d3ced..68f36a8a9a 100644 --- a/core/img/favicon-touch.svg +++ b/core/img/favicon-touch.svg @@ -1,787 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/favicon.svg b/core/img/favicon.svg index f055c32efb..39cb174268 100644 --- a/core/img/favicon.svg +++ b/core/img/favicon.svg @@ -1,796 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/logo-wide.svg b/core/img/logo-wide.svg index cf8eace520..29c617d6f8 100644 --- a/core/img/logo-wide.svg +++ b/core/img/logo-wide.svg @@ -1,796 +1,3 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + diff --git a/core/img/logo.svg b/core/img/logo.svg index bd928cccfa..cfb20b60e4 100644 --- a/core/img/logo.svg +++ b/core/img/logo.svg @@ -1,759 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/places/calendar-dark.svg b/core/img/places/calendar-dark.svg index 6f7cb8e74d..986be039ab 100644 --- a/core/img/places/calendar-dark.svg +++ b/core/img/places/calendar-dark.svg @@ -1,75 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/contacts-dark.svg b/core/img/places/contacts-dark.svg index df364911c5..3fc10cfe08 100644 --- a/core/img/places/contacts-dark.svg +++ b/core/img/places/contacts-dark.svg @@ -1,73 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/file.svg b/core/img/places/file.svg index 478714b75d..f93f3ef6fa 100644 --- a/core/img/places/file.svg +++ b/core/img/places/file.svg @@ -1,1841 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/places/files.svg b/core/img/places/files.svg index 8ebf861f6d..d446ef655a 100644 --- a/core/img/places/files.svg +++ b/core/img/places/files.svg @@ -1,128 +1,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/folder.svg b/core/img/places/folder.svg index c04b00fedc..676f10afe0 100644 --- a/core/img/places/folder.svg +++ b/core/img/places/folder.svg @@ -1,1830 +1,18 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/core/img/places/home.svg b/core/img/places/home.svg index a836a5999f..80b7dcc866 100644 --- a/core/img/places/home.svg +++ b/core/img/places/home.svg @@ -1,1819 +1,11 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/core/img/places/music.svg b/core/img/places/music.svg index e8f91f4616..f7eb391d98 100644 --- a/core/img/places/music.svg +++ b/core/img/places/music.svg @@ -1,73 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/picture.svg b/core/img/places/picture.svg index aba68e6206..791cbb5909 100644 --- a/core/img/places/picture.svg +++ b/core/img/places/picture.svg @@ -1,75 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/settings/img/admin.svg b/settings/img/admin.svg index 1ea226231b..90d8727201 100644 --- a/settings/img/admin.svg +++ b/settings/img/admin.svg @@ -1,2128 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/apps.svg b/settings/img/apps.svg index d341592120..e2cc48f295 100644 --- a/settings/img/apps.svg +++ b/settings/img/apps.svg @@ -1,2113 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/help.svg b/settings/img/help.svg index 55b68e6baf..f393ab5b1f 100644 --- a/settings/img/help.svg +++ b/settings/img/help.svg @@ -1,1744 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/log.svg b/settings/img/log.svg index 72d4758ace..a3939b7309 100644 --- a/settings/img/log.svg +++ b/settings/img/log.svg @@ -1,86 +1,10 @@ - - -image/svg+xml - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/settings/img/personal.svg b/settings/img/personal.svg index 2f3a77d07a..c0213f8589 100644 --- a/settings/img/personal.svg +++ b/settings/img/personal.svg @@ -1,1714 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/users.svg b/settings/img/users.svg index 5ef31b763b..9008e1d211 100644 --- a/settings/img/users.svg +++ b/settings/img/users.svg @@ -1,1723 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + From 1871f43a521c54ae9ceeeb2dc3169eb82e765c2e Mon Sep 17 00:00:00 2001 From: kondou Date: Sat, 13 Apr 2013 10:01:13 +0200 Subject: [PATCH 062/575] Add shellscript for optimization. --- core/img/image-optimization.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 core/img/image-optimization.sh diff --git a/core/img/image-optimization.sh b/core/img/image-optimization.sh new file mode 100755 index 0000000000..0a96bf558d --- /dev/null +++ b/core/img/image-optimization.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +function recursive_optimize_images() { +cd $1; +optipng -o6 *.png; +jpegoptim --strip-all *.jpg; +for svg in `ls *.svg`; +do + mv $svg $svg.opttmp; + scour -i $svg.opttmp -o $svg --create-groups --enable-id-stripping --enable-comment-stripping --shorten-ids --remove-metadata; +done; +rm *.opttmp +for dir in `ls -d */`; +do + recursive_optimize_images $dir; + cd ..; +done; +} + +recursive_optimize_images ../../ From 4f6f6456aad8777ac722fb7bb061d2978d702647 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 13 Apr 2013 15:02:47 -0400 Subject: [PATCH 063/575] Check if operation worked before sending post hooks, fixes #2484 --- lib/files/view.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/files/view.php b/lib/files/view.php index f607bb59aa..b0e8291935 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -295,7 +295,7 @@ class View { list ($count, $result) = \OC_Helper::streamCopy($data, $target); fclose($target); fclose($data); - if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) ) { + if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) && $result !== false) { if (!$exists) { \OC_Hook::emit( Filesystem::CLASSNAME, @@ -372,7 +372,7 @@ class View { list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); $storage1->unlink($internalPath1); } - if ($this->fakeRoot == Filesystem::getRoot()) { + if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit( Filesystem::CLASSNAME, Filesystem::signal_post_rename, @@ -452,7 +452,7 @@ class View { $target = $this->fopen($path2 . $postFix2, 'w'); list($count, $result) = \OC_Helper::streamCopy($source, $target); } - if ($this->fakeRoot == Filesystem::getRoot()) { + if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit( Filesystem::CLASSNAME, Filesystem::signal_post_copy, @@ -613,7 +613,7 @@ class View { $result = $storage->$operation($internalPath); } $result = \OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result); - if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot()) { + if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot() && $result !== false) { if ($operation != 'fopen') { //no post hooks for fopen, the file stream is still open $this->runHooks($hooks, $path, true); } From 9ead7c4776bd512c2a50ab917b99dcdc37e8db68 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 13 Apr 2013 15:04:46 -0400 Subject: [PATCH 064/575] Don't unlink old renamed file if stream copy failed --- lib/files/view.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/files/view.php b/lib/files/view.php index b0e8291935..d2d1a99818 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -370,7 +370,9 @@ class View { $target = $this->fopen($path2 . $postFix2, 'w'); list($count, $result) = \OC_Helper::streamCopy($source, $target); list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); - $storage1->unlink($internalPath1); + if ($result !== false) { + $storage1->unlink($internalPath1); + } } if ($this->fakeRoot == Filesystem::getRoot() && $result !== false) { \OC_Hook::emit( From f378a7f572e1da4b24280c1fcbf830e026186c83 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 10 Apr 2013 17:37:03 +0200 Subject: [PATCH 065/575] Fixed proxy class handing of read / write files Various work on other classes --- apps/files_encryption/ajax/adminrecovery.php | 12 ++-- apps/files_encryption/appinfo/app.php | 6 +- apps/files_encryption/hooks/hooks.php | 10 +-- apps/files_encryption/js/settings.js | 9 ++- apps/files_encryption/lib/proxy.php | 49 ++++++-------- apps/files_encryption/lib/stream.php | 2 +- apps/files_encryption/lib/util.php | 70 ++++++++++++++++---- apps/files_encryption/test/proxy.php | 2 +- apps/files_encryption/test/util.php | 12 ++++ 9 files changed, 114 insertions(+), 58 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index f22114f851..cec0cd4ddd 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -15,6 +15,8 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled( 'files_encryption' ); \OCP\JSON::callCheck(); +$return = $doSetup = false; + if ( isset( $_POST['adminEnableRecovery'] ) && $_POST['adminEnableRecovery'] == 1 @@ -47,7 +49,7 @@ if ( // If the recoveryAdmin UID exists but doesn't have admin rights } else { - \OCP\JSON::error(); + $return = false; } @@ -63,10 +65,12 @@ if ( $util->setupServerSide( $_POST['recoveryPassword'] ); // Store the UID in the DB - OC_Appconfig::setValue( 'encryption', 'recoveryAdminUid', $recoveryAdminUid ); + OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminUid', $recoveryAdminUid ); - \OCP\JSON::success(); + $return = true; } -} \ No newline at end of file +} + +($return) ? OC_JSON::success() : OC_JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 9747fb20ad..c2de9d0b44 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -24,8 +24,10 @@ OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', ' OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); -$view = new OC_FilesystemView('/'); -$session = new OCA\Encryption\Session($view); + +$view = new OC_FilesystemView( '/' ); + +$session = new OCA\Encryption\Session( $view ); if ( ! $session->getPrivateKey( \OCP\USER::getUser() ) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 82de80a1cf..e65f0945f4 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -63,7 +63,7 @@ class Hooks { $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); - $session = new Session($view); + $session = new Session( $view ); $session->setPrivateKey( $privateKey, $params['uid'] ); @@ -116,8 +116,8 @@ class Hooks { // is in use (client-side encryption does not have access to // the necessary keys) if ( Crypt::mode() == 'server' ) { - $view = new \OC_FilesystemView( '/' ); - $session = new Session($view); + + $session = new Session(); // Get existing decrypted private key $privateKey = $session->getPrivateKey(); @@ -189,7 +189,7 @@ class Hooks { if ( $params['itemType'] === 'file' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session($view); + $session = new Session(); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); @@ -244,7 +244,7 @@ class Hooks { if ( $params['itemType'] === 'file' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session($view); + $session = new Session(); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); diff --git a/apps/files_encryption/js/settings.js b/apps/files_encryption/js/settings.js index 4f367f880d..9a0bebf247 100644 --- a/apps/files_encryption/js/settings.js +++ b/apps/files_encryption/js/settings.js @@ -16,11 +16,14 @@ $(document).ready(function(){ // Trigger ajax on recoveryAdmin status change $( 'input:radio[name="adminEnableRecovery"]' ).change( function() { + + var foo = $( this ).val(); + $.post( - '../ajax/adminrecovery.php' - , $( this ).val() + OC.filePath('files_encryption', 'ajax', 'adminrecovery.php') + , { adminEnableRecovery: foo, recoveryPassword: 'password' } , function( data ) { - // TODO: provide user with feedback of outcome + alert( data ); } ); } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7e18ec9b10..44a2e1aae5 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -101,7 +101,7 @@ class Proxy extends \OC_FileProxy { $userId = \OCP\USER::getUser(); $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); - $session = new Session($rootView); + $session = new Session( $rootView ); $fileOwner = \OC\Files\Filesystem::getOwner( $path ); $privateKey = $session->getPrivateKey(); $filePath = $util->stripUserFilesPath( $path ); @@ -115,9 +115,16 @@ class Proxy extends \OC_FileProxy { if ( $encKeyfile = Keymanager::getFileKey( $rootView, $fileOwner, $filePath ) ) { $keyPreExists = true; - + + // Fetch shareKey + $shareKey = Keymanager::getShareKey( $rootView, $userId, $filePath ); + // Decrypt the keyfile - $plainKey = $util->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); + $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + + trigger_error("\$shareKey = $shareKey"); + + trigger_error("\$plainKey = $plainKey"); } else { @@ -170,6 +177,7 @@ class Proxy extends \OC_FileProxy { // Save sharekeys to user folders // TODO: openssl_seal generates new shareKeys (envelope keys) each time data is encrypted, but will data still be decryptable using old shareKeys? If so we don't need to replace the old shareKeys here, we only need to set the new ones + Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); // Set encrypted keyfile as common varname @@ -219,15 +227,18 @@ class Proxy extends \OC_FileProxy { // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfileContent( $data ) + && Crypt::isCatfileContent( $data ) // TODO: Do we really need this check? Can't we assume it is properly encrypted? ) { - // TODO use get owner to find correct location of key files for shared files - $session = new Session($view); + // TODO: use get owner to find correct location of key files for shared files + $session = new Session( $view ); $privateKey = $session->getPrivateKey( $userId ); // Get the file owner so we can retrieve its keyfile - list($fileOwner, $ownerPath) = $util->getUidAndFilename($relPath); +// list( $fileOwner, $ownerPath ) = $util->getUidAndFilename( $relPath ); + + $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + $ownerPath = $util->stripUserFilesPath( $path ); // TODO: Don't trust $path, fetch owner path // Get the encrypted keyfile $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $ownerPath ); @@ -235,27 +246,9 @@ class Proxy extends \OC_FileProxy { // Attempt to fetch the user's shareKey $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); - // Check if key is shared or not - if ( $shareKey ) { - - \OC_FileProxy::$enabled = false; - -// trigger_error("\$encKeyfile = $encKeyfile, \$shareKey = $shareKey, \$privateKey = $privateKey"); - - // Decrypt keyfile with shareKey - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - -// $plainKeyfile = $encKeyfile; - -// trigger_error("PROXY plainkeyfile = ". var_export($plainKeyfile, 1)); - - } else { - - // If key is unshared, decrypt with user private key - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); - - } - + // Decrypt keyfile with shareKey + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); // trigger_error("PLAINDATA = ". var_export($plainData, 1)); diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index d269a56240..7315245fcc 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -236,7 +236,7 @@ class Stream { $this->getUser(); - $session = new Session($this->rootView); + $session = new Session( $this->rootView ); $privateKey = $session->getPrivateKey( $this->userId ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 420e3398a8..dc4e37150c 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -24,13 +24,17 @@ # Bugs # ---- # Sharing a file to a user without encryption set up will not provide them with access but won't notify the sharer -# Timeouts on first login due to encryption of very large files +# Sharing files to other users currently broken (due to merge + ongoing implementation of support for lost password recovery) +# Timeouts on first login due to encryption of very large files (fix in progress, as a result streaming is currently broken) +# Sharing all files to admin for recovery purposes still in progress +# Possibly public links are broken (not tested since last merge of master) +# getOwner() currently returns false in all circumstances, unsure what code is returning this... # Missing features # ---------------- -# Re-use existing keyfiles so they don't need version control (part implemented, stream{} and util{} remain) # Make sure user knows if large files weren't encrypted +# Support for resharing encrypted files # Test @@ -122,7 +126,8 @@ class Util { $this->userId = $userId; $this->client = $client; $this->userDir = '/' . $this->userId; - $this->userFilesDir = '/' . $this->userId . '/' . 'files'; + $this->fileFolderName = 'files'; + $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; @@ -690,7 +695,6 @@ class Util { /** * @brief Expand given path to all sub files & folders - * @param Session $session * @param string $path path which needs to be updated * @return array $pathsArray all found file paths * @note Paths of directories excluded, only *file* paths are returned @@ -747,6 +751,8 @@ class Util { * @param string $privateKey * @note Checks whether file was encrypted with openssl_seal or * openssl_encrypt, and decrypts accrdingly + * @note This was used when 2 types of encryption for keyfiles was used, + * but now we've switched to exclusively using openssl_seal() */ public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { @@ -861,19 +867,55 @@ class Util { /** * @brief get uid of the owners of the file and the path to the file - * @param $filename + * @param $shareFilePath Path of the file to check + * @note $shareFilePath must be relative to data/UID/files. Files + * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename($filename) { - $uid = \OC\Files\Filesystem::getOwner($filename); - - \OC\Files\Filesystem::initMountPoints($uid); - if ( $uid != \OCP\User::getUser() ) { - $info = \OC\Files\Filesystem::getFileInfo($filename); - $ownerView = new \OC\Files\View('/'.$uid.'/files'); - $filename = $ownerView->getPath($info['fileid']); + public function getUidAndFilename( $shareFilePath ) { + + $fileOwnerUid = \OC\Files\Filesystem::getOwner( $shareFilePath ); + + // Check that UID is valid + if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { + + throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $shareFilePath . '"' ); + } - return array($uid, $filename); + + // NOTE: Bah, this dependency should be elsewhere + \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); + + // If the file owner is the currently logged in user + if ( $fileOwnerUid == $this->userId ) { + + // Assume the path supplied is correct + $filename = $shareFilePath; + + } else { + + $info = \OC\Files\Filesystem::getFileInfo( $shareFilePath ); + $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); + + // Fetch real file path from DB + $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir + + } + + // Make path relative for use by $view + $relpath = $fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename; + + // Check that the filename we're using is working + if ( $this->view->file_exists( $relpath ) ) { + + return array ( $fileOwnerUid, $relpath ); + + } else { + + throw new \Exception( 'Supplied path could not be resolved "' . $shareFilePath . '"' ); + + } + } } diff --git a/apps/files_encryption/test/proxy.php b/apps/files_encryption/test/proxy.php index 709730f760..5a2d851ff7 100644 --- a/apps/files_encryption/test/proxy.php +++ b/apps/files_encryption/test/proxy.php @@ -52,7 +52,7 @@ // $this->userId = 'admin'; // $this->pass = 'admin'; // -// $this->session = new Encryption\Session(); +// $this->session = new Encryption\Session( $view ); // FIXME: Provide a $view object for use here // // $this->session->setPrivateKey( // '-----BEGIN PRIVATE KEY----- diff --git a/apps/files_encryption/test/util.php b/apps/files_encryption/test/util.php index e2767a2ec3..3ebc484809 100755 --- a/apps/files_encryption/test/util.php +++ b/apps/files_encryption/test/util.php @@ -24,6 +24,8 @@ $loader->register(); use \Mockery as m; use OCA\Encryption; +\OC_User::login( 'admin', 'admin' ); + class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function setUp() { @@ -184,6 +186,16 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $this->assertTrue( $util->setRecovery( $enabled ) ); } + + function testGetUidAndFilename() { + + \OC_User::setUserId( 'admin' ); + + $this->util->getUidAndFilename( 'test1.txt' ); + + + + } // /** // * @brief test decryption using legacy blowfish method From 770dcbf663c31c912b88b280121b21ec7ea4be8e Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 16 Apr 2013 14:50:20 +0200 Subject: [PATCH 066/575] Fixed stream{} reading of encrypted files (stream_read()) --- apps/files_encryption/lib/stream.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index ebfd05041b..f765d62201 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -239,13 +239,15 @@ class Stream { // Fetch existing keyfile $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); - $this->getUser(); + $this->setUserProperty(); $session = new Session( $this->rootView ); $privateKey = $session->getPrivateKey( $this->userId ); - $this->keyfile = Crypt::keyDecrypt( $this->encKeyfile, $privateKey ); + $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); + + $this->keyfile = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); return true; @@ -257,7 +259,7 @@ class Stream { } - public function getuser() { + public function setUserProperty() { // Only get the user again if it isn't already set if ( empty( $this->userId ) ) { From f89a3604aabbd36f05789db46b6108f0f41f52b1 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 16 Apr 2013 18:29:22 +0200 Subject: [PATCH 067/575] Working on stream{} writing Development snapshot --- apps/files_encryption/appinfo/spec.txt | 6 +- apps/files_encryption/lib/keymanager.php | 22 +++++++ apps/files_encryption/lib/proxy.php | 44 ++++--------- apps/files_encryption/lib/stream.php | 83 ++++++++++++++++-------- apps/files_encryption/lib/util.php | 39 +++++++++++ 5 files changed, 133 insertions(+), 61 deletions(-) diff --git a/apps/files_encryption/appinfo/spec.txt b/apps/files_encryption/appinfo/spec.txt index a1846ca47f..4a7b3fc6ad 100644 --- a/apps/files_encryption/appinfo/spec.txt +++ b/apps/files_encryption/appinfo/spec.txt @@ -70,4 +70,8 @@ Notes is handled in the login hook listener. Therefore each time the user logs in their files are scanned to detect unencrypted and legacy encrypted files, and they are (re)encrypted as necessary. This may present a performance issue; we - need to monitor this. \ No newline at end of file + need to monitor this. +- When files are saved to ownCloud via WebDAV, a .part file extension is used so + that the file isn't cached before the upload has been completed. .part files + are not compatible with files_encrytion's key management system however, so + we have to always sanitise such paths manually before using them. \ No newline at end of file diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 3e26e6bb69..c37680fcbe 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -132,6 +132,28 @@ class Keymanager { } + /** + * @brief Remove .path extension from a file path + * @param string $path Path that may identify a .part file + * @return string File path without .part extension + */ + public static function fixPartialFilePath( $path ) { + + if ( preg_match( '/\.part$/', $path ) ) { + + $newLength = strlen( $path ) - 5; + $fPath = substr( $path, 0, $newLength ); + + return $fPath; + + } else { + + return $path; + + } + + } + /** * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 44a2e1aae5..4efb3d2e49 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -138,34 +138,9 @@ class Proxy extends \OC_FileProxy { // Encrypt data $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); - // Check if key recovery is enabled - $recoveryEnabled = $util->recoveryEnabled(); + $sharingEnabled = \OCP\Share::isEnabled(); - // Make sure that a share key is generated for the owner too - $userIds = array( $userId ); - - if ( \OCP\Share::isEnabled() ) { - - // Find out who, if anyone, is sharing the file - $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true, true, true ); - - $userIds = array_merge( $userIds, $shareUids ); - - } - - // If recovery is enabled, add the - // Admin UID to list of users to share to - if ( $recoveryEnabled ) { - - // FIXME: Create a separate admin user purely for recovery, and create method in util for fetching this id from DB? - $adminUid = 'recoveryAdmin'; - - $userIds[] = $adminUid; - - } - - // Remove duplicate UIDs - $uniqueUserIds = array_unique ( $userIds ); + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath ); // Fetch public keys for all users who will share the file $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); @@ -280,6 +255,8 @@ class Proxy extends \OC_FileProxy { */ public function preUnlink( $path ) { + $path = Keymanager::fixPartialFilePath( $path ); + // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; @@ -290,17 +267,20 @@ class Proxy extends \OC_FileProxy { $util = new Util( $view, $userId ); // Format path to be relative to user files dir - $relPath = $util->stripUserFilesPath($path); + $relPath = $util->stripUserFilesPath( $path ); - list($owner, $ownerPath) = $util->getUidAndFilename($relPath); +// list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); - $filePath = $owner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath; + $fileOwner = \OC\Files\Filesystem::getOwner( $path ); + $ownerPath = $util->stripUserFilesPath( $path ); // TODO: Don't trust $path, fetch owner path + + $filePath = $fileOwner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath; // Delete keyfile & shareKey so it isn't orphaned if ( ! ( - Keymanager::deleteFileKey( $view, $owner, $ownerPath ) - && Keymanager::delShareKey( $view, $owner, $ownerPath ) + Keymanager::deleteFileKey( $view, $fileOwner, $ownerPath ) + && Keymanager::delShareKey( $view, $fileOwner, $ownerPath ) ) ) { diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index f765d62201..3e854c8df8 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -44,6 +44,9 @@ namespace OCA\Encryption; * buffer size used internally by PHP. The encryption process makes the input * data longer, and input is chunked into smaller pieces in order to result in * a 8192 encrypted block size. + * @note When files are deleted via webdav, or when they are updated and the + * previous version deleted, this is handled by OC\Files\View, and thus the + * encryption proxies are used and keyfiles deleted. */ class Stream { @@ -171,17 +174,21 @@ class Stream { // // Get the data from the file handle $data = fread( $this->handle, 8192 ); + + $result = ''; if ( strlen( $data ) ) { - $this->getKey(); + if ( ! $this->getKey() ) { + + // Error! We don't have a key to decrypt the file with + throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream' ); - $result = Crypt::symmetricDecryptFileContent( $data, $this->keyfile ); + } + + // Decrypt data + $result = Crypt::symmetricDecryptFileContent( $data, $this->plainKey ); - } else { - - $result = ''; - } // $length = $this->size - $pos; @@ -224,18 +231,20 @@ class Stream { */ public function getKey() { - // fix performance issues - if(isset($this->keyfile) && isset($this->encKeyfile)) { - return true; - } - - // If a keyfile already exists for a file named identically to - // file to be written - if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->relPath . '.key' ) ) { + // Check if key is already set + if ( isset( $this->plainKey ) && isset( $this->encKeyfile ) ) { - // TODO: add error handling for when file exists but no - // keyfile + return true; + + } + + // Avoid problems with .part file extensions + $this->relPath = Keymanager::fixPartialFilePath( $this->relPath ); + + // If a keyfile already exists + if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->relPath . '.key' ) ) { + // Fetch and decrypt keyfile // Fetch existing keyfile $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); @@ -247,12 +256,17 @@ class Stream { $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); - $this->keyfile = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); + $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); + + trigger_error( '$this->relPath = '.$this->relPath ); + trigger_error( '$this->userId = '.$this->userId); + trigger_error( '$this->encKeyfile = '.$this->encKeyfile ); + trigger_error( '$this->plainKey1 = '.var_export($this->plainKey, 1)); return true; } else { - + return false; } @@ -303,7 +317,7 @@ class Stream { $pointer = ftell( $this->handle ); // Make sure the userId is set - $this->getuser(); + $this->setUserProperty(); // TODO: Check if file is shared, if so, use multiKeyEncrypt and // save shareKeys in necessary user directories @@ -313,21 +327,34 @@ class Stream { // one), save the newly generated keyfile if ( ! $this->getKey() ) { - // TODO: Reuse the keyfile, it it exists, instead of making a new one - $this->keyfile = Crypt::generateKey(); + $util = new Util( $this->rootView, $this->userId ); + + $this->plainKey = Crypt::generateKey(); $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); - $this->encKeyfile = Crypt::keyEncrypt( $this->keyfile, $this->publicKey ); + $sharingEnabled = \OCP\Share::isEnabled(); + + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath ); + + // Fetch public keys for all users who will share the file + $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + + $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); $view = new \OC_FilesystemView( '/' ); - $userId = \OCP\User::getUser(); // Save the new encrypted file key - Keymanager::setFileKey( $view, $this->relPath, $userId, $this->encKeyfile ); + Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + +// trigger_error( '$this->relPath = '.$this->relPath ); +// trigger_error( '$this->userId = '.$this->userId); +// trigger_error( '$this->encKeyfile = '.var_export($this->encKeyfiles, 1) ); } - + +// trigger_error( '$this->plainKey2 = '.var_export($this->plainKey, 1)); + // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block if ( $this->writeCache ) { @@ -355,7 +382,7 @@ class Stream { // // fseek( $this->handle, - ( $currentPos % 8192 ), SEEK_CUR ); // -// $block = Crypt::symmetricDecryptFileContent( $unencryptedNewBlock, $this->keyfile ); +// $block = Crypt::symmetricDecryptFileContent( $unencryptedNewBlock, $this->plainKey ); // // $x = substr( $block, 0, $currentPos % 8192 ); // @@ -396,7 +423,7 @@ class Stream { // Read the chunk from the start of $data $chunk = substr( $data, 0, 6126 ); - $encrypted = $this->preWriteEncrypt( $chunk, $this->keyfile ); + $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); // Write the data chunk to disk. This will be // attended to the last data chunk if the file @@ -461,7 +488,7 @@ class Stream { // Set keyfile property for file in question $this->getKey(); - $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->keyfile ); + $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->plainKey ); fwrite( $this->handle, $encrypted ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index dc4e37150c..c964bd94df 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -864,7 +864,46 @@ class Util { return array_unique( $users ); } + + /** + * @brief Find, sanitise and format users sharing a file + * @note This wraps other methods into a portable bundle + */ + public function getSharingUsersArray( $sharingEnabled, $filePath ) { + // Check if key recovery is enabled + $recoveryEnabled = $this->recoveryEnabled(); + + // Make sure that a share key is generated for the owner too + $userIds = array( $this->userId ); + + if ( $sharingEnabled ) { + + // Find out who, if anyone, is sharing the file + $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true, true, true ); + + $userIds = array_merge( $userIds, $shareUids ); + + } + + // If recovery is enabled, add the + // Admin UID to list of users to share to + if ( $recoveryEnabled ) { + + // FIXME: Create a separate admin user purely for recovery, and create method in util for fetching this id from DB? + $adminUid = 'recoveryAdmin'; + + $userIds[] = $adminUid; + + } + + // Remove duplicate UIDs + $uniqueUserIds = array_unique ( $userIds ); + + return $uniqueUserIds; + + } + /** * @brief get uid of the owners of the file and the path to the file * @param $shareFilePath Path of the file to check From 6dd8c79461bc5edd723ffb1d561f8ab9251ba02c Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 17 Apr 2013 17:20:37 +0200 Subject: [PATCH 068/575] Development snapshot Working on stream{} write --- apps/files_encryption/lib/proxy.php | 5 +- apps/files_encryption/lib/stream.php | 80 +++++++++++++++------------- apps/files_encryption/lib/util.php | 3 ++ 3 files changed, 48 insertions(+), 40 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 4efb3d2e49..1e7ac609a4 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -122,9 +122,8 @@ class Proxy extends \OC_FileProxy { // Decrypt the keyfile $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - trigger_error("\$shareKey = $shareKey"); - - trigger_error("\$plainKey = $plainKey"); +// trigger_error("\$shareKey = $shareKey"); +// trigger_error("\$plainKey = $plainKey"); } else { diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 3e854c8df8..01eee177cd 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -225,7 +225,7 @@ class Stream { } /** - * @brief Get the keyfile for the current file, generate one if necessary + * @brief Fetch the plain encryption key for the file and set it as plainKey property * @param bool $generate if true, a new key will be generated if none can be found * @return bool true on key found and set, false on key not found and new key generated and set */ @@ -258,10 +258,10 @@ class Stream { $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); - trigger_error( '$this->relPath = '.$this->relPath ); - trigger_error( '$this->userId = '.$this->userId); - trigger_error( '$this->encKeyfile = '.$this->encKeyfile ); - trigger_error( '$this->plainKey1 = '.var_export($this->plainKey, 1)); +// trigger_error( '$this->relPath = '.$this->relPath ); +// trigger_error( '$this->userId = '.$this->userId); +// trigger_error( '$this->encKeyfile = '.$this->encKeyfile ); +// trigger_error( '$this->plainKey1 = '.var_export($this->plainKey, 1)); return true; @@ -319,40 +319,44 @@ class Stream { // Make sure the userId is set $this->setUserProperty(); - // TODO: Check if file is shared, if so, use multiKeyEncrypt and - // save shareKeys in necessary user directories - // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile if ( ! $this->getKey() ) { - $util = new Util( $this->rootView, $this->userId ); - $this->plainKey = Crypt::generateKey(); - $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); - - $sharingEnabled = \OCP\Share::isEnabled(); - - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath ); - - // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); - - $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); - - $view = new \OC_FilesystemView( '/' ); - - // Save the new encrypted file key - Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); - -// trigger_error( '$this->relPath = '.$this->relPath ); -// trigger_error( '$this->userId = '.$this->userId); -// trigger_error( '$this->encKeyfile = '.var_export($this->encKeyfiles, 1) ); - } + // Fetch user's public key + $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); + + // Check if OC sharing api is enabled + $sharingEnabled = \OCP\Share::isEnabled(); + + $util = new Util( $this->rootView, $this->userId ); + + // Get all users sharing the file + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath ); + + // Fetch public keys for all sharing users + $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + + // Encrypt enc key for all sharing users + $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); + + $view = new \OC_FilesystemView( '/' ); + + // Save the new encrypted file key + Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); + + // Save the sharekeys + Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + +// trigger_error( "\$this->encKeyfiles['data'] = ".$this->encKeyfiles['data'] ); +// trigger_error( '$this->relPath = '.$this->relPath ); +// trigger_error( '$this->userId = '.$this->userId); +// trigger_error( '$this->encKeyfile = '.var_export($this->encKeyfiles, 1) ); // trigger_error( '$this->plainKey2 = '.var_export($this->plainKey, 1)); // If extra data is left over from the last round, make sure it @@ -396,7 +400,7 @@ class Stream { // // While there still remains somed data to be processed & written while( strlen( $data ) > 0 ) { -// + // // Remaining length for this iteration, not of the // // entire file (may be greater than 8192 bytes) // $remainingLength = strlen( $data ); @@ -404,7 +408,7 @@ class Stream { // // If data remaining to be written is less than the // // size of 1 6126 byte block if ( strlen( $data ) < 6126 ) { - + // Set writeCache to contents of $data // The writeCache will be carried over to the // next write round, and added to the start of @@ -425,6 +429,8 @@ class Stream { $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); + trigger_error("\$encrypted = $encrypted"); + // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes @@ -441,7 +447,7 @@ class Stream { } } - + $this->size = max( $this->size, $pointer + $length ); return $length; @@ -493,7 +499,7 @@ class Stream { fwrite( $this->handle, $encrypted ); $this->writeCache = ''; - + } } @@ -501,16 +507,16 @@ class Stream { public function stream_close() { $this->flush(); - + if ( $this->meta['mode']!='r' and $this->meta['mode']!='rb' ) { - + \OC\Files\Filesystem::putFileInfo( $this->path, array( 'encrypted' => true, 'size' => $this->size ), '' ); } - + return fclose( $this->handle ); } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index c964bd94df..2fc7b959ec 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -29,6 +29,9 @@ # Sharing all files to admin for recovery purposes still in progress # Possibly public links are broken (not tested since last merge of master) # getOwner() currently returns false in all circumstances, unsure what code is returning this... +# encryptAll during login mangles paths: /files/files/ +# encryptAll is accessing files via encryption proxy - perhaps proxies should be disabled? +# Sharekeys appear to not be deleted when their parent file is, and thus get orphaned # Missing features From 2434739d699e2ca4316ea3aece86d7f609ff8e6d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 18 Apr 2013 02:03:03 +0200 Subject: [PATCH 069/575] fix for trashbin --- apps/files_encryption/lib/proxy.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 1e7ac609a4..3af9dc73d8 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -254,6 +254,11 @@ class Proxy extends \OC_FileProxy { */ public function preUnlink( $path ) { + // let the trashbin handle this + if ( \OCP\App::isEnabled('files_trashbin') ) { + return true; + } + $path = Keymanager::fixPartialFilePath( $path ); // Disable encryption proxy to prevent recursive calls From a646a1169f9a17be8d520489ae85c16bbcc7236c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 13:41:21 +0200 Subject: [PATCH 070/575] return filename relative to users file dir and not relative to data dir --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2fc7b959ec..f03b2308b2 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -950,7 +950,7 @@ class Util { // Check that the filename we're using is working if ( $this->view->file_exists( $relpath ) ) { - return array ( $fileOwnerUid, $relpath ); + return array ( $fileOwnerUid, $filename ); } else { From bd3024242f95a0761c0ce2295b39b4e350a6795d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 15:42:28 +0200 Subject: [PATCH 071/575] always save key file, the key doesn't change but the encrypted keyfile change always the same way like the share-keys change --- apps/files_encryption/lib/proxy.php | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 1e7ac609a4..4f02c60e10 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -113,8 +113,6 @@ class Proxy extends \OC_FileProxy { // Check if there is an existing key we can reuse if ( $encKeyfile = Keymanager::getFileKey( $rootView, $fileOwner, $filePath ) ) { - - $keyPreExists = true; // Fetch shareKey $shareKey = Keymanager::getShareKey( $rootView, $userId, $filePath ); @@ -127,8 +125,6 @@ class Proxy extends \OC_FileProxy { } else { - $keyPreExists = false; - // Make a new key $plainKey = Crypt::generateKey(); @@ -157,14 +153,9 @@ class Proxy extends \OC_FileProxy { // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; - // Save the key if its new - if ( ! $keyPreExists ) { - - // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $rootView, $filePath, $fileOwner, $encKey ); - - } - + // Save keyfile for newly encrypted file in parallel directory tree + Keymanager::setFileKey( $rootView, $filePath, $fileOwner, $encKey ); + // Replace plain content with encrypted content by reference $data = $encData; From 7892fddcb95d5d4becde224b1d387025b2a5dd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 15:44:57 +0200 Subject: [PATCH 072/575] remove ToDo, every time the file key gets encrypted new share keys are generated and a new encrypted filekey. We always need to use the latest share-keys and encrypted keyfiles --- apps/files_encryption/lib/proxy.php | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 4f02c60e10..f996a612bf 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -146,7 +146,6 @@ class Proxy extends \OC_FileProxy { $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders - // TODO: openssl_seal generates new shareKeys (envelope keys) each time data is encrypted, but will data still be decryptable using old shareKeys? If so we don't need to replace the old shareKeys here, we only need to set the new ones Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); From 40905c8941fa707fe358c0f4a5413931b34f8217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 16:34:23 +0200 Subject: [PATCH 073/575] fix file sharing, sharing files works now; moved the identification of file owner and the owner path in the keymanager functions so that other functions doesn't have to deal with it --- apps/files_encryption/lib/keymanager.php | 17 ++++++++++------- apps/files_encryption/lib/proxy.php | 13 +++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index c37680fcbe..52d100055e 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -107,11 +107,13 @@ class Keymanager { public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { \OC_FileProxy::$enabled = false; + + $util = new Util($view, $userId); + list($owner, $filename) = $util->getUidAndFilename($path); + + $basePath = '/' . $owner . '/files_encryption/keyfiles'; - \OC\Files\Filesystem::initMountPoints($userId); - $basePath = '/' . $userId . '/files_encryption/keyfiles'; - - $targetPath = self::keySetPreparation( $view, $path, $basePath, $userId ); + $targetPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { @@ -166,10 +168,11 @@ class Keymanager { */ public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - \OC\Files\Filesystem::initMountPoints($userId); - $filePath_f = ltrim( $filePath, '/' ); + $util = new Util($view, $userId); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $filePath_f = ltrim( $filename, '/' ); - $keyfilePath = '/' . $userId . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index f996a612bf..88a8c072ea 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -102,7 +102,6 @@ class Proxy extends \OC_FileProxy { $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); $session = new Session( $rootView ); - $fileOwner = \OC\Files\Filesystem::getOwner( $path ); $privateKey = $session->getPrivateKey(); $filePath = $util->stripUserFilesPath( $path ); // Set the filesize for userland, before encrypting @@ -112,7 +111,7 @@ class Proxy extends \OC_FileProxy { \OC_FileProxy::$enabled = false; // Check if there is an existing key we can reuse - if ( $encKeyfile = Keymanager::getFileKey( $rootView, $fileOwner, $filePath ) ) { + if ( $encKeyfile = Keymanager::getFileKey( $rootView, $userId, $filePath ) ) { // Fetch shareKey $shareKey = Keymanager::getShareKey( $rootView, $userId, $filePath ); @@ -153,7 +152,7 @@ class Proxy extends \OC_FileProxy { $encKey = $multiEncrypted['data']; // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $rootView, $filePath, $fileOwner, $encKey ); + Keymanager::setFileKey( $rootView, $filePath, $userId, $encKey ); // Replace plain content with encrypted content by reference $data = $encData; @@ -198,14 +197,8 @@ class Proxy extends \OC_FileProxy { $session = new Session( $view ); $privateKey = $session->getPrivateKey( $userId ); - // Get the file owner so we can retrieve its keyfile -// list( $fileOwner, $ownerPath ) = $util->getUidAndFilename( $relPath ); - - $fileOwner = \OC\Files\Filesystem::getOwner( $path ); - $ownerPath = $util->stripUserFilesPath( $path ); // TODO: Don't trust $path, fetch owner path - // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $fileOwner, $ownerPath ); + $encKeyfile = Keymanager::getFileKey( $view, $userId, $relPath ); // Attempt to fetch the user's shareKey $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); From 1df36e0c889e9f80f821274f7f5d1e01a7cc01ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 16:37:49 +0200 Subject: [PATCH 074/575] rename $shareFilePath to $path to avoid confusions, it is not about paths to share files but about general path to files stored in ownCloud --- apps/files_encryption/lib/util.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f03b2308b2..dbe4acc74e 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -909,19 +909,19 @@ class Util { /** * @brief get uid of the owners of the file and the path to the file - * @param $shareFilePath Path of the file to check + * @param $path Path of the file to check * @note $shareFilePath must be relative to data/UID/files. Files * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename( $shareFilePath ) { - - $fileOwnerUid = \OC\Files\Filesystem::getOwner( $shareFilePath ); + public function getUidAndFilename( $path ) { + + $fileOwnerUid = \OC\Files\Filesystem::getOwner( $path ); // Check that UID is valid if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { - throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $shareFilePath . '"' ); + throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); } @@ -932,11 +932,11 @@ class Util { if ( $fileOwnerUid == $this->userId ) { // Assume the path supplied is correct - $filename = $shareFilePath; + $filename = $path; } else { - $info = \OC\Files\Filesystem::getFileInfo( $shareFilePath ); + $info = \OC\Files\Filesystem::getFileInfo( $path ); $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); // Fetch real file path from DB @@ -954,7 +954,7 @@ class Util { } else { - throw new \Exception( 'Supplied path could not be resolved "' . $shareFilePath . '"' ); + throw new \Exception( 'Supplied path could not be resolved "' . $path . '"' ); } From fe58e4b1a6a0f3b63afe74690986493facdad2c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 17:46:04 +0200 Subject: [PATCH 075/575] we need to add the owner of the file as parameter in case someone else like the owner edits the file; if $includeOwner is set than add owner also if no other recipient was found. This changes enable all user with write access to the file to edit it and to encrypt it to the right list of users again --- lib/public/share.php | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/public/share.php b/lib/public/share.php index 876de89257..acdf895c92 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -127,21 +127,21 @@ class Share { /** * @brief Find which users can access a shared item * @param $path to the file + * @param $user owner of the file * @param include owner to the list of users with access to the file * @return array * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $path, $includeOwner = false, $removeDuplicates = true ) { + public static function getUsersSharingFile( $path, $user, $includeOwner = false, $removeDuplicates = true ) { - $user = \OCP\User::getUser(); $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); $path = ''; $shares = array(); - + $view = new \OC\Files\View('/'.$user.'/files/'); foreach ($path_parts as $p) { $path .= '/'.$p; - $meta = \OC\Files\Filesystem::getFileInfo(\OC_Filesystem::normalizePath($path)); + $meta = $view->getFileInfo(\OC_Filesystem::normalizePath($path)); $source = $meta['fileid']; // Fetch all shares of this file path from DB @@ -203,12 +203,9 @@ class Share { $shares[] = "ownCloud"; } } - - if ( ! empty( $shares ) ) { - // Include owner in list of users, if requested - if ( $includeOwner ) { - $shares[] = $user; - } + // Include owner in list of users, if requested + if ( $includeOwner ) { + $shares[] = $user; } return array_unique($shares); From 39c717b24cd4551a78d07256e15b29e52841f49b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 17:52:27 +0200 Subject: [PATCH 076/575] some fixes to the keymanager class to identify the file owner and the owner path correctly. --- apps/files_encryption/lib/keymanager.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 52d100055e..5c5a6c7ec5 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -108,7 +108,8 @@ class Keymanager { \OC_FileProxy::$enabled = false; - $util = new Util($view, $userId); + //here we need the currently logged in user, while userId can be a different user + $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/keyfiles'; @@ -168,7 +169,7 @@ class Keymanager { */ public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - $util = new Util($view, $userId); + $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); $filePath_f = ltrim( $filename, '/' ); @@ -298,7 +299,8 @@ class Keymanager { */ public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - $util = new Util( $view, $userId ); + //here we need the currently logged in user, while userId can be a different user + $util = new Util( $view, \OCP\User::getUser() ); list($owner, $filename) = $util->getUidAndFilename($path); @@ -368,7 +370,8 @@ class Keymanager { \OC_FileProxy::$enabled = false; - $util = new Util( $view, $userId ); + //here we need the currently logged in user, while userId can be a different user + $util = new Util( $view, \OCP\User::getUser() ); list($owner, $filename) = $util->getUidAndFilename($filePath); From 935d0398600df7c0f46f1cf5d5905c423b9c22e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 17:53:59 +0200 Subject: [PATCH 077/575] necessary changes in util.php after the changes in \OCP\Share::getUsersSharingFile() (fe58e4b1a6a0f3b63afe74690986493facdad2c4) --- apps/files_encryption/lib/util.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index dbe4acc74e..e4321fdb9d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -878,12 +878,15 @@ class Util { $recoveryEnabled = $this->recoveryEnabled(); // Make sure that a share key is generated for the owner too - $userIds = array( $this->userId ); - + list($owner, $ownerPath) = $this->getUidAndFilename($filePath); + + //$userIds = array( $this->userId ); + $userIds = array(); + if ( $sharingEnabled ) { // Find out who, if anyone, is sharing the file - $shareUids = \OCP\Share::getUsersSharingFile( $filePath, true, true, true ); + $shareUids = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); $userIds = array_merge( $userIds, $shareUids ); From 5a7a64df08ba0270d282389ff798708367c30e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 20:00:45 +0200 Subject: [PATCH 078/575] Session needs filesystem view as parameter; use getSharingUsersArray(), this function also adds the owner to the list --- apps/files_encryption/hooks/hooks.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e65f0945f4..265b90a87a 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -189,13 +189,13 @@ class Hooks { if ( $params['itemType'] === 'file' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session(); + $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); - - // Note: this currently doesn't include the owner due to \OC\Files\Filesystem::getOwner() - $usersSharing = $util->getUsersSharingFile( $path ); + + $sharingEnabled = \OCP\Share::isEnabled(); + $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path); // Recursively expand path to include subfiles $allPaths = $util->getPaths( $path ); From 2bd338c49fd15a992ecc8c796cb921af4ee59e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 18 Apr 2013 20:02:27 +0200 Subject: [PATCH 079/575] getUsersSharingFile() no longer needed, use getSharingUsersArray() instead; fix filterShareReadyUsers() to return the correct results --- apps/files_encryption/lib/util.php | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index e4321fdb9d..8807de7c2a 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -657,14 +657,12 @@ class Util { public function filterShareReadyUsers( $unfilteredUsers ) { // This array will collect the filtered IDs - $userIds = array(); + $readyIds = $unreadyIds = array(); // Loop through users and create array of UIDs that need new keyfiles foreach ( $unfilteredUsers as $user ) { $util = new Util( $this->view, $user ); - - $readyIds = $unreadyIds = array(); // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) @@ -690,7 +688,7 @@ class Util { } return array ( - 'ready' => $userIds + 'ready' => $readyIds , 'unready' => $unreadyIds ); @@ -810,7 +808,7 @@ class Util { } // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); // TODO: check this includes the owner's public key + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); \OC_FileProxy::$enabled = false; @@ -846,28 +844,6 @@ class Util { return true; } - /** - * @brief Returns the users who are sharing a file, including the file owner - * @param $path Relative path of the file, like files/file.txt - * @return $users array of UIDs - * @note This wraps the OCP\Share method, but includes the owner even if - * the file isn't registered in sharing API - */ - public function getUsersSharingFile( $path ) { - - $users = \OCP\Share::getUsersSharingFile( $path, true, true ); - - // FIXME: this is returning empty :/ - $owner = \OC\Files\Filesystem::getOwner( $path ); - -// trigger_error( var_export( $owner, 1)); - - $users[] = $owner; - - return array_unique( $users ); - - } - /** * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle From 0e1970438b6dd7b6f705aeb420e1d4b4bd27c609 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 18 Apr 2013 22:34:22 +0200 Subject: [PATCH 080/575] fixed incorrect filesize, download via web is now possible fixed broken file-info --- apps/files_encryption/lib/proxy.php | 36 ++++++++++++++++++++++++++-- apps/files_encryption/lib/stream.php | 2 +- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 3af9dc73d8..e23598bb5f 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -439,9 +439,41 @@ class Proxy extends \OC_FileProxy { public function postFileSize( $path, $size ) { - if ( Crypt::isCatfileContent( $path ) ) { + // Reformat path for use with OC_FSV + $path_split = explode( '/', $path ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); + + if ( Crypt::isEncryptedMeta( $path_f ) ) { - $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); + // Disable encryption proxy to prevent recursive calls + \OC_FileProxy::$enabled = false; + + // get file info + $cached = \OC\Files\Filesystem::getFileInfo( $path_f, '' ); + + // calculate last chunk nr + $lastChunckNr = floor( $size / 8192); + + // open stream + $result = fopen( 'crypt://'.$path_f, "r" ); + + // calculate last chunk position + $lastChunckPos = ( $lastChunckNr * 8192 ); + + // seek to end + fseek( $result, $lastChunckPos ); + + // get the content of the last chunck + $lastChunkContent = fgets( $result ); + + // calc the real filesize with the size of the last chunk + $realSize = ( ( $lastChunckNr * 6126 ) + strlen( $lastChunkContent ) ); + + // enable proxy + \OC_FileProxy::$enabled = true; + + // set the size + $cached['size'] = $realSize; return $cached['size']; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 01eee177cd..4b33c200bf 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -513,7 +513,7 @@ class Stream { and $this->meta['mode']!='rb' ) { - \OC\Files\Filesystem::putFileInfo( $this->path, array( 'encrypted' => true, 'size' => $this->size ), '' ); + \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => true, 'size' => $this->size ), '' ); } From 12785b93f188c85f19e52917c66aa749b9836ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 19 Apr 2013 13:17:08 +0200 Subject: [PATCH 081/575] make sure that all share keys get deleted if a file/folder gets unshared from a user/group --- apps/files_encryption/hooks/hooks.php | 15 +++++--- apps/files_encryption/lib/keymanager.php | 48 +++++++++++++++++------- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 265b90a87a..2731ee1112 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -240,22 +240,27 @@ class Hooks { // [shareType] => 0 // [shareWith] => test1 - // TODO: Should other kinds of item be encrypted too? - if ( $params['itemType'] === 'file' ) { + if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { $view = new \OC_FilesystemView( '/' ); - $session = new Session(); + $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); - + + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { + $userIds = \OC_Group::usersInGroup($params['shareWith']); + } else { + $userIds = array($params['shareWith']); + } + // If path is a folder, get all children $allPaths = $util->getPaths( $path ); foreach ( $allPaths as $path ) { // Unshare each child path - if ( ! Keymanager::delShareKey( $view, $params['shareWith'], $path ) ) { + if ( ! Keymanager::delShareKey( $view, $userIds, $path ) ) { $failed[] = $path; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 5c5a6c7ec5..f23423062b 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -395,27 +395,28 @@ class Keymanager { /** * @brief Delete a single user's shareKey for a single file */ - public static function delShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { \OC_FileProxy::$enabled = false; - $shareKeyPath = '/' . $userId . '/files_encryption/share-keys/' . $filePath; + //here we need the currently logged in user, while userId can be a different user + $util = new Util( $view, \OCP\User::getUser() ); + + list($owner, $filename) = $util->getUidAndFilename($filePath); + + $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename; $result = false; if ( $view->is_dir($shareKeyPath) ) { - $result = $view->unlink($shareKeyPath); + + $localPath = \OC_Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); + $result = self::recursiveDelShareKeys($localPath, $userIds); + } else { - $absPath = $view->getLocalFile($shareKeyPath); - - $matches = glob(preg_quote($absPath).'.*.shareKey' ); - - if ( $matches ) { - - foreach ( $matches as $ma ) { - unlink($ma); - } + foreach ($userIds as $userId) { + $view->unlink($shareKeyPath.'.'.$userId.'.shareKey'); } $result = true; @@ -432,7 +433,28 @@ class Keymanager { return $result; } - + + /** + * @brief recursively delete share keys from given users + * + * @param type $dir directory + * @param type $userIds user ids for which the share keys should be deleted + */ + private static function recursiveDelShareKeys($dir, $userIds) { + foreach ($userIds as $userId) { + $completePath = $dir.'/.*'.'.'.$userId.'.shareKey'; + $matches = glob(preg_quote($dir).'/*'.preg_quote('.'.$userId.'.shareKey')); + } + foreach ($matches as $ma) { + unlink($ma); + } + $subdirs = $directories = glob(preg_quote($dir) . '/*' , GLOB_ONLYDIR); + foreach ( $subdirs as $subdir ) { + self::recursiveDelShareKeys($subdir, $userIds); + } + return $true; + } + /** * @brief Make preparations to vars and filesystem for saving a keyfile */ From d0a5fe1f4a39f21c596293232be19d70ad30652e Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 20 Apr 2013 21:26:47 +0200 Subject: [PATCH 082/575] code style --- cron.php | 98 +++++++++++++++++++++++++++----------------------------- 1 file changed, 47 insertions(+), 51 deletions(-) diff --git a/cron.php b/cron.php index 7c875843c7..07ce45ac22 100644 --- a/cron.php +++ b/cron.php @@ -1,24 +1,24 @@ . -* -*/ + * ownCloud + * + * @author Jakob Sack + * @copyright 2012 Jakob Sack owncloud@jakobsack.de + * + * 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 . + * + */ // Unfortunately we need this class for shutdown function class TemporaryCronClass { @@ -30,17 +30,16 @@ class TemporaryCronClass { // We use this function to handle (unexpected) shutdowns function handleUnexpectedShutdown() { // Delete lockfile - if( !TemporaryCronClass::$keeplock && file_exists( TemporaryCronClass::$lockfile )) { - unlink( TemporaryCronClass::$lockfile ); + if (!TemporaryCronClass::$keeplock && file_exists(TemporaryCronClass::$lockfile)) { + unlink(TemporaryCronClass::$lockfile); } - + // Say goodbye if the app did not shutdown properly - if( !TemporaryCronClass::$sent ) { - if( OC::$CLI ) { - echo 'Unexpected error!'.PHP_EOL; - } - else{ - OC_JSON::error( array( 'data' => array( 'message' => 'Unexpected error!'))); + if (!TemporaryCronClass::$sent) { + if (OC::$CLI) { + echo 'Unexpected error!' . PHP_EOL; + } else { + OC_JSON::error(array('data' => array('message' => 'Unexpected error!'))); } } } @@ -51,8 +50,8 @@ require_once 'lib/base.php'; session_write_close(); // Don't do anything if ownCloud has not been installed -if( !OC_Config::getValue( 'installed', false )) { - exit( 0 ); +if (!OC_Config::getValue('installed', false)) { + exit(0); } // Handle unexpected errors @@ -63,48 +62,45 @@ OC_Helper::cleanTmpNoClean(); // Exit if background jobs are disabled! $appmode = OC_BackgroundJob::getExecutionType(); -if( $appmode == 'none' ) { +if ($appmode == 'none') { TemporaryCronClass::$sent = true; - if( OC::$CLI ) { - echo 'Background Jobs are disabled!'.PHP_EOL; + if (OC::$CLI) { + echo 'Background Jobs are disabled!' . PHP_EOL; + } else { + OC_JSON::error(array('data' => array('message' => 'Background jobs disabled!'))); } - else{ - OC_JSON::error( array( 'data' => array( 'message' => 'Background jobs disabled!'))); - } - exit( 1 ); + exit(1); } -if( OC::$CLI ) { +if (OC::$CLI) { // Create lock file first - TemporaryCronClass::$lockfile = OC_Config::getValue( "datadirectory", OC::$SERVERROOT.'/data' ).'/cron.lock'; - + TemporaryCronClass::$lockfile = OC_Config::getValue("datadirectory", OC::$SERVERROOT . '/data') . '/cron.lock'; + // We call ownCloud from the CLI (aka cron) - if( $appmode != 'cron' ) { + if ($appmode != 'cron') { // Use cron in feature! - OC_BackgroundJob::setExecutionType('cron' ); + OC_BackgroundJob::setExecutionType('cron'); } // check if backgroundjobs is still running - if( file_exists( TemporaryCronClass::$lockfile )) { + if (file_exists(TemporaryCronClass::$lockfile)) { TemporaryCronClass::$keeplock = true; TemporaryCronClass::$sent = true; echo "Another instance of cron.php is still running!"; - exit( 1 ); + exit(1); } // Create a lock file - touch( TemporaryCronClass::$lockfile ); + touch(TemporaryCronClass::$lockfile); // Work OC_BackgroundJob_Worker::doAllSteps(); -} -else{ +} else { // We call cron.php from some website - if( $appmode == 'cron' ) { + if ($appmode == 'cron') { // Cron is cron :-P - OC_JSON::error( array( 'data' => array( 'message' => 'Backgroundjobs are using system cron!'))); - } - else{ + OC_JSON::error(array('data' => array('message' => 'Backgroundjobs are using system cron!'))); + } else { // Work and success :-) OC_BackgroundJob_Worker::doNextStep(); OC_JSON::success(); From 7948341a86fb08d236bb53f8aece809ae10ba5f2 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 20 Apr 2013 23:27:46 +0200 Subject: [PATCH 083/575] Rework background job system --- apps/user_ldap/appinfo/app.php | 2 +- apps/user_ldap/lib/jobs.php | 19 ++- cron.php | 11 +- lib/backgroundjob/job.php | 45 +++++++ lib/backgroundjob/joblist.php | 158 +++++++++++++++++++++++ lib/backgroundjob/queuedjob.php | 28 ++++ lib/backgroundjob/queuedtask.php | 105 --------------- lib/backgroundjob/regulartask.php | 52 -------- lib/backgroundjob/timedjob.php | 41 ++++++ lib/backgroundjob/worker.php | 118 ----------------- lib/base.php | 2 +- lib/cache/fileglobalgc.php | 8 ++ lib/public/backgroundjob.php | 71 +--------- tests/lib/backgroundjob/dummyjoblist.php | 114 ++++++++++++++++ tests/lib/backgroundjob/queuedjob.php | 42 ++++++ tests/lib/backgroundjob/timedjob.php | 68 ++++++++++ 16 files changed, 530 insertions(+), 354 deletions(-) create mode 100644 lib/backgroundjob/job.php create mode 100644 lib/backgroundjob/joblist.php create mode 100644 lib/backgroundjob/queuedjob.php delete mode 100644 lib/backgroundjob/queuedtask.php delete mode 100644 lib/backgroundjob/regulartask.php create mode 100644 lib/backgroundjob/timedjob.php delete mode 100644 lib/backgroundjob/worker.php create mode 100644 lib/cache/fileglobalgc.php create mode 100644 tests/lib/backgroundjob/dummyjoblist.php create mode 100644 tests/lib/backgroundjob/queuedjob.php create mode 100644 tests/lib/backgroundjob/timedjob.php diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index 89410b5ef0..5c8b3ddfb6 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -49,7 +49,7 @@ $entry = array( 'name' => 'LDAP' ); -OCP\Backgroundjob::addRegularTask('OCA\user_ldap\lib\Jobs', 'updateGroups'); +OCP\Backgroundjob::registerJob('OCA\user_ldap\lib\Jobs'); if(OCP\App::isEnabled('user_webdavauth')) { OCP\Util::writeLog('user_ldap', 'user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour', diff --git a/apps/user_ldap/lib/jobs.php b/apps/user_ldap/lib/jobs.php index 094d11db3d..60ecc0da33 100644 --- a/apps/user_ldap/lib/jobs.php +++ b/apps/user_ldap/lib/jobs.php @@ -23,20 +23,22 @@ namespace OCA\user_ldap\lib; -class Jobs { +class Jobs extends \OC\BackgroundJob\TimedJob { static private $groupsFromDB; static private $groupBE; static private $connector; + public function __construct(){ + $this->interval = self::getRefreshInterval(); + } + + public function run($argument){ + Jobs::updateGroups(); + } + static public function updateGroups() { \OCP\Util::writeLog('user_ldap', 'Run background job "updateGroups"', \OCP\Util::DEBUG); - $lastUpdate = \OCP\Config::getAppValue('user_ldap', 'bgjUpdateGroupsLastRun', 0); - if((time() - $lastUpdate) < self::getRefreshInterval()) { - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – last run too fresh, aborting.', \OCP\Util::DEBUG); - //komm runter Werner die Maurer geben ein aus - return; - } $knownGroups = array_keys(self::getKnownGroups()); $actualGroups = self::getGroupBE()->getGroups(); @@ -45,7 +47,6 @@ class Jobs { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – groups do not seem to be configured properly, aborting.', \OCP\Util::INFO); - \OCP\Config::setAppValue('user_ldap', 'bgjUpdateGroupsLastRun', time()); return; } @@ -53,8 +54,6 @@ class Jobs { self::handleCreatedGroups(array_diff($actualGroups, $knownGroups)); self::handleRemovedGroups(array_diff($knownGroups, $actualGroups)); - \OCP\Config::setAppValue('user_ldap', 'bgjUpdateGroupsLastRun', time()); - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – Finished.', \OCP\Util::DEBUG); } diff --git a/cron.php b/cron.php index 07ce45ac22..c8dd6fcc88 100644 --- a/cron.php +++ b/cron.php @@ -94,7 +94,11 @@ if (OC::$CLI) { touch(TemporaryCronClass::$lockfile); // Work - OC_BackgroundJob_Worker::doAllSteps(); + $jobList = new \OC\BackgroundJob\JobList(); + $jobs = $jobList->getAll(); + foreach ($jobs as $job) { + $job->execute($jobList); + } } else { // We call cron.php from some website if ($appmode == 'cron') { @@ -102,7 +106,10 @@ if (OC::$CLI) { OC_JSON::error(array('data' => array('message' => 'Backgroundjobs are using system cron!'))); } else { // Work and success :-) - OC_BackgroundJob_Worker::doNextStep(); + $jobList = new \OC\BackgroundJob\JobList(); + $job = $jobList->getNext(); + $job->execute($jobList); + $jobList->setLastJob($job); OC_JSON::success(); } } diff --git a/lib/backgroundjob/job.php b/lib/backgroundjob/job.php new file mode 100644 index 0000000000..ff647c7329 --- /dev/null +++ b/lib/backgroundjob/job.php @@ -0,0 +1,45 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\BackgroundJob; + +abstract class Job { + protected $id; + protected $lastRun; + protected $argument; + + /** + * @param JobList $jobList + */ + public function execute($jobList) { + $jobList->setLastRun($this); + $this->run($this->argument); + } + + abstract protected function run($argument); + + public function setId($id) { + $this->id = $id; + } + + public function setLastRun($lastRun) { + $this->lastRun = $lastRun; + } + + public function setArgument($argument) { + $this->argument = $argument; + } + + public function getId() { + return $this->id; + } + + public function getLastRun() { + return $this->lastRun(); + } +} diff --git a/lib/backgroundjob/joblist.php b/lib/backgroundjob/joblist.php new file mode 100644 index 0000000000..7471f84153 --- /dev/null +++ b/lib/backgroundjob/joblist.php @@ -0,0 +1,158 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\BackgroundJob; + +/** + * Class QueuedJob + * + * create a background job that is to be executed once + * + * @package OC\BackgroundJob + */ +class JobList { + /** + * @param Job|string $job + * @param mixed $argument + */ + public function add($job, $argument = null) { + if (!$this->has($job, $argument)) { + if ($job instanceof Job) { + $class = get_class($job); + } else { + $class = $job; + } + $argument = json_encode($argument); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*jobs`(`class`, `argument`, `last_run`) VALUES(?, ?, 0)'); + $query->execute(array($class, $argument)); + } + } + + /** + * @param Job|string $job + * @param mixed $argument + */ + public function remove($job, $argument = null) { + if ($job instanceof Job) { + $class = get_class($job); + } else { + $class = $job; + } + if (!is_null($argument)) { + $argument = json_encode($argument); + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*jobs` WHERE `class` = ? AND `argument` = ?'); + $query->execute(array($class, $argument)); + } else { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*jobs` WHERE `class` = ?'); + $query->execute(array($class)); + } + } + + /** + * check if a job is in the list + * + * @param $job + * @param mixed $argument + * @return bool + */ + public function has($job, $argument) { + if ($job instanceof Job) { + $class = get_class($job); + } else { + $class = $job; + } + $argument = json_encode($argument); + $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*jobs` WHERE `class` = ? AND `argument` = ?'); + $result = $query->execute(array($class, $argument)); + return (bool)$result->fetchRow(); + } + + /** + * get all jobs in the list + * + * @return Job[] + */ + public function getAll() { + $query = \OC_DB::prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs`'); + $result = $query->execute(); + $jobs = array(); + while ($row = $result->fetchRow()) { + $jobs[] = $this->buildJob($row); + } + return $jobs; + } + + /** + * get the next job in the list + * + * @return Job + */ + public function getNext() { + $lastId = $this->getLastJob(); + $query = \OC_DB::prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` WHERE `id` > ? ORDER BY `id` ASC', 1); + $result = $query->execute(array($lastId)); + if ($row = $result->fetchRow()) { + return $this->buildJob($row); + } else { + //begin at the start of the queue + $query = \OC_DB::prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` ORDER BY `id` ASC', 1); + $result = $query->execute(); + if ($row = $result->fetchRow()) { + return $this->buildJob($row); + } else { + return null; //empty job list + } + } + } + + /** + * get the job object from a row in the db + * + * @param array $row + * @return Job + */ + private function buildJob($row) { + $class = $row['class']; + /** + * @var Job $job + */ + $job = new $class(); + $job->setId($row['id']); + $job->setLastRun($row['last_run']); + $job->setArgument(json_decode($row['argument'])); + return $job; + } + + /** + * set the job that was last ran + * + * @param Job $job + */ + public function setLastJob($job) { + \OC_Appconfig::setValue('backgroundjob', 'lastjob', $job->getId()); + } + + /** + * get the id of the last ran job + * + * @return int + */ + public function getLastJob() { + return \OC_Appconfig::getValue('backgroundjob', 'lastjob', 0); + } + + /** + * set the lastRun of $job to now + * + * @param Job $job + */ + public function setLastRun($job) { + $query = \OC_DB::prepare('UPDATE `*PREFIX*jobs` SET `last_run` = ? WHERE `id` = ?'); + $query->execute(array(time(), $job->getId())); + } +} diff --git a/lib/backgroundjob/queuedjob.php b/lib/backgroundjob/queuedjob.php new file mode 100644 index 0000000000..1714182820 --- /dev/null +++ b/lib/backgroundjob/queuedjob.php @@ -0,0 +1,28 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\BackgroundJob; + +/** + * Class QueuedJob + * + * create a background job that is to be executed once + * + * @package OC\BackgroundJob + */ +abstract class QueuedJob extends Job { + /** + * run the job, then remove it from the joblist + * + * @param JobList $jobList + */ + public function execute($jobList) { + $jobList->remove($this); + $this->run($this->argument); + } +} diff --git a/lib/backgroundjob/queuedtask.php b/lib/backgroundjob/queuedtask.php deleted file mode 100644 index b2ce6f39ed..0000000000 --- a/lib/backgroundjob/queuedtask.php +++ /dev/null @@ -1,105 +0,0 @@ -. -* -*/ - -/** - * This class manages our queued tasks. - */ -class OC_BackgroundJob_QueuedTask{ - /** - * @brief Gets one queued task - * @param $id ID of the task - * @return associative array - */ - public static function find( $id ) { - $stmt = OC_DB::prepare( 'SELECT * FROM `*PREFIX*queuedtasks` WHERE `id` = ?' ); - $result = $stmt->execute(array($id)); - return $result->fetchRow(); - } - - /** - * @brief Gets all queued tasks - * @return array with associative arrays - */ - public static function all() { - // Array for objects - $return = array(); - - // Get Data - $stmt = OC_DB::prepare( 'SELECT * FROM `*PREFIX*queuedtasks`' ); - $result = $stmt->execute(array()); - while( $row = $result->fetchRow()) { - $return[] = $row; - } - - return $return; - } - - /** - * @brief Gets all queued tasks of a specific app - * @param $app app name - * @return array with associative arrays - */ - public static function whereAppIs( $app ) { - // Array for objects - $return = array(); - - // Get Data - $stmt = OC_DB::prepare( 'SELECT * FROM `*PREFIX*queuedtasks` WHERE `app` = ?' ); - $result = $stmt->execute(array($app)); - while( $row = $result->fetchRow()) { - $return[] = $row; - } - - // Und weg damit - return $return; - } - - /** - * @brief queues a task - * @param $app app name - * @param $klass class name - * @param $method method name - * @param $parameters all useful data as text - * @return id of task - */ - public static function add( $app, $klass, $method, $parameters ) { - $stmt = OC_DB::prepare( 'INSERT INTO `*PREFIX*queuedtasks` (`app`, `klass`, `method`, `parameters`)' - .' VALUES(?,?,?,?)' ); - $result = $stmt->execute(array($app, $klass, $method, $parameters )); - - return OC_DB::insertid(); - } - - /** - * @brief deletes a queued task - * @param $id id of task - * @return true/false - * - * Deletes a report - */ - public static function delete( $id ) { - $stmt = OC_DB::prepare( 'DELETE FROM `*PREFIX*queuedtasks` WHERE `id` = ?' ); - $result = $stmt->execute(array($id)); - - return true; - } -} diff --git a/lib/backgroundjob/regulartask.php b/lib/backgroundjob/regulartask.php deleted file mode 100644 index 9976872ee1..0000000000 --- a/lib/backgroundjob/regulartask.php +++ /dev/null @@ -1,52 +0,0 @@ -. -* -*/ - -/** - * This class manages the regular tasks. - */ -class OC_BackgroundJob_RegularTask{ - static private $registered = array(); - - /** - * @brief creates a regular task - * @param $klass class name - * @param $method method name - * @return true - */ - static public function register( $klass, $method ) { - // Create the data structure - self::$registered["$klass-$method"] = array( $klass, $method ); - - // No chance for failure ;-) - return true; - } - - /** - * @brief gets all regular tasks - * @return associative array - * - * key is string "$klass-$method", value is array( $klass, $method ) - */ - static public function all() { - return self::$registered; - } -} diff --git a/lib/backgroundjob/timedjob.php b/lib/backgroundjob/timedjob.php new file mode 100644 index 0000000000..ae9f33505a --- /dev/null +++ b/lib/backgroundjob/timedjob.php @@ -0,0 +1,41 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\BackgroundJob; + +/** + * Class QueuedJob + * + * create a background job that is to be executed at an interval + * + * @package OC\BackgroundJob + */ +abstract class TimedJob extends Job { + protected $interval = 0; + + /** + * set the interval for the job + * + * @param int $interval + */ + public function setInterval($interval) { + $this->interval = $interval; + } + + /** + * run the job if + * + * @param JobList $jobList + */ + public function execute($jobList) { + if ((time() - $this->lastRun) > $this->interval) { + $jobList->setLastRun($this); + $this->run($this->argument); + } + } +} diff --git a/lib/backgroundjob/worker.php b/lib/backgroundjob/worker.php deleted file mode 100644 index e966ac9647..0000000000 --- a/lib/backgroundjob/worker.php +++ /dev/null @@ -1,118 +0,0 @@ -. -* -*/ - -/** - * This class does the dirty work. - * - * TODO: locking in doAllSteps - */ -class OC_BackgroundJob_Worker{ - /** - * @brief executes all tasks - * @return boolean - * - * This method executes all regular tasks and then all queued tasks. - * This method should be called by cli scripts that do not let the user - * wait. - */ - public static function doAllSteps() { - // Do our regular work - $lasttask = OC_Appconfig::getValue( 'core', 'backgroundjobs_task', '' ); - - $regular_tasks = OC_BackgroundJob_RegularTask::all(); - ksort( $regular_tasks ); - foreach( $regular_tasks as $key => $value ) { - if( strcmp( $key, $lasttask ) > 0 ) { - // Set "restart here" config value - OC_Appconfig::setValue( 'core', 'backgroundjobs_task', $key ); - call_user_func( $value ); - } - } - // Reset "start here" config value - OC_Appconfig::setValue( 'core', 'backgroundjobs_task', '' ); - - // Do our queued tasks - $queued_tasks = OC_BackgroundJob_QueuedTask::all(); - foreach( $queued_tasks as $task ) { - OC_BackgroundJob_QueuedTask::delete( $task['id'] ); - call_user_func( array( $task['klass'], $task['method'] ), $task['parameters'] ); - } - - return true; - } - - /** - * @brief does a single task - * @return boolean - * - * This method executes one task. It saves the last state and continues - * with the next step. This method should be used by webcron and ajax - * services. - */ - public static function doNextStep() { - $laststep = OC_Appconfig::getValue( 'core', 'backgroundjobs_step', 'regular_tasks' ); - - if( $laststep == 'regular_tasks' ) { - // get last app - $lasttask = OC_Appconfig::getValue( 'core', 'backgroundjobs_task', '' ); - - // What's the next step? - $regular_tasks = OC_BackgroundJob_RegularTask::all(); - ksort( $regular_tasks ); - $done = false; - - // search for next background job - foreach( $regular_tasks as $key => $value ) { - if( strcmp( $key, $lasttask ) > 0 ) { - OC_Appconfig::setValue( 'core', 'backgroundjobs_task', $key ); - $done = true; - call_user_func( $value ); - break; - } - } - - if( $done == false ) { - // Next time load queued tasks - OC_Appconfig::setValue( 'core', 'backgroundjobs_step', 'queued_tasks' ); - } - } - else{ - $tasks = OC_BackgroundJob_QueuedTask::all(); - if( count( $tasks )) { - $task = $tasks[0]; - // delete job before we execute it. This prevents endless loops - // of failing jobs. - OC_BackgroundJob_QueuedTask::delete($task['id']); - - // execute job - call_user_func( array( $task['klass'], $task['method'] ), $task['parameters'] ); - } - else{ - // Next time load queued tasks - OC_Appconfig::setValue( 'core', 'backgroundjobs_step', 'regular_tasks' ); - OC_Appconfig::setValue( 'core', 'backgroundjobs_task', '' ); - } - } - - return true; - } -} diff --git a/lib/base.php b/lib/base.php index 7b0967df9f..fda65a221c 100644 --- a/lib/base.php +++ b/lib/base.php @@ -561,7 +561,7 @@ class OC { */ public static function registerCacheHooks() { // register cache cleanup jobs - OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc'); + \OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); } diff --git a/lib/cache/fileglobalgc.php b/lib/cache/fileglobalgc.php new file mode 100644 index 0000000000..a29c31f906 --- /dev/null +++ b/lib/cache/fileglobalgc.php @@ -0,0 +1,8 @@ +add($job, $argument); } - /** - * @brief gets all regular tasks - * @return associative array - * - * key is string "$klass-$method", value is array( $klass, $method ) - */ - static public function allRegularTasks() { - return \OC_BackgroundJob_RegularTask::all(); - } - - /** - * @brief Gets one queued task - * @param $id ID of the task - * @return associative array - */ - public static function findQueuedTask( $id ) { - return \OC_BackgroundJob_QueuedTask::find( $id ); - } - - /** - * @brief Gets all queued tasks - * @return array with associative arrays - */ - public static function allQueuedTasks() { - return \OC_BackgroundJob_QueuedTask::all(); - } - - /** - * @brief Gets all queued tasks of a specific app - * @param $app app name - * @return array with associative arrays - */ - public static function queuedTaskWhereAppIs( $app ) { - return \OC_BackgroundJob_QueuedTask::whereAppIs( $app ); - } - - /** - * @brief queues a task - * @param $app app name - * @param $klass class name - * @param $method method name - * @param $parameters all useful data as text - * @return id of task - */ - public static function addQueuedTask( $app, $klass, $method, $parameters ) { - return \OC_BackgroundJob_QueuedTask::add( $app, $klass, $method, $parameters ); - } - - /** - * @brief deletes a queued task - * @param $id id of task - * @return true/false - * - * Deletes a report - */ - public static function deleteQueuedTask( $id ) { - return \OC_BackgroundJob_QueuedTask::delete( $id ); - } } diff --git a/tests/lib/backgroundjob/dummyjoblist.php b/tests/lib/backgroundjob/dummyjoblist.php new file mode 100644 index 0000000000..c4ccfc22c9 --- /dev/null +++ b/tests/lib/backgroundjob/dummyjoblist.php @@ -0,0 +1,114 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\BackgroundJob; + +class JobRun extends \Exception { +} + +/** + * Class DummyJobList + * + * in memory job list for testing purposes + */ +class DummyJobList extends \OC\BackgroundJob\JobList { + /** + * @var \OC\BackgroundJob\Job[] + */ + private $jobs = array(); + + private $last = 0; + + /** + * @param \OC\BackgroundJob\Job|string $job + */ + public function add($job) { + if (!$this->has($job)) { + $this->jobs[] = $job; + } + } + + /** + * @param \OC\BackgroundJob\Job|string $job + */ + public function remove($job) { + $index = array_search($job, $this->jobs); + if ($index !== false) { + unset($this->jobs[$index]); + } + } + + /** + * check if a job is in the list + * + * @param $job + * @return bool + */ + public function has($job) { + return array_search($job, $this->jobs) !== false; + } + + /** + * get all jobs in the list + * + * @return \OC\BackgroundJob\Job[] + */ + public function getAll() { + return $this->jobs; + } + + /** + * get the next job in the list + * + * @return \OC\BackgroundJob\Job + */ + public function getNext() { + if (count($this->jobs) > 0) { + if ($this->last < (count($this->jobs) - 1)) { + $i = $this->last + 1; + } else { + $i = 0; + } + return $this->jobs[$i]; + } else { + return null; + } + } + + /** + * set the job that was last ran + * + * @param \OC\BackgroundJob\Job $job + */ + public function setLastJob($job) { + $i = array_search($job, $this->jobs); + if ($i !== false) { + $this->last = $i; + } else { + $this->last = 0; + } + } + + /** + * get the id of the last ran job + * + * @return int + */ + public function getLastJob() { + return $this->last; + } + + /** + * set the lastRun of $job to now + * + * @param \OC\BackgroundJob\Job $job + */ + public function setLastRun($job) { + $job->setLastRun(time()); + } +} diff --git a/tests/lib/backgroundjob/queuedjob.php b/tests/lib/backgroundjob/queuedjob.php new file mode 100644 index 0000000000..62d631a3ef --- /dev/null +++ b/tests/lib/backgroundjob/queuedjob.php @@ -0,0 +1,42 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\BackgroundJob; + +class TestQueuedJob extends \OC\BackgroundJob\QueuedJob { + public function run() { + throw new JobRun(); //throw an exception so we can detect if this function is called + } +} + +class QueuedJob extends \PHPUnit_Framework_TestCase { + /** + * @var DummyJobList $jobList + */ + private $jobList; + /** + * @var \OC\BackgroundJob\TimedJob $job + */ + private $job; + + public function setup() { + $this->jobList = new DummyJobList(); + $this->job = new TestQueuedJob(); + $this->jobList->add($this->job); + } + + public function testJobShouldBeRemoved() { + try { + $this->assertTrue($this->jobList->has($this->job)); + $this->job->execute($this->jobList); + $this->fail("job should have been run"); + } catch (JobRun $e) { + $this->assertFalse($this->jobList->has($this->job)); + } + } +} diff --git a/tests/lib/backgroundjob/timedjob.php b/tests/lib/backgroundjob/timedjob.php new file mode 100644 index 0000000000..4147b82cbb --- /dev/null +++ b/tests/lib/backgroundjob/timedjob.php @@ -0,0 +1,68 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\BackgroundJob; + +class TestTimedJob extends \OC\BackgroundJob\TimedJob { + public function __construct() { + $this->setInterval(10); + } + + public function run() { + throw new JobRun(); //throw an exception so we can detect if this function is called + } +} + +class TimedJob extends \PHPUnit_Framework_TestCase { + /** + * @var DummyJobList $jobList + */ + private $jobList; + /** + * @var \OC\BackgroundJob\TimedJob $job + */ + private $job; + + public function setup() { + $this->jobList = new DummyJobList(); + $this->job = new TestTimedJob(); + $this->jobList->add($this->job); + } + + public function testShouldRunAfterInterval() { + $this->job->setLastRun(time() - 12); + try { + $this->job->execute($this->jobList); + $this->fail("job should have run"); + } catch (JobRun $e) { + } + } + + public function testShouldNotRunWithinInterval() { + $this->job->setLastRun(time() - 5); + try { + $this->job->execute($this->jobList); + } catch (JobRun $e) { + $this->fail("job should not have run"); + } + } + + public function testShouldNotTwice() { + $this->job->setLastRun(time() - 15); + try { + $this->job->execute($this->jobList); + $this->fail("job should have run the first time"); + } catch (JobRun $e) { + try { + $this->job->execute($this->jobList); + } catch (JobRun $e) { + $this->fail("job should not have run the second time"); + } + } + } +} From 3aecfda0c052c1b7f7a4e3459f339a27298e32a7 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 20 Apr 2013 23:51:58 +0200 Subject: [PATCH 084/575] Adjust backgroundjob test cases --- tests/lib/backgroundjob/dummyjoblist.php | 12 ++++++++---- tests/lib/backgroundjob/queuedjob.php | 6 +++--- tests/lib/backgroundjob/timedjob.php | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tests/lib/backgroundjob/dummyjoblist.php b/tests/lib/backgroundjob/dummyjoblist.php index c4ccfc22c9..833607c15c 100644 --- a/tests/lib/backgroundjob/dummyjoblist.php +++ b/tests/lib/backgroundjob/dummyjoblist.php @@ -26,17 +26,20 @@ class DummyJobList extends \OC\BackgroundJob\JobList { /** * @param \OC\BackgroundJob\Job|string $job + * @param mixed $argument */ - public function add($job) { - if (!$this->has($job)) { + public function add($job, $argument = null) { + $job->setArgument($argument); + if (!$this->has($job, null)) { $this->jobs[] = $job; } } /** * @param \OC\BackgroundJob\Job|string $job + * @param mixed $argument */ - public function remove($job) { + public function remove($job, $argument = null) { $index = array_search($job, $this->jobs); if ($index !== false) { unset($this->jobs[$index]); @@ -47,9 +50,10 @@ class DummyJobList extends \OC\BackgroundJob\JobList { * check if a job is in the list * * @param $job + * @param mixed $argument * @return bool */ - public function has($job) { + public function has($job, $argument) { return array_search($job, $this->jobs) !== false; } diff --git a/tests/lib/backgroundjob/queuedjob.php b/tests/lib/backgroundjob/queuedjob.php index 62d631a3ef..1d373473cd 100644 --- a/tests/lib/backgroundjob/queuedjob.php +++ b/tests/lib/backgroundjob/queuedjob.php @@ -9,7 +9,7 @@ namespace Test\BackgroundJob; class TestQueuedJob extends \OC\BackgroundJob\QueuedJob { - public function run() { + public function run($argument) { throw new JobRun(); //throw an exception so we can detect if this function is called } } @@ -32,11 +32,11 @@ class QueuedJob extends \PHPUnit_Framework_TestCase { public function testJobShouldBeRemoved() { try { - $this->assertTrue($this->jobList->has($this->job)); + $this->assertTrue($this->jobList->has($this->job, null)); $this->job->execute($this->jobList); $this->fail("job should have been run"); } catch (JobRun $e) { - $this->assertFalse($this->jobList->has($this->job)); + $this->assertFalse($this->jobList->has($this->job, null)); } } } diff --git a/tests/lib/backgroundjob/timedjob.php b/tests/lib/backgroundjob/timedjob.php index 4147b82cbb..0af933afef 100644 --- a/tests/lib/backgroundjob/timedjob.php +++ b/tests/lib/backgroundjob/timedjob.php @@ -13,7 +13,7 @@ class TestTimedJob extends \OC\BackgroundJob\TimedJob { $this->setInterval(10); } - public function run() { + public function run($argument) { throw new JobRun(); //throw an exception so we can detect if this function is called } } From db0ea9780b3056a9161205588e55c4808648ec0a Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 21 Apr 2013 00:04:58 +0200 Subject: [PATCH 085/575] Add database table for backgroundjob --- db_structure.xml | 30 +++++++++++++++--------------- lib/util.php | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/db_structure.xml b/db_structure.xml index dce90697b1..3372be9f69 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -843,7 +843,7 @@ - *dbprefix*queuedtasks + *dbprefix*jobs @@ -858,35 +858,35 @@ - app + class text true - 255 + 256 - klass + argument text true - 255 + 256 - method - text + last_run + timestamp - true - 255 + false - - parameters - text - true - 255 - + + job_class_index + + class + ascending + + diff --git a/lib/util.php b/lib/util.php index 38453c1ce9..b3fab5041f 100755 --- a/lib/util.php +++ b/lib/util.php @@ -75,7 +75,7 @@ class OC_Util { public static function getVersion() { // hint: We only can count up. Reset minor/patchlevel when // updating major/minor version number. - return array(5, 80, 02); + return array(5, 80, 03); } /** From 07f510692cfa6dfb8357b7eb66e897a03fd20e3f Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 21 Apr 2013 00:08:55 +0200 Subject: [PATCH 086/575] Ensure we don't throw an exception before we can upgrade to the new backgroundjob system --- lib/base.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/base.php b/lib/base.php index fda65a221c..631f934154 100644 --- a/lib/base.php +++ b/lib/base.php @@ -561,7 +561,11 @@ class OC { */ public static function registerCacheHooks() { // register cache cleanup jobs - \OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); + try { //if this is executed before the upgrade to the new backgroundjob system is completed it will throw an exception + \OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); + } catch (Exception $e) { + + } OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); } From 40de36a8f3dfba5dc6297adbd6c92d8b64c57190 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 21 Apr 2013 00:58:15 +0200 Subject: [PATCH 087/575] Try to supress pre-upgrade backgroundjob error --- lib/base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/base.php b/lib/base.php index 631f934154..3568f48644 100644 --- a/lib/base.php +++ b/lib/base.php @@ -562,7 +562,7 @@ class OC { public static function registerCacheHooks() { // register cache cleanup jobs try { //if this is executed before the upgrade to the new backgroundjob system is completed it will throw an exception - \OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); + @\OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); } catch (Exception $e) { } From 6b47da10bea66d7a925de2850919b503201558be Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 22 Apr 2013 04:40:49 +0200 Subject: [PATCH 088/575] improved rename and file size support fix missing user_id on write --- apps/files_encryption/lib/proxy.php | 174 +++++++++++++++------------ apps/files_encryption/lib/stream.php | 31 ++--- 2 files changed, 115 insertions(+), 90 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 67c93694e3..505fad440d 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -288,38 +288,54 @@ class Proxy extends \OC_FileProxy { * @return bool Result of rename() * @note This is pre rather than post because using post didn't work */ - public function preRename( $oldPath, $newPath ) { - - // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; - - $view = new \OC_FilesystemView( '/' ); - - $userId = \OCP\USER::getUser(); - - // Format paths to be relative to user files dir - $oldTrimmed = ltrim( $oldPath, '/' ); - $oldSplit = explode( '/', $oldTrimmed ); - $oldSliced = array_slice( $oldSplit, 2 ); - $oldRelPath = implode( '/', $oldSliced ); - $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $oldRelPath . '.key'; - - $newTrimmed = ltrim( $newPath, '/' ); - $newSplit = explode( '/', $newTrimmed ); - $newSliced = array_slice( $newSplit, 2 ); - $newRelPath = implode( '/', $newSliced ); - $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $newRelPath . '.key'; - - // Rename keyfile so it isn't orphaned - $result = $view->rename( $oldKeyfilePath, $newKeyfilePath ); - - \OC_FileProxy::$enabled = true; - - return $result; - - } - - public function postFopen( $path, &$result ){ + public function preRename( $oldPath, $newPath ) + { + + // Disable encryption proxy to prevent recursive calls + \OC_FileProxy::$enabled = false; + + $view = new \OC_FilesystemView('/'); + + $userId = \OCP\USER::getUser(); + + // Format paths to be relative to user files dir + $oldTrimmed = ltrim($oldPath, '/'); + $oldSplit = explode('/', $oldTrimmed); + $oldSliced = array_slice($oldSplit, 2); + $oldRelPath = implode('/', $oldSliced); + $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $oldRelPath; + + + $newTrimmed = ltrim($newPath, '/'); + $newSplit = explode('/', $newTrimmed); + $newSliced = array_slice($newSplit, 2); + $newRelPath = implode('/', $newSliced); + $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $newRelPath; + + // add key ext if this is not an folder + if (!$view->is_dir($oldKeyfilePath)) { + $oldKeyfilePath .= '.key'; + $newKeyfilePath .= '.key'; + } else { + // handle share-keys folders + $oldShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $oldRelPath; + $newShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $newRelPath; + $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); + } + + //TODO add support for share-keys files + //... + + // Rename keyfile so it isn't orphaned + $result = $view->rename($oldKeyfilePath, $newKeyfilePath); + + \OC_FileProxy::$enabled = true; + + return $result; + + } + + public function postFopen( $path, &$result ){ if ( !$result ) { @@ -421,49 +437,55 @@ class Proxy extends \OC_FileProxy { } public function postFileSize( $path, $size ) { - - // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); - - if ( Crypt::isEncryptedMeta( $path_f ) ) { - - // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; - - // get file info - $cached = \OC\Files\Filesystem::getFileInfo( $path_f, '' ); - - // calculate last chunk nr - $lastChunckNr = floor( $size / 8192); - - // open stream - $result = fopen( 'crypt://'.$path_f, "r" ); - - // calculate last chunk position - $lastChunckPos = ( $lastChunckNr * 8192 ); - - // seek to end - fseek( $result, $lastChunckPos ); - - // get the content of the last chunck - $lastChunkContent = fgets( $result ); - - // calc the real filesize with the size of the last chunk - $realSize = ( ( $lastChunckNr * 6126 ) + strlen( $lastChunkContent ) ); - - // enable proxy - \OC_FileProxy::$enabled = true; - - // set the size - $cached['size'] = $realSize; - - return $cached['size']; - - } else { - - return $size; - - } + + // Reformat path for use with OC_FSV + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); + + $view = new \OC_FilesystemView( '/' ); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + + if ($util->isEncryptedPath($path)) { + + // Disable encryption proxy to prevent recursive calls + \OC_FileProxy::$enabled = false; + + // get file info + $cached = \OC\Files\Filesystem::getFileInfo($path_f, ''); + + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); + + // open stream + $result = fopen('crypt://' . $path_f, "r"); + + if(is_resource($result)) { + // calculate last chunk position + $lastChunckPos = ($lastChunckNr * 8192); + + // seek to end + fseek($result, $lastChunckPos); + + // get the content of the last chunck + $lastChunkContent = fgets($result); + + // calc the real file size with the size of the last chunk + $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + + // set the size + $cached['size'] = $realSize; + } + + // enable proxy + \OC_FileProxy::$enabled = true; + + return $cached['size']; + + } else { + + return $size; + + } } } diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 4b33c200bf..c12fab783b 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -101,6 +101,9 @@ class Stream { } else { + // Disable fileproxies so we can get the file size and open the source file without recursive encryption + \OC_FileProxy::$enabled = false; + if ( $mode == 'w' or $mode == 'w+' @@ -119,9 +122,6 @@ class Stream { } - // Disable fileproxies so we can open the source file without recursive encryption - \OC_FileProxy::$enabled = false; - //$this->handle = fopen( $this->rawPath, $mode ); $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); @@ -240,14 +240,13 @@ class Stream { // Avoid problems with .part file extensions $this->relPath = Keymanager::fixPartialFilePath( $this->relPath ); - + + // Fetch and decrypt keyfile + // Fetch existing keyfile + $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); + // If a keyfile already exists - if ( $this->rootView->file_exists( $this->userId . '/'. 'files_encryption' . '/' . 'keyfiles' . '/' . $this->relPath . '.key' ) ) { - - // Fetch and decrypt keyfile - // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); - + if ( $this->encKeyfile ) { $this->setUserProperty(); $session = new Session( $this->rootView ); @@ -338,11 +337,15 @@ class Stream { // Get all users sharing the file $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath ); - + + // allways add current user + $uniqueUserIds[] = $this->userId; + array_unique( $uniqueUserIds ); + // Fetch public keys for all sharing users $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); - - // Encrypt enc key for all sharing users + + // Encrypt enc key for all sharing users $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); $view = new \OC_FilesystemView( '/' ); @@ -429,7 +432,7 @@ class Stream { $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); - trigger_error("\$encrypted = $encrypted"); + //trigger_error("\$encrypted = $encrypted"); // Write the data chunk to disk. This will be // attended to the last data chunk if the file From a2ba3c8a43780eab5ad8a4d96db33c584e7ae2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 11:58:39 +0200 Subject: [PATCH 089/575] fix sharing of folders. First we need to collect all files. Than we need to find all users with access to the file because this can vary from file to file and than we can encrypt it for all recipients --- apps/files_encryption/hooks/hooks.php | 72 +++++++++++++-------------- apps/files_encryption/lib/util.php | 20 ++++++++ 2 files changed, 54 insertions(+), 38 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2731ee1112..13cf352b4e 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -166,8 +166,8 @@ class Hooks { /** * @brief */ - public static function postShared( $params ) { - + public static function postShared($params) { + // NOTE: $params has keys: // [itemType] => file // itemSource -> int, filecache file ID @@ -183,50 +183,46 @@ class Hooks { // [fileSource] => 13 // [fileTarget] => /test8 // [id] => 10 - // [token] => - + // [token] => // TODO: Should other kinds of item be encrypted too? - if ( $params['itemType'] === 'file' ) { - - $view = new \OC_FilesystemView( '/' ); + if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { + + $view = new \OC_FilesystemView('/'); $session = new Session($view); $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $path = $util->fileIdToPath( $params['itemSource'] ); + $util = new Util($view, $userId); + $path = $util->fileIdToPath($params['itemSource']); $sharingEnabled = \OCP\Share::isEnabled(); - $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path); - - // Recursively expand path to include subfiles - $allPaths = $util->getPaths( $path ); - - $failed = array(); - - // Loop through all subfiles - foreach ( $allPaths as $path ) { - - // Attempt to set shareKey - if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { - - $failed[] = $path; - - } - - } - - // If no attempts to set keyfiles failed - if ( empty( $failed ) ) { - - return true; - + + if ($params['itemType'] === 'folder') { + //list($owner, $ownerPath) = $util->getUidAndFilename($filePath); + $allFiles = $util->getAllFiles($path); } else { - - return false; - + $allFiles = array($path); + } + + foreach ($allFiles as $path) { + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path); + + $failed = array(); + + // Attempt to set shareKey + if (!$util->setSharedFileKeyfiles($session, $usersSharing, $path)) { + + $failed[] = $path; + } + } + + // If no attempts to set keyfiles failed + if (empty($failed)) { + + return true; + } else { + + return false; } - } - } /** diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 8807de7c2a..b3df7f0db0 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -939,4 +939,24 @@ class Util { } + /** + *@ brief geo recursively through a dir and collect all files and sub files. + * @param type $dir relative to the users files folder + * @return array with list of files relative to the users files folder + */ + public function getAllFiles($dir) { + $result = array(); + $path = $this->view->getLocalFile(); + $content = $this->view->getDirectoryContent("/".$this->userFilesDir.'/'.$this->filesFolderName.$dir); + + foreach ($content as $c) { + if ($c['type'] === "dir" ) { + $result = array_merge($result, $this->getAllFiles(substr($c['path'],5))); + } else { + $result[] = substr($c['path'], 5); + } + } + return $result; + } + } From 8a46e809f00745f4b67d118e85ec2d35e74b732e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 12:22:07 +0200 Subject: [PATCH 090/575] remove util::getPaths(), this function was broken and is replaced my util::getAllFiles(). When unsharing a folder only remove the share key for sub files if the user really no longer have access to the file. Can happen that a sub-file/-folder is shared to a group the user is a member of or explicitly once more to the same user --- apps/files_encryption/hooks/hooks.php | 21 +++++++---- apps/files_encryption/lib/util.php | 51 --------------------------- 2 files changed, 14 insertions(+), 58 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 13cf352b4e..e3861e7cc5 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -196,7 +196,6 @@ class Hooks { $sharingEnabled = \OCP\Share::isEnabled(); if ($params['itemType'] === 'folder') { - //list($owner, $ownerPath) = $util->getUidAndFilename($filePath); $allFiles = $util->getAllFiles($path); } else { $allFiles = array($path); @@ -250,13 +249,21 @@ class Hooks { $userIds = array($params['shareWith']); } - // If path is a folder, get all children - $allPaths = $util->getPaths( $path ); + if ($params['itemType'] === 'folder') { + $allFiles = $util->getAllFiles($path); + } else { + $allFiles = array($path); + } + - foreach ( $allPaths as $path ) { - - // Unshare each child path - if ( ! Keymanager::delShareKey( $view, $userIds, $path ) ) { + foreach ( $allFiles as $path ) { + + // check if the user still has access to the file, otherwise delete share key + $sharingUsers = $util->getSharingUsersArray(true, $path); + + // Unshare every user who no longer has access to the file + $delUsers = array_diff($userIds, $sharingUsers); + if ( ! Keymanager::delShareKey( $view, $delUsers, $path ) ) { $failed[] = $path; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index b3df7f0db0..de63e0ff9f 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -693,58 +693,7 @@ class Util { ); } - - /** - * @brief Expand given path to all sub files & folders - * @param string $path path which needs to be updated - * @return array $pathsArray all found file paths - * @note Paths of directories excluded, only *file* paths are returned - */ - public function getPaths( $path ) { - // Default return value is success - $result = true; - - // Make path include 'files' dir for OC_FSV operations - $fPath = 'files' . $path; - - // If we're handling a single file - if ( ! $this->view->is_dir( $fPath ) ) { - - $pathsArray[] = $path; - - // If we're handling a folder (recursively) - } else { - - $subFiles = $this->view->getDirectoryContent( $fPath ); - - foreach ( $subFiles as $file ) { - - $filePath = substr( $file['path'], 5 ); - - // If this is a nested file - if ( ! $this->view->is_dir( $fPath ) ) { - - // Add the file path to array - $pathsArray[] = $path; - - } else { - - // If this is a nested folder - $dirPaths = $this->getPaths( $filePath ); - - // Add all subfiles & folders to the array - $pathsArray = array_merge( $dirPaths, $pathsArray ); - - } - } - - } - - return $pathsArray; - - } - /** * @brief Decrypt a keyfile without knowing how it was encrypted * @param string $filePath From f6ac34afea6c1f68f53e0e7a076b0b274559fd8b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 22 Apr 2013 12:25:55 +0200 Subject: [PATCH 091/575] improved handling for getSharingUsersArray --- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/lib/stream.php | 10 +++------- apps/files_encryption/lib/util.php | 9 +++++++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 505fad440d..bc6280ff61 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -134,7 +134,7 @@ class Proxy extends \OC_FileProxy { $sharingEnabled = \OCP\Share::isEnabled(); - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath ); + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); // Fetch public keys for all users who will share the file $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index c12fab783b..6fb95934c3 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -335,14 +335,10 @@ class Stream { $util = new Util( $this->rootView, $this->userId ); - // Get all users sharing the file - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath ); + // Get all users sharing the file includes current user + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId); - // allways add current user - $uniqueUserIds[] = $this->userId; - array_unique( $uniqueUserIds ); - - // Fetch public keys for all sharing users + // Fetch public keys for all sharing users $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); // Encrypt enc key for all sharing users diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index b3df7f0db0..e69314e099 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -848,7 +848,7 @@ class Util { * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle */ - public function getSharingUsersArray( $sharingEnabled, $filePath ) { + public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { // Check if key recovery is enabled $recoveryEnabled = $this->recoveryEnabled(); @@ -878,7 +878,12 @@ class Util { $userIds[] = $adminUid; } - + + // add current user if given + if($currentUserId != false) { + $userIds[] = $currentUserId; + } + // Remove duplicate UIDs $uniqueUserIds = array_unique ( $userIds ); From 17059388482eabf6a1d05ea4c8d09e0f67ed9c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 12:32:38 +0200 Subject: [PATCH 092/575] removed some leftover code; use already existing var for path to users file folder --- apps/files_encryption/lib/util.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index de63e0ff9f..d1377df9a9 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -895,8 +895,8 @@ class Util { */ public function getAllFiles($dir) { $result = array(); - $path = $this->view->getLocalFile(); - $content = $this->view->getDirectoryContent("/".$this->userFilesDir.'/'.$this->filesFolderName.$dir); + + $content = $this->view->getDirectoryContent($this->userFilesDir.$dir); foreach ($content as $c) { if ($c['type'] === "dir" ) { From b24a673714289bf515c93999a1dd0dfc552eb7cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 14:12:18 +0200 Subject: [PATCH 093/575] the owner uid is not interesting. We want to get all users who have access to the given item source, no matter from whom it was shared --- lib/public/share.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/public/share.php b/lib/public/share.php index acdf895c92..9fd8eb42fb 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -150,10 +150,10 @@ class Share { FROM `*PREFIX*share` WHERE - item_source = ? AND share_type = ? AND uid_owner = ?' + item_source = ? AND share_type = ?' ); - $result = $query->execute( array( $source, self::SHARE_TYPE_USER, $user ) ); + $result = $query->execute( array( $source, self::SHARE_TYPE_USER ) ); if ( \OC_DB::isError( $result ) ) { \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); @@ -170,10 +170,10 @@ class Share { FROM `*PREFIX*share` WHERE - item_source = ? AND share_type = ? AND uid_owner = ?' + item_source = ? AND share_type = ?' ); - $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP, $user ) ); + $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP ) ); if ( \OC_DB::isError( $result ) ) { \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); @@ -190,10 +190,10 @@ class Share { FROM `*PREFIX*share` WHERE - item_source = ? AND share_type = ? AND uid_owner = ?' + item_source = ? AND share_type = ?' ); - $result = $query->execute( array( $source, self::SHARE_TYPE_LINK, $user ) ); + $result = $query->execute( array( $source, self::SHARE_TYPE_LINK ) ); if ( \OC_DB::isError( $result ) ) { \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); From bcb2e87846407959a1826b3c38d6956d180e3468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 14:13:59 +0200 Subject: [PATCH 094/575] check if the item source was shared to me to decide if it is a re-share or not. Re-sharing of encrypted files should work now, we might still need to test some corner cases --- apps/files_encryption/hooks/hooks.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e3861e7cc5..88ec64b492 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -193,8 +193,18 @@ class Hooks { $util = new Util($view, $userId); $path = $util->fileIdToPath($params['itemSource']); + //check if this is a reshare action, that's true if the item source is already shared with me + $sharedItem = \OCP\Share::getItemSharedWithBySource($params['itemType'], $params['itemSource']); + if ($sharedItem) { + // if it is a re-share than the file is located in my Shared folder + $path = '/Shared'.$sharedItem['file_target']; + } else { + $path = $util->fileIdToPath($params['itemSource']); + } + $sharingEnabled = \OCP\Share::isEnabled(); + // if a folder was shared, get a list if all (sub-)folders if ($params['itemType'] === 'folder') { $allFiles = $util->getAllFiles($path); } else { @@ -243,12 +253,14 @@ class Hooks { $util = new Util( $view, $userId ); $path = $util->fileIdToPath( $params['itemSource'] ); + // for group shares get a list of the group members if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { $userIds = \OC_Group::usersInGroup($params['shareWith']); } else { $userIds = array($params['shareWith']); } + // if we unshare a folder we need a list of all (sub-)files if ($params['itemType'] === 'folder') { $allFiles = $util->getAllFiles($path); } else { From b57478fa27a2dc2dcfeba68064e44aca5848e145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 14:14:28 +0200 Subject: [PATCH 095/575] fix comment, remove unused variable --- apps/files_encryption/lib/util.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index d1377df9a9..1ba339c15d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -805,15 +805,10 @@ class Util { // Make sure that a share key is generated for the owner too list($owner, $ownerPath) = $this->getUidAndFilename($filePath); - //$userIds = array( $this->userId ); - $userIds = array(); - if ( $sharingEnabled ) { // Find out who, if anyone, is sharing the file - $shareUids = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); - - $userIds = array_merge( $userIds, $shareUids ); + $userIds = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); } @@ -889,7 +884,7 @@ class Util { } /** - *@ brief geo recursively through a dir and collect all files and sub files. + * @brief geo recursively through a dir and collect all files and sub files. * @param type $dir relative to the users files folder * @return array with list of files relative to the users files folder */ From b5cb5dab513441b8c914aaa043921d0affae4604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 14:30:10 +0200 Subject: [PATCH 096/575] fix encryption to owncloud user for public link shares --- apps/files_encryption/lib/keymanager.php | 2 +- apps/files_encryption/lib/util.php | 2 +- lib/public/share.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index f23423062b..6fb1f128b5 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -54,7 +54,7 @@ class Keymanager { \OC_FileProxy::$enabled = false; - return $view->file_get_contents( '/public-keys/' . '/' . $userId . '.public.key' ); + return $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); \OC_FileProxy::$enabled = true; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 1ba339c15d..143ba69f25 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -668,7 +668,7 @@ class Util { // public system user 'ownCloud' (for public shares) if ( $util->ready() - or $user == 'ownCloud' + or $user == 'owncloud' ) { // Construct array of ready UIDs for Keymanager{} diff --git a/lib/public/share.php b/lib/public/share.php index 9fd8eb42fb..5cd556c6ac 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -200,7 +200,7 @@ class Share { } if ($result->fetchRow()) { - $shares[] = "ownCloud"; + $shares[] = "owncloud"; } } // Include owner in list of users, if requested From a4364a93d0e80e0d1daa2b28713df05c25970fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 22 Apr 2013 15:29:58 +0200 Subject: [PATCH 097/575] delete all share keys if a file gets deleted --- apps/files_encryption/lib/keymanager.php | 21 ++++++++++++++++++++- apps/files_encryption/lib/proxy.php | 11 +++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 6fb1f128b5..9885f5e550 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -391,7 +391,26 @@ class Keymanager { return $result; } - + + /** + * @brief delete all share keys of a given file + * @param \OC_FilesystemView $view + * @param type $userId owner of the file + * @param type $filePath path to the file, relative to the owners file dir + */ + public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) { + + if ($view->is_dir($userId.'/files/'.$filePath)) { + $view->unlink($userId.'/files_encryption/share-keys/'.$filePath); + } else { + $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$filePath); + $matches = glob(preg_quote($localKeyPath).'*.shareKey'); + foreach ($matches as $ma) { + unlink($ma); + } + } + } + /** * @brief Delete a single user's shareKey for a single file */ diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 505fad440d..bd25465ee6 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -256,18 +256,13 @@ class Proxy extends \OC_FileProxy { // Format path to be relative to user files dir $relPath = $util->stripUserFilesPath( $path ); -// list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); - - $fileOwner = \OC\Files\Filesystem::getOwner( $path ); - $ownerPath = $util->stripUserFilesPath( $path ); // TODO: Don't trust $path, fetch owner path - - $filePath = $fileOwner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath; + list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); // Delete keyfile & shareKey so it isn't orphaned if ( ! ( - Keymanager::deleteFileKey( $view, $fileOwner, $ownerPath ) - && Keymanager::delShareKey( $view, $fileOwner, $ownerPath ) + Keymanager::deleteFileKey( $view, $owner, $ownerPath ) + && Keymanager::delAllShareKeys( $view, $owner, $ownerPath ) ) ) { From 37c72059417d2f2f776ee4318e3705adf6c54fe7 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 22 Apr 2013 18:50:59 +0200 Subject: [PATCH 098/575] fix wrong file path in util --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9868aba02e..6e8786b7cd 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -337,7 +337,7 @@ class Util { // scanning every file like this // will eat server resources :( if ( - Keymanager::getFileKey( $this->view, $this->userId, $file ) + Keymanager::getFileKey( $this->view, $this->userId, $relPath ) && Crypt::isCatfileContent( $data ) ) { From 8ab9433fdff179649a5e5b9d6046d85efd81d3b8 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 22 Apr 2013 18:54:23 +0200 Subject: [PATCH 099/575] fix wrong file path in proxy --- apps/files_encryption/lib/proxy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 1a96f1e495..e058a528ad 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -266,7 +266,7 @@ class Proxy extends \OC_FileProxy { ) ) { - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$filePath.'"', \OC_Log::ERROR ); + \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$ownerPath.'"', \OC_Log::ERROR ); } From e63633b5f300a020872d11659874c39bda292a44 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 22 Apr 2013 20:23:23 +0200 Subject: [PATCH 100/575] Don't try to use backgroundjobs before the installtion is done --- lib/base.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/base.php b/lib/base.php index 3568f48644..9246bbb5cd 100644 --- a/lib/base.php +++ b/lib/base.php @@ -560,13 +560,15 @@ class OC { * register hooks for the cache */ public static function registerCacheHooks() { - // register cache cleanup jobs - try { //if this is executed before the upgrade to the new backgroundjob system is completed it will throw an exception - @\OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); - } catch (Exception $e) { + if (OC_Config::getValue('installed', false)) { //don't try to do this before we are properly setup + // register cache cleanup jobs + try { //if this is executed before the upgrade to the new backgroundjob system is completed it will throw an exception + \OCP\BackgroundJob::registerJob('OC_Cache_FileGlobalGC'); + } catch (Exception $e) { + } + OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); } - OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener'); } /** From a1d241783ee44529fac99ba25cb34b658f827876 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 23 Apr 2013 14:12:28 +0200 Subject: [PATCH 101/575] Updated buglist --- apps/files_encryption/lib/util.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 1b69ad320c..f7bb51a861 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -24,20 +24,16 @@ # Bugs # ---- # Sharing a file to a user without encryption set up will not provide them with access but won't notify the sharer -# Sharing files to other users currently broken (due to merge + ongoing implementation of support for lost password recovery) # Timeouts on first login due to encryption of very large files (fix in progress, as a result streaming is currently broken) # Sharing all files to admin for recovery purposes still in progress # Possibly public links are broken (not tested since last merge of master) -# getOwner() currently returns false in all circumstances, unsure what code is returning this... # encryptAll during login mangles paths: /files/files/ # encryptAll is accessing files via encryption proxy - perhaps proxies should be disabled? -# Sharekeys appear to not be deleted when their parent file is, and thus get orphaned # Missing features # ---------------- # Make sure user knows if large files weren't encrypted -# Support for resharing encrypted files # Test From c6bfc7315b380710d7c59f7bb23588822063dc6f Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 23 Apr 2013 17:36:35 +0200 Subject: [PATCH 102/575] Stream writing improved: working with dolphin + kate, gedit & nautilus give errors, suspect those issues are clientside .part file paths fixed in stream{} --- apps/files_encryption/lib/proxy.php | 5 ----- apps/files_encryption/lib/stream.php | 22 ++++++---------------- apps/files_encryption/lib/util.php | 2 +- 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index e058a528ad..0d20ff1af1 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -118,9 +118,6 @@ class Proxy extends \OC_FileProxy { // Decrypt the keyfile $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - -// trigger_error("\$shareKey = $shareKey"); -// trigger_error("\$plainKey = $plainKey"); } else { @@ -207,8 +204,6 @@ class Proxy extends \OC_FileProxy { $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); - -// trigger_error("PLAINDATA = ". var_export($plainData, 1)); } elseif ( Crypt::mode() == 'server' diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 6fb95934c3..9a37c3b08e 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -86,6 +86,9 @@ class Stream { // rawPath is relative to the data directory $this->rawPath = $this->userId . '/files/' . $this->relPath; + // Fix .part filenames + $this->rawPath = Keymanager::fixPartialFilePath( $this->rawPath ); + if ( dirname( $this->rawPath ) == 'streams' and isset( self::$sourceStreams[basename( $this->rawPath )] ) @@ -257,11 +260,6 @@ class Stream { $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); -// trigger_error( '$this->relPath = '.$this->relPath ); -// trigger_error( '$this->userId = '.$this->userId); -// trigger_error( '$this->encKeyfile = '.$this->encKeyfile ); -// trigger_error( '$this->plainKey1 = '.var_export($this->plainKey, 1)); - return true; } else { @@ -352,12 +350,6 @@ class Stream { // Save the sharekeys Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); -// trigger_error( "\$this->encKeyfiles['data'] = ".$this->encKeyfiles['data'] ); -// trigger_error( '$this->relPath = '.$this->relPath ); -// trigger_error( '$this->userId = '.$this->userId); -// trigger_error( '$this->encKeyfile = '.var_export($this->encKeyfiles, 1) ); -// trigger_error( '$this->plainKey2 = '.var_export($this->plainKey, 1)); - // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block if ( $this->writeCache ) { @@ -420,7 +412,7 @@ class Stream { // Clear $data ready for next round $data = ''; -// + } else { // Read the chunk from the start of $data @@ -428,8 +420,6 @@ class Stream { $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); - //trigger_error("\$encrypted = $encrypted"); - // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes @@ -515,9 +505,9 @@ class Stream { \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => true, 'size' => $this->size ), '' ); } - - return fclose( $this->handle ); + return fclose( $this->handle ); + } } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f7bb51a861..38b4219f6e 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -492,7 +492,7 @@ class Util { * @note Encryption is recursive */ public function encryptAll( $publicKey, $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { - + if ( $found = $this->findEncFiles( $dirPath ) ) { // Disable proxy to prevent file being encrypted twice From b7d8da87d0b094c5e55a0ac43995074fa3351618 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 23 Apr 2013 18:41:01 +0200 Subject: [PATCH 103/575] Development snapshot working on stream handling (large files) in Util->encryptAll() --- apps/files_encryption/lib/keymanager.php | 3 +- apps/files_encryption/lib/proxy.php | 1 - apps/files_encryption/lib/util.php | 50 ++++++++++++------------ 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 9885f5e550..0e1dafeed7 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -106,6 +106,7 @@ class Keymanager { */ public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user @@ -129,7 +130,7 @@ class Keymanager { $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; return $result; diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 0d20ff1af1..620f7cc8c3 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -142,7 +142,6 @@ class Proxy extends \OC_FileProxy { $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders - Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); // Set encrypted keyfile as common varname diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 38b4219f6e..f9198e0606 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -500,37 +500,39 @@ class Util { // Encrypt unencrypted files foreach ( $found['plain'] as $plainFile ) { - - // Open plain file handle - - - // Open enc file handle - - - // Read plain file in chunks //relative to data//file $relPath = $plainFile['path']; + //relative to /data $rawPath = $this->userId . '/files/' . $plainFile['path']; - - // Open handle with for binary reading - $plainHandle = $this->view->fopen( $rawPath, 'rb' ); - // Open handle with for binary writing - - $encHandle = fopen( 'crypt://' . $relPath . '.tmp', 'wb' ); - // Overwrite the existing file with the encrypted one - //$this->view->file_put_contents( $plainFile['path'], $encrypted['data'] ); - $size = stream_copy_to_stream( $plainHandle, $encHandle ); - - $this->view->rename($rawPath . '.tmp', $rawPath); - - // Fetch the key that has just been set/updated by the stream - //$encKey = Keymanager::getFileKey( $this->view, $this->userId, $relPath ); + // Open plain file handle for binary reading + $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); - // Save keyfile - //Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encKey ); + // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround + $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); + + // Move plain file to a temporary location + stream_copy_to_stream( $plainHandle1, $plainHandle2 ); + + // Close access to original file +// $this->view->fclose( $plainHandle1 ); // not implemented in view{} + + // Delete original plain file so we can rename enc file later + $this->view->unlink( $rawPath ); + + // Open enc file handle for binary writing, with same filename as original plain file + $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); + + // Save data from plain stream to new encrypted file via enc stream + // NOTE: Stream{} will be invoked for handling + // the encryption, and should handle all keys + // and their generation etc. automatically + $size = stream_copy_to_stream( $plainHandle2, $encHandle ); + + // Delete temporary plain copy of file + $this->view->unlink( $rawPath . '.plaintmp' ); // Add the file to the cache \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted'=>true, 'size' => $size ), '' ); From baa6fd639fb9e6b2a954975603428603fcd04a85 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 23 Apr 2013 19:08:52 +0200 Subject: [PATCH 104/575] improved file size handling --- apps/files_encryption/lib/proxy.php | 92 +++++++++++++++++++---------- 1 file changed, 60 insertions(+), 32 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index e058a528ad..cb7cb8a2cc 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -91,14 +91,14 @@ class Proxy extends \OC_FileProxy { return false; } - public function preFile_put_contents( $path, &$data ) { - - if ( self::shouldEncrypt( $path ) ) { - - // Stream put contents should have been converted to fopen + public function preFile_put_contents( $path, &$data ) { + + if ( self::shouldEncrypt( $path ) ) { + + // Stream put contents should have been converted to fopen if ( !is_resource( $data ) ) { - - $userId = \OCP\USER::getUser(); + + $userId = \OCP\USER::getUser(); $rootView = new \OC_FilesystemView( '/' ); $util = new Util( $rootView, $userId ); $session = new Session( $rootView ); @@ -135,8 +135,8 @@ class Proxy extends \OC_FileProxy { $sharingEnabled = \OCP\Share::isEnabled(); $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); - - // Fetch public keys for all users who will share the file + + // Fetch public keys for all users who will share the file $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); \OC_FileProxy::$enabled = false; @@ -165,7 +165,8 @@ class Proxy extends \OC_FileProxy { } } - + + return true; } /** @@ -174,7 +175,7 @@ class Proxy extends \OC_FileProxy { */ public function postFile_get_contents( $path, $data ) { - // FIXME: $path for shared files is just /uid/files/Shared/filepath + // FIXME: $path for shared files is just /uid/files/Shared/filepath $userId = \OCP\USER::getUser(); $view = new \OC_FilesystemView( '/' ); @@ -300,7 +301,6 @@ class Proxy extends \OC_FileProxy { $oldRelPath = implode('/', $oldSliced); $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $oldRelPath; - $newTrimmed = ltrim($newPath, '/'); $newSplit = explode('/', $newTrimmed); $newSliced = array_slice($newSplit, 2); @@ -331,14 +331,14 @@ class Proxy extends \OC_FileProxy { } public function postFopen( $path, &$result ){ - - if ( !$result ) { + + if ( !$result ) { return $result; } - - // Reformat path for use with OC_FSV + + // Reformat path for use with OC_FSV $path_split = explode( '/', $path ); $path_f = implode( '/', array_slice( $path_split, 3 ) ); @@ -394,8 +394,8 @@ class Proxy extends \OC_FileProxy { // fclose( $tmp ); } - - $result = fopen( 'crypt://'.$path_f, $meta['mode'] ); + + $result = fopen( 'crypt://'.$path_f, $meta['mode'] ); } @@ -407,8 +407,8 @@ class Proxy extends \OC_FileProxy { } public function postGetMimeType( $path, $mime ) { - - if ( Crypt::isCatfileContent( $path ) ) { + + if ( Crypt::isCatfileContent( $path ) ) { $mime = \OCP\Files::getMimeType( 'crypt://' . $path, 'w' ); @@ -418,9 +418,28 @@ class Proxy extends \OC_FileProxy { } + public function postGetFileInfo( $path, $data ) { + + // if path is a folder do nothing + if(is_array($data) && array_key_exists('size', $data)) { + // Disable encryption proxy to prevent recursive calls + \OC_FileProxy::$enabled = false; + + // get file size + $data['size'] = self::postFileSize($path, $data['size']); + + // Re-enable the proxy + \OC_FileProxy::$enabled = true; + + trigger_error('postGetFileInfo '.$path.' size: '.$data['size']); + } + + return $data; + } + public function postStat( $path, $data ) { - - if ( Crypt::isCatfileContent( $path ) ) { + + if ( Crypt::isCatfileContent( $path ) ) { $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); @@ -433,29 +452,38 @@ class Proxy extends \OC_FileProxy { public function postFileSize( $path, $size ) { + $view = new \OC_FilesystemView( '/' ); + + // if path is a folder do nothing + if($view->is_dir($path)) { + return $size; + } + // Reformat path for use with OC_FSV $path_split = explode('/', $path); $path_f = implode('/', array_slice($path_split, 3)); - $view = new \OC_FilesystemView( '/' ); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); - if ($util->isEncryptedPath($path)) { + + // FIXME: is there a better solution to check if file belongs to files path? + // only get file size if file is in 'files' path + if (count($path_split) >= 2 && $path_split[2] == 'files' && $util->isEncryptedPath($path)) { // Disable encryption proxy to prevent recursive calls \OC_FileProxy::$enabled = false; - // get file info - $cached = \OC\Files\Filesystem::getFileInfo($path_f, ''); - - // calculate last chunk nr - $lastChunckNr = floor($size / 8192); - // open stream $result = fopen('crypt://' . $path_f, "r"); if(is_resource($result)) { + // don't trust the given size, allways get the size from filesystem + $size = $view->filesize($path); + + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); + // calculate last chunk position $lastChunckPos = ($lastChunckNr * 8192); @@ -469,13 +497,13 @@ class Proxy extends \OC_FileProxy { $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); // set the size - $cached['size'] = $realSize; + $size = $realSize; } // enable proxy \OC_FileProxy::$enabled = true; - return $cached['size']; + return $size; } else { From 25ff32db6bec0992b0fac18b04345aa5e99f4ea1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 23 Apr 2013 22:20:31 +0200 Subject: [PATCH 105/575] Added post proxy for getFileInfo. This is needed for WebDAV and FileSize @samtuke and @schiesbn you guys know a better solution? --- lib/files/view.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/files/view.php b/lib/files/view.php index f607bb59aa..bd4812f8f8 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -724,6 +724,9 @@ class View { $data['permissions'] = $permissions; } } + + $data = \OC_FileProxy::runPostProxies('getFileInfo', $path, $data); + return $data; } From d209cac2a14dd7c7ad2ca9f7df048227c9e5cdc0 Mon Sep 17 00:00:00 2001 From: Thomas Mueller Date: Tue, 23 Apr 2013 23:46:56 +0200 Subject: [PATCH 106/575] lastRun is not a method --- lib/backgroundjob/job.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/backgroundjob/job.php b/lib/backgroundjob/job.php index ff647c7329..aab3b8e4a6 100644 --- a/lib/backgroundjob/job.php +++ b/lib/backgroundjob/job.php @@ -40,6 +40,6 @@ abstract class Job { } public function getLastRun() { - return $this->lastRun(); + return $this->lastRun; } } From 117412272e34f73b9e9f69e1261b0d353dc12393 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 24 Apr 2013 14:06:24 +0200 Subject: [PATCH 107/575] Update documentation for \OCP\BackgroundJob --- lib/public/backgroundjob.php | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/lib/public/backgroundjob.php b/lib/public/backgroundjob.php index 785a9408aa..9a58bd3965 100644 --- a/lib/public/backgroundjob.php +++ b/lib/public/backgroundjob.php @@ -29,21 +29,16 @@ namespace OCP; /** - * This class provides functions to manage backgroundjobs in ownCloud + * This class provides functions to register backgroundjobs in ownCloud * - * There are two kind of background jobs in ownCloud: regular tasks and - * queued tasks. + * To create a new backgroundjob create a new class that inharits from either \OC\BackgroundJob\Job, + * \OC\BackgroundJob\QueuedJob or \OC\BackgroundJob\TimedJob and register it using + * \OCP\BackgroundJob->registerJob($job, $argument), $argument will be passed to the run() function + * of the job when the job is executed. * - * Regular tasks have to be registered in appinfo.php and - * will run on a regular base. Fetching news could be a task that should run - * frequently. - * - * Queued tasks have to be registered each time you want to execute them. - * An example of the queued task would be the creation of the thumbnail. As - * soon as the user uploads a picture the gallery app registers the queued - * task "create thumbnail" and saves the path in the parameter instead of doing - * the work right away. This makes the app more responsive. As soon as the task - * is done it will be deleted from the list. + * A regular Job will be executed every time cron.php is run, a QueuedJob will only run once and a TimedJob + * will only run at a specific interval which is to be specified in the constructor of the job by calling + * $this->setInterval($interval) with $interval in seconds. */ class BackgroundJob { /** @@ -77,5 +72,4 @@ class BackgroundJob { $jobList = new \OC\BackgroundJob\JobList(); $jobList->add($job, $argument); } - } From b31dc10c3c4b73b08c926751effbade601c7cab8 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 24 Apr 2013 14:38:41 +0200 Subject: [PATCH 108/575] Add support for the old public backgroundjob api --- lib/backgroundjob/job.php | 4 + lib/backgroundjob/joblist.php | 14 ++ lib/public/backgroundjob.php | 180 ++++++++++++++++++++--- tests/lib/backgroundjob/dummyjoblist.php | 13 ++ 4 files changed, 188 insertions(+), 23 deletions(-) diff --git a/lib/backgroundjob/job.php b/lib/backgroundjob/job.php index aab3b8e4a6..49fbffbd68 100644 --- a/lib/backgroundjob/job.php +++ b/lib/backgroundjob/job.php @@ -42,4 +42,8 @@ abstract class Job { public function getLastRun() { return $this->lastRun; } + + public function getArgument() { + return $this->argument; + } } diff --git a/lib/backgroundjob/joblist.php b/lib/backgroundjob/joblist.php index 7471f84153..cc803dd9b5 100644 --- a/lib/backgroundjob/joblist.php +++ b/lib/backgroundjob/joblist.php @@ -110,6 +110,20 @@ class JobList { } } + /** + * @param int $id + * @return Job + */ + public function getById($id) { + $query = \OC_DB::prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` WHERE `id` = ?'); + $result = $query->execute(array($id)); + if ($row = $result->fetchRow()) { + return $this->buildJob($row); + } else { + return null; + } + } + /** * get the job object from a row in the db * diff --git a/lib/public/backgroundjob.php b/lib/public/backgroundjob.php index 9a58bd3965..aa6c59067e 100644 --- a/lib/public/backgroundjob.php +++ b/lib/public/backgroundjob.php @@ -1,24 +1,24 @@ . -* -*/ + * ownCloud + * + * @author Jakob Sack + * @copyright 2012 Jakob Sack owncloud@jakobsack.de + * + * 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 . + * + */ /** * Public interface of ownCloud forbackground jobs. @@ -28,6 +28,8 @@ // This means that they should be used by apps instead of the internal ownCloud classes namespace OCP; +use \OC\BackgroundJob\JobList; + /** * This class provides functions to register backgroundjobs in ownCloud * @@ -60,16 +62,148 @@ class BackgroundJob { * This method sets the execution type of the background jobs. Possible types * are "none", "ajax", "webcron", "cron" */ - public static function setExecutionType( $type ) { - return \OC_BackgroundJob::setExecutionType( $type ); + public static function setExecutionType($type) { + return \OC_BackgroundJob::setExecutionType($type); } /** * @param \OC\BackgroundJob\Job|string $job * @param mixed $argument */ - public static function registerJob($job, $argument = null){ - $jobList = new \OC\BackgroundJob\JobList(); + public static function registerJob($job, $argument = null) { + $jobList = new JobList(); $jobList->add($job, $argument); } + + /** + * @deprecated + * @brief creates a regular task + * @param string $klass class name + * @param string $method method name + * @return true + */ + public static function addRegularTask($klass, $method) { + self::registerJob('RegularLegacyJob', array($klass, $method)); + return true; + } + + /** + * @deprecated + * @brief gets all regular tasks + * @return associative array + * + * key is string "$klass-$method", value is array( $klass, $method ) + */ + static public function allRegularTasks() { + $jobList = new JobList(); + $allJobs = $jobList->getAll(); + $regularJobs = array(); + foreach ($allJobs as $job) { + if ($job instanceof RegularLegacyJob) { + $key = implode('-', $job->getArgument()); + $regularJobs[$key] = $job->getArgument(); + } + } + return $regularJobs; + } + + /** + * @deprecated + * @brief Gets one queued task + * @param int $id ID of the task + * @return associative array + */ + public static function findQueuedTask($id) { + $jobList = new JobList(); + return $jobList->getById($id); + } + + /** + * @deprecated + * @brief Gets all queued tasks + * @return array with associative arrays + */ + public static function allQueuedTasks() { + $jobList = new JobList(); + $allJobs = $jobList->getAll(); + $queuedJobs = array(); + foreach ($allJobs as $job) { + if ($job instanceof QueuedLegacyJob) { + $queuedJob = $job->getArgument(); + $queuedJob['id'] = $job->getId(); + $queuedJobs[] = $queuedJob; + } + } + return $queuedJobs; + } + + /** + * @deprecated + * @brief Gets all queued tasks of a specific app + * @param string $app app name + * @return array with associative arrays + */ + public static function queuedTaskWhereAppIs($app) { + $jobList = new JobList(); + $allJobs = $jobList->getAll(); + $queuedJobs = array(); + foreach ($allJobs as $job) { + if ($job instanceof QueuedLegacyJob) { + $queuedJob = $job->getArgument(); + $queuedJob['id'] = $job->getId(); + if ($queuedJob['app'] === $app) { + $queuedJobs[] = $queuedJob; + } + } + } + return $queuedJobs; + } + + /** + * @deprecated + * @brief queues a task + * @param string $app app name + * @param string $class class name + * @param string $method method name + * @param string $parameters all useful data as text + * @return int id of task + */ + public static function addQueuedTask($app, $class, $method, $parameters) { + self::registerJob('QueuedLegacyJob', array('app' => $app, 'klass' => $class, 'method' => $method, 'parameters' => $parameters)); + return true; + } + + /** + * @deprecated + * @brief deletes a queued task + * @param int $id id of task + * @return bool + * + * Deletes a report + */ + public static function deleteQueuedTask($id) { + $jobList = new JobList(); + $job = $jobList->getById($id); + if ($job) { + $jobList->remove($job); + } + } +} + +/** + * Wrappers to support old versions of the BackgroundJob api + */ +class RegularLegacyJob extends \OC\BackgroundJob\Job { + public function run($argument) { + call_user_func($argument); + } +} + +class QueuedLegacyJob extends \OC\BackgroundJob\QueuedJob { + public function run($argument) { + $class = $argument['klass']; + $method = $argument['method']; + $parameters = $argument['parameters']; + call_user_func(array($class, $method), $parameters); + } } diff --git a/tests/lib/backgroundjob/dummyjoblist.php b/tests/lib/backgroundjob/dummyjoblist.php index 833607c15c..d91d6b344b 100644 --- a/tests/lib/backgroundjob/dummyjoblist.php +++ b/tests/lib/backgroundjob/dummyjoblist.php @@ -98,6 +98,19 @@ class DummyJobList extends \OC\BackgroundJob\JobList { } } + /** + * @param int $id + * @return Job + */ + public function getById($id) { + foreach ($this->jobs as $job) { + if ($job->getId() === $id) { + return $job; + } + } + return null; + } + /** * get the id of the last ran job * From 170d09203f376fad452fc6959729a0f778b5934f Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 14:56:11 +0200 Subject: [PATCH 109/575] fixed file_proxy handling --- apps/files_encryption/lib/keymanager.php | 52 +++++++++++++++--------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 0e1dafeed7..ceefe8887a 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -51,12 +51,15 @@ class Keymanager { * @return string public key or false */ public static function getPublicKey( \OC_FilesystemView $view, $userId ) { - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - return $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); + $result = $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; + + return $result; } @@ -175,7 +178,8 @@ class Keymanager { $filePath_f = ltrim( $filename, '/' ); $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( $view->file_exists( $keyfilePath ) ) { @@ -188,7 +192,7 @@ class Keymanager { } - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; return $result; @@ -243,15 +247,17 @@ class Keymanager { $user = \OCP\User::getUser(); $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - return $view->file_put_contents( $user . '.private.key', $key ); - - \OC_FileProxy::$enabled = true; + $result = $view->file_put_contents( $user . '.private.key', $key ); + \OC_FileProxy::$enabled = $proxyStatus; + + return $result; } /** @@ -276,14 +282,17 @@ class Keymanager { public static function setPublicKey( $key ) { $view = new \OC_FilesystemView( '/public-keys' ); - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - return $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); + $result = $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; + + return $result; } @@ -310,11 +319,14 @@ class Keymanager { $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $result = $view->file_put_contents( $writePath, $shareKey ); - + + \OC_FileProxy::$enabled = $proxyStatus; + if ( is_int( $result ) && $result > 0 @@ -368,7 +380,8 @@ class Keymanager { * of the keyfile must be performed by client code */ public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user @@ -387,7 +400,7 @@ class Keymanager { } - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; return $result; @@ -416,7 +429,8 @@ class Keymanager { * @brief Delete a single user's shareKey for a single file */ public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { - + + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user @@ -448,7 +462,7 @@ class Keymanager { } - \OC_FileProxy::$enabled = false; + \OC_FileProxy::$enabled = $proxyStatus; return $result; @@ -472,7 +486,7 @@ class Keymanager { foreach ( $subdirs as $subdir ) { self::recursiveDelShareKeys($subdir, $userIds); } - return $true; + return true; } /** From fac288a4ad8f6db907c0a2ddfeb0b772fe616db5 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 15:20:06 +0200 Subject: [PATCH 110/575] added unencrypted file size to file cache improved file size calculation and speeds --- apps/files_encryption/lib/proxy.php | 113 ++++++++++----------------- apps/files_encryption/lib/stream.php | 14 ++-- db_structure.xml | 8 ++ lib/files/cache/cache.php | 11 +-- 4 files changed, 62 insertions(+), 84 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index b805ec648d..c07b9a8a7a 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -108,7 +108,8 @@ class Proxy extends \OC_FileProxy { $size = strlen( $data ); // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; // Check if there is an existing key we can reuse if ( $encKeyfile = Keymanager::getFileKey( $rootView, $userId, $filePath ) ) { @@ -135,10 +136,8 @@ class Proxy extends \OC_FileProxy { // Fetch public keys for all users who will share the file $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); - - \OC_FileProxy::$enabled = false; - - // Encrypt plain keyfile to multiple sharefiles + + // Encrypt plain keyfile to multiple sharefiles $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders @@ -157,7 +156,7 @@ class Proxy extends \OC_FileProxy { \OC\Files\Filesystem::putFileInfo( $path, array( 'encrypted'=>true, 'size' => $size ), '' ); // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; } } @@ -182,9 +181,10 @@ class Proxy extends \OC_FileProxy { // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; - - // If data is a catfile + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // If data is a catfile if ( Crypt::mode() == 'server' && Crypt::isCatfileContent( $data ) // TODO: Do we really need this check? Can't we assume it is properly encrypted? @@ -215,7 +215,7 @@ class Proxy extends \OC_FileProxy { } - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; if ( ! isset( $plainData ) ) { @@ -240,7 +240,8 @@ class Proxy extends \OC_FileProxy { $path = Keymanager::fixPartialFilePath( $path ); // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; $view = new \OC_FilesystemView( '/' ); @@ -265,7 +266,7 @@ class Proxy extends \OC_FileProxy { } - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; // If we don't return true then file delete will fail; better // to leave orphaned keyfiles than to disallow file deletion @@ -282,6 +283,7 @@ class Proxy extends \OC_FileProxy { { // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $view = new \OC_FilesystemView('/'); @@ -318,7 +320,7 @@ class Proxy extends \OC_FileProxy { // Rename keyfile so it isn't orphaned $result = $view->rename($oldKeyfilePath, $newKeyfilePath); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; return $result; @@ -337,9 +339,10 @@ class Proxy extends \OC_FileProxy { $path_f = implode( '/', array_slice( $path_split, 3 ) ); // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; - - $meta = stream_get_meta_data( $result ); + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $meta = stream_get_meta_data( $result ); $view = new \OC_FilesystemView( '' ); @@ -369,13 +372,13 @@ class Proxy extends \OC_FileProxy { // NOTE: this is the case for new files saved via WebDAV - if ( - $view->file_exists( $path ) - and $view->filesize( $path ) > 0 - ) { - $x = $view->file_get_contents( $path ); - - $tmp = tmpfile(); +// if ( +// $view->file_exists( $path ) +// and $view->filesize( $path ) > 0 +// ) { +// $x = $view->file_get_contents( $path ); +// +// $tmp = tmpfile(); // // Make a temporary copy of the original file // \OCP\Files::streamCopy( $result, $tmp ); @@ -387,14 +390,14 @@ class Proxy extends \OC_FileProxy { // // fclose( $tmp ); - } +// } $result = fopen( 'crypt://'.$path_f, $meta['mode'] ); } // Re-enable the proxy - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; return $result; @@ -417,15 +420,15 @@ class Proxy extends \OC_FileProxy { // if path is a folder do nothing if(is_array($data) && array_key_exists('size', $data)) { // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; + // get file size $data['size'] = self::postFileSize($path, $data['size']); // Re-enable the proxy - \OC_FileProxy::$enabled = true; - - trigger_error('postGetFileInfo '.$path.' size: '.$data['size']); + \OC_FileProxy::$enabled = $proxyStatus; } return $data; @@ -437,7 +440,7 @@ class Proxy extends \OC_FileProxy { $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); - $data['size'] = $cached['size']; + $data['size'] = $cached['unencrypted_size']; } @@ -453,56 +456,20 @@ class Proxy extends \OC_FileProxy { return $size; } + $path = Keymanager::fixPartialFilePath( $path ); + // Reformat path for use with OC_FSV $path_split = explode('/', $path); $path_f = implode('/', array_slice($path_split, 3)); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - - - // FIXME: is there a better solution to check if file belongs to files path? - // only get file size if file is in 'files' path - if (count($path_split) >= 2 && $path_split[2] == 'files' && $util->isEncryptedPath($path)) { - - // Disable encryption proxy to prevent recursive calls - \OC_FileProxy::$enabled = false; - - // open stream - $result = fopen('crypt://' . $path_f, "r"); - - if(is_resource($result)) { - // don't trust the given size, allways get the size from filesystem - $size = $view->filesize($path); - - // calculate last chunk nr - $lastChunckNr = floor($size / 8192); - - // calculate last chunk position - $lastChunckPos = ($lastChunckNr * 8192); - - // seek to end - fseek($result, $lastChunckPos); - - // get the content of the last chunck - $lastChunkContent = fgets($result); - - // calc the real file size with the size of the last chunk - $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); - - // set the size - $size = $realSize; - } - - // enable proxy - \OC_FileProxy::$enabled = true; - - return $size; + // get file info from database/cache + $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); + // if file is encrypted return real file size + if(is_array($fileInfo) && $fileInfo['encrypted'] == 1) { + return $fileInfo['unencrypted_size']; } else { - - return $size; - + return $fileInfo['size']; } } } diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 9a37c3b08e..7e42627f8c 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -64,6 +64,7 @@ class Stream { private $count; private $writeCache; public $size; + public $unencryptedSize; private $publicKey; private $keyfile; private $encKeyfile; @@ -105,6 +106,7 @@ class Stream { } else { // Disable fileproxies so we can get the file size and open the source file without recursive encryption + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( @@ -116,6 +118,7 @@ class Stream { // We're writing a new file so start write counter with 0 bytes $this->size = 0; + $this->unencryptedSize = 0; } else { @@ -129,7 +132,7 @@ class Stream { $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; if ( ! is_resource( $this->handle ) ) { @@ -301,7 +304,7 @@ class Stream { // automatically attempted when the file is written to disk - // we are handling that separately here and we don't want to // get into an infinite loop - \OC_FileProxy::$enabled = false; + //\OC_FileProxy::$enabled = false; // Get the length of the unencrypted data that we are handling $length = strlen( $data ); @@ -438,7 +441,8 @@ class Stream { } $this->size = max( $this->size, $pointer + $length ); - + $this->unencryptedSize += $length; + return $length; } @@ -501,9 +505,7 @@ class Stream { $this->meta['mode']!='r' and $this->meta['mode']!='rb' ) { - - \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => true, 'size' => $this->size ), '' ); - + \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => 1, 'size' => $this->size, 'unencrypted_size' => $this->unencryptedSize ), '' ); } return fclose( $this->handle ); diff --git a/db_structure.xml b/db_structure.xml index dce90697b1..366f51a82d 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -288,6 +288,14 @@ 4 + + unencrypted_size + integer + + true + 8 + + etag text diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 71b70abe3f..4e32ff2ba8 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -117,7 +117,7 @@ class Cache { $params = array($file); } $query = \OC_DB::prepare( - 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` FROM `*PREFIX*filecache` ' . $where); $result = $query->execute($params); $data = $result->fetchRow(); @@ -133,6 +133,7 @@ class Cache { $data['size'] = (int)$data['size']; $data['mtime'] = (int)$data['mtime']; $data['encrypted'] = (bool)$data['encrypted']; + $data['unencrypted_size'] = (int)$data['unencrypted_size']; $data['storage'] = $this->storageId; $data['mimetype'] = $this->getMimetype($data['mimetype']); $data['mimepart'] = $this->getMimetype($data['mimepart']); @@ -151,7 +152,7 @@ class Cache { $fileId = $this->getId($folder); if ($fileId > -1) { $query = \OC_DB::prepare( - 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` FROM `*PREFIX*filecache` WHERE parent = ? ORDER BY `name` ASC'); $result = $query->execute(array($fileId)); $files = $result->fetchAll(); @@ -234,7 +235,7 @@ class Cache { * @return array */ function buildParts(array $data) { - $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'encrypted', 'etag'); + $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'encrypted', 'unencrypted_size', 'etag'); $params = array(); $queryParts = array(); foreach ($data as $name => $value) { @@ -391,7 +392,7 @@ class Cache { */ public function search($pattern) { $query = \OC_DB::prepare(' - SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `storage` = ?' ); $result = $query->execute(array($pattern, $this->numericId)); @@ -417,7 +418,7 @@ class Cache { $where = '`mimepart` = ?'; } $query = \OC_DB::prepare(' - SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag` + SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `storage` = ?' ); $mimetype = $this->getMimetypeId($mimetype); From 11d0eef8ccbbfaf7dee6fa4a58b9778c16bec895 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 15:21:11 +0200 Subject: [PATCH 111/575] fixed webdav errors, now webdav up - and downloads are full working --- apps/files_encryption/hooks/hooks.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 88ec64b492..2ac74ad6c4 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -40,7 +40,8 @@ class Hooks { // Manually initialise Filesystem{} singleton with correct // fake root path, in order to avoid fatal webdav errors - \OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); + // NOTE: disabled because this give errors on webdav! + //\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); $view = new \OC_FilesystemView( '/' ); @@ -66,8 +67,10 @@ class Hooks { $session = new Session( $view ); $session->setPrivateKey( $privateKey, $params['uid'] ); - - $view1 = new \OC_FilesystemView( '/' . $params['uid'] ); + + //FIXME: disabled because it gets called each time a user do an operation on iPhone + //FIXME: we need a better place doing this and maybe only one time or by user + /*$view1 = new \OC_FilesystemView( '/' . $params['uid'] ); // Set legacy encryption key if it exists, to support // depreciated encryption system @@ -86,12 +89,12 @@ class Hooks { $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); - \OC_FileProxy::$enabled = false; + \OC_FileProxy::$enabled = false;*/ // Encrypt existing user files: // This serves to upgrade old versions of the encryption // app (see appinfo/spec.txt) - if ( + /*if ( $util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) ) { @@ -100,7 +103,7 @@ class Hooks { , \OC_Log::INFO ); - } + }*/ return true; From 328dea93c7a4a68bfb83c15f97af64275c953782 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 20:23:54 +0200 Subject: [PATCH 112/575] webdav fix for file chunking upload with big files should now work @samtuke and @schiesbn we need a solution for the cache files created by webdav --- apps/files_encryption/lib/proxy.php | 7 ++++++- apps/files_encryption/lib/util.php | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index c07b9a8a7a..66ea282312 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -337,7 +337,12 @@ class Proxy extends \OC_FileProxy { // Reformat path for use with OC_FSV $path_split = explode( '/', $path ); $path_f = implode( '/', array_slice( $path_split, 3 ) ); - + + // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted + if($path_split[2] == 'cache') { + return $result; + } + // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f9198e0606..2198963ce1 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -880,7 +880,7 @@ class Util { } else { - throw new \Exception( 'Supplied path could not be resolved "' . $path . '"' ); + return false; } From 672d177f10e44581ecc9f37844681afaa06c0272 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 22:43:15 +0200 Subject: [PATCH 113/575] added post rename proxy --- lib/files/view.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/files/view.php b/lib/files/view.php index bd4812f8f8..d0fc5910e6 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -362,6 +362,7 @@ class View { list(, $internalPath2) = Filesystem::resolvePath($absolutePath2 . $postFix2); if ($storage) { $result = $storage->rename($internalPath1, $internalPath2); + \OC_FileProxy::runPostProxies('rename', $absolutePath1, $absolutePath2); } else { $result = false; } From 8ee7959092d8363f35de49819b44b6b8fe19bc34 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 22:49:47 +0200 Subject: [PATCH 114/575] implement postRename @samtuke no need anymore for fixPartialFilePath this is now handled by rename share-keys are now handled properly webdav .part files are handled properly --- apps/files_encryption/lib/keymanager.php | 22 ------- apps/files_encryption/lib/proxy.php | 84 +++++++++++++++++++++--- apps/files_encryption/lib/stream.php | 10 +-- 3 files changed, 77 insertions(+), 39 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index ceefe8887a..cfc13ee132 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -139,28 +139,6 @@ class Keymanager { } - /** - * @brief Remove .path extension from a file path - * @param string $path Path that may identify a .part file - * @return string File path without .part extension - */ - public static function fixPartialFilePath( $path ) { - - if ( preg_match( '/\.part$/', $path ) ) { - - $newLength = strlen( $path ) - 5; - $fPath = substr( $path, 0, $newLength ); - - return $fPath; - - } else { - - return $path; - - } - - } - /** * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 66ea282312..7294c24366 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -237,8 +237,6 @@ class Proxy extends \OC_FileProxy { return true; } - $path = Keymanager::fixPartialFilePath( $path ); - // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -307,6 +305,15 @@ class Proxy extends \OC_FileProxy { if (!$view->is_dir($oldKeyfilePath)) { $oldKeyfilePath .= '.key'; $newKeyfilePath .= '.key'; + + // handle share-keys + $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$oldRelPath); + $matches = glob(preg_quote($localKeyPath).'*.shareKey'); + foreach ($matches as $src) { + $dst = str_replace($oldRelPath, $newRelPath, $src); + rename($src, $dst); + } + } else { // handle share-keys folders $oldShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $oldRelPath; @@ -314,9 +321,6 @@ class Proxy extends \OC_FileProxy { $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); } - //TODO add support for share-keys files - //... - // Rename keyfile so it isn't orphaned $result = $view->rename($oldKeyfilePath, $newKeyfilePath); @@ -326,6 +330,70 @@ class Proxy extends \OC_FileProxy { } + /** + * @brief When a file is renamed, rename its keyfile also + * @return bool Result of rename() + * @note This is pre rather than post because using post didn't work + */ + public function postRename( $oldPath, $newPath ) + { + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $view = new \OC_FilesystemView('/'); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + + // Reformat path for use with OC_FSV + $newPathSplit = explode( '/', $newPath ); + $newPathRelative = implode( '/', array_slice( $newPathSplit, 3 ) ); + $newPathRelativeToUser = implode( '/', array_slice( $newPathSplit, 2 ) ); + + // get file info from database/cache + //$newFileInfo = \OC\Files\Filesystem::getFileInfo($newPathRelative); + + if ($util->isEncryptedPath($newPath)) { + $cached = $view->getFileInfo($newPath); + $cached['encrypted'] = 1; + + // get the size from filesystem + $size = $view->filesize($newPath); + + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); + + // open stream + $result = fopen('crypt://' . $newPathRelative, "r"); + + if(is_resource($result)) { + // calculate last chunk position + $lastChunckPos = ($lastChunckNr * 8192); + + // seek to end + fseek($result, $lastChunckPos); + + // get the content of the last chunck + $lastChunkContent = fread($result, 8192); + + // calc the real file size with the size of the last chunk + $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + + // set the size + $cached['unencrypted_size'] = $realSize; + } + + $view->putFileInfo( $newPath, $cached ); + + } + + \OC_FileProxy::$enabled = $proxyStatus; + + return true; + + } + public function postFopen( $path, &$result ){ if ( !$result ) { @@ -424,11 +492,11 @@ class Proxy extends \OC_FileProxy { // if path is a folder do nothing if(is_array($data) && array_key_exists('size', $data)) { + // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - // get file size $data['size'] = self::postFileSize($path, $data['size']); @@ -461,8 +529,6 @@ class Proxy extends \OC_FileProxy { return $size; } - $path = Keymanager::fixPartialFilePath( $path ); - // Reformat path for use with OC_FSV $path_split = explode('/', $path); $path_f = implode('/', array_slice($path_split, 3)); @@ -474,7 +540,7 @@ class Proxy extends \OC_FileProxy { if(is_array($fileInfo) && $fileInfo['encrypted'] == 1) { return $fileInfo['unencrypted_size']; } else { - return $fileInfo['size']; + return $size; } } } diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 7e42627f8c..411bcdac92 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -87,10 +87,7 @@ class Stream { // rawPath is relative to the data directory $this->rawPath = $this->userId . '/files/' . $this->relPath; - // Fix .part filenames - $this->rawPath = Keymanager::fixPartialFilePath( $this->rawPath ); - - if ( + if ( dirname( $this->rawPath ) == 'streams' and isset( self::$sourceStreams[basename( $this->rawPath )] ) ) { @@ -244,10 +241,7 @@ class Stream { } - // Avoid problems with .part file extensions - $this->relPath = Keymanager::fixPartialFilePath( $this->relPath ); - - // Fetch and decrypt keyfile + // Fetch and decrypt keyfile // Fetch existing keyfile $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); From d017bbb065245212e8aa4091f4bee0a4e8ea9055 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 25 Apr 2013 23:24:07 +0200 Subject: [PATCH 115/575] fix share for renamed or moved files --- apps/files_encryption/lib/proxy.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7294c24366..73f72a9e23 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -343,13 +343,13 @@ class Proxy extends \OC_FileProxy { \OC_FileProxy::$enabled = false; $view = new \OC_FilesystemView('/'); + $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util( $view, $userId ); // Reformat path for use with OC_FSV $newPathSplit = explode( '/', $newPath ); $newPathRelative = implode( '/', array_slice( $newPathSplit, 3 ) ); - $newPathRelativeToUser = implode( '/', array_slice( $newPathSplit, 2 ) ); // get file info from database/cache //$newFileInfo = \OC\Files\Filesystem::getFileInfo($newPathRelative); @@ -386,8 +386,19 @@ class Proxy extends \OC_FileProxy { $view->putFileInfo( $newPath, $cached ); + // get sharing app state + $sharingEnabled = \OCP\Share::isEnabled(); + + // get users + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative); + + // update sharing-keys + $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); } + + + \OC_FileProxy::$enabled = $proxyStatus; return true; From 813641e6e86601cc73da0f00d8430da62e872180 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 00:05:20 +0200 Subject: [PATCH 116/575] improved file size created new method fixFileSize in Util so it can be used with files_trashbin --- apps/files_encryption/lib/proxy.php | 40 +---------------- apps/files_encryption/lib/util.php | 70 ++++++++++++++++++++++++++--- 2 files changed, 66 insertions(+), 44 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 73f72a9e23..24821d8a05 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -351,41 +351,7 @@ class Proxy extends \OC_FileProxy { $newPathSplit = explode( '/', $newPath ); $newPathRelative = implode( '/', array_slice( $newPathSplit, 3 ) ); - // get file info from database/cache - //$newFileInfo = \OC\Files\Filesystem::getFileInfo($newPathRelative); - - if ($util->isEncryptedPath($newPath)) { - $cached = $view->getFileInfo($newPath); - $cached['encrypted'] = 1; - - // get the size from filesystem - $size = $view->filesize($newPath); - - // calculate last chunk nr - $lastChunckNr = floor($size / 8192); - - // open stream - $result = fopen('crypt://' . $newPathRelative, "r"); - - if(is_resource($result)) { - // calculate last chunk position - $lastChunckPos = ($lastChunckNr * 8192); - - // seek to end - fseek($result, $lastChunckPos); - - // get the content of the last chunck - $lastChunkContent = fread($result, 8192); - - // calc the real file size with the size of the last chunk - $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); - - // set the size - $cached['unencrypted_size'] = $realSize; - } - - $view->putFileInfo( $newPath, $cached ); - + if($util->fixFileSize($newPath)) { // get sharing app state $sharingEnabled = \OCP\Share::isEnabled(); @@ -396,13 +362,9 @@ class Proxy extends \OC_FileProxy { $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); } - - - \OC_FileProxy::$enabled = $proxyStatus; return true; - } public function postFopen( $path, &$result ){ diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2198963ce1..9d9e420e4d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -421,10 +421,10 @@ class Util { return $text; } - /** - * @brief Check if a given path identifies an encrypted file - * @return true / false - */ + /** + * @brief Check if a given path identifies an encrypted file + * @return true / false + */ public function isEncryptedPath( $path ) { // Disable encryption proxy so data retreived is in its @@ -438,7 +438,67 @@ class Util { return Crypt::isCatfileContent( $data ); } - + + /** + * @brief fix the file size of the encrypted file + * + * @param $path absolute path + * @return true / false if file is encrypted + */ + + public function fixFileSize($path) { + $result = false; + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + if ($this->isEncryptedPath($path)) { + + // Reformat path for use with OC_FSV + $pathSplit = explode( '/', $path ); + $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + + $cached = $this->view->getFileInfo($path); + $cached['encrypted'] = 1; + + // get the size from filesystem + $size = $this->view->filesize($path); + + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); + + // open stream + $result = fopen('crypt://' . $pathRelative, "r"); + + if(is_resource($result)) { + // calculate last chunk position + $lastChunckPos = ($lastChunckNr * 8192); + + // seek to end + fseek($result, $lastChunckPos); + + // get the content of the last chunk + $lastChunkContent = fread($result, 8192); + + // calc the real file size with the size of the last chunk + $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + + // set the size + $cached['unencrypted_size'] = $realSize; + } + + // put file info + $this->view->putFileInfo( $path, $cached ); + + $result = true; + } + + \OC_FileProxy::$enabled = $proxyStatus; + + return $result; + } + /** * @brief Format a path to be relative to the /user/files/ directory */ From d40ffc5aac2e54da6b94e62094bbd323db818e82 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 20:18:05 +0200 Subject: [PATCH 117/575] added filesystem post rename hook --- apps/files_encryption/appinfo/app.php | 3 ++ apps/files_encryption/hooks/hooks.php | 66 ++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index c2de9d0b44..9ae6c8331f 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -23,6 +23,9 @@ OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', ' // Webdav-related hooks OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); +// filesystem hooks +OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); + stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); $view = new OC_FilesystemView( '/' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2ac74ad6c4..82aae2272a 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -310,5 +310,69 @@ class Hooks { // we may not need to implement it } - + + + /** + * @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing + * @param array with oldpath and newpath + * + * This function is connected to the rename signal of OC_Filesystem and adjust the name and location + * of the stored versions along the actual file + */ + public static function postRename($params) { + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $view = new \OC_FilesystemView('/'); + $session = new Session($view); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + + // Format paths to be relative to user files dir + $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']; + $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']; + + // add key ext if this is not an folder + if (!$view->is_dir($oldKeyfilePath)) { + $oldKeyfilePath .= '.key'; + $newKeyfilePath .= '.key'; + + // handle share-keys + $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$params['oldpath']); + $matches = glob(preg_quote($localKeyPath).'*.shareKey'); + foreach ($matches as $src) { + $dst = str_replace($params['oldpath'], $params['newpath'], $src); + rename($src, $dst); + } + + } else { + // handle share-keys folders + $oldShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']; + $newShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']; + $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); + } + + // Rename keyfile so it isn't orphaned + if($view->file_exists($oldKeyfilePath)) { + $view->rename($oldKeyfilePath, $newKeyfilePath); + } + + // build the path to the file + $newPath = '/' . $userId . '/files' .$params['newpath']; + $newPathRelative = $params['newpath']; + + if($util->fixFileSize($newPath)) { + // get sharing app state + $sharingEnabled = \OCP\Share::isEnabled(); + + // get users + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative); + + // update sharing-keys + $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); + } + + \OC_FileProxy::$enabled = $proxyStatus; + } } From 05523b76c0c17a74db6604f2689a9219d318153d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 20:18:57 +0200 Subject: [PATCH 118/575] fix reusing keys fix webdav part files --- apps/files_encryption/lib/keymanager.php | 76 ++++++++++++++++++++---- 1 file changed, 66 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index cfc13ee132..9f3cb8120c 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -129,16 +129,51 @@ class Keymanager { mkdir($keyfileFolderName, 0750, true); } } - - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - + + // try reusing key file if part file + if(self::isPartialFilePath($targetPath)) { + $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile ); + } else { + $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + } \OC_FileProxy::$enabled = $proxyStatus; return $result; } - + + /** + * @brief Remove .path extension from a file path + * @param string $path Path that may identify a .part file + * @return string File path without .part extension + * @note this is needed for reusing keys + */ + public static function fixPartialFilePath($path) + { + if (preg_match('/\.part$/', $path)) { + + $newLength = strlen($path) - 5; + $fPath = substr($path, 0, $newLength); + + return $fPath; + } else { + + return $path; + + } + + } + + public static function isPartialFilePath($path) + { + if (preg_match('/\.part$/', $path)) { + return true; + } else { + return false; + } + + } /** * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view @@ -150,12 +185,20 @@ class Keymanager { * of the keyfile must be performed by client code */ public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - + + // try reusing key file if part file + if(self::isPartialFilePath($filePath)) { + $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); + if($result) { + return $result; + } + } + $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); $filePath_f = ltrim( $filename, '/' ); - - $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + + $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -287,7 +330,7 @@ class Keymanager { */ public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - //here we need the currently logged in user, while userId can be a different user + //here we need the currently logged in user, while userId can be a different user $util = new Util( $view, \OCP\User::getUser() ); list($owner, $filename) = $util->getUidAndFilename($path); @@ -295,8 +338,13 @@ class Keymanager { $basePath = '/' . $owner . '/files_encryption/share-keys'; $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); - - $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; + + // try reusing key file if part file + if(self::isPartialFilePath($shareKeyPath)) { + $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; + } else { + $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; + } $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -359,6 +407,14 @@ class Keymanager { */ public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + // try reusing key file if part file + if(self::isPartialFilePath($filePath)) { + $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); + if($result) { + return $result; + } + } + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; From ba080e0d2e43a24b891aa7d8bb8bcf54ccd5faa4 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 20:21:46 +0200 Subject: [PATCH 119/575] removed preRename and moved postRename to hooks.php added postWrite and postTouch to fix file size and sharing keys --- apps/files_encryption/lib/proxy.php | 158 ++++++++++------------------ 1 file changed, 58 insertions(+), 100 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 24821d8a05..439aa0da25 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -273,96 +273,20 @@ class Proxy extends \OC_FileProxy { } /** - * @brief When a file is renamed, rename its keyfile also - * @return bool Result of rename() - * @note This is pre rather than post because using post didn't work - */ - public function preRename( $oldPath, $newPath ) - { - - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $view = new \OC_FilesystemView('/'); - - $userId = \OCP\USER::getUser(); - - // Format paths to be relative to user files dir - $oldTrimmed = ltrim($oldPath, '/'); - $oldSplit = explode('/', $oldTrimmed); - $oldSliced = array_slice($oldSplit, 2); - $oldRelPath = implode('/', $oldSliced); - $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $oldRelPath; - - $newTrimmed = ltrim($newPath, '/'); - $newSplit = explode('/', $newTrimmed); - $newSliced = array_slice($newSplit, 2); - $newRelPath = implode('/', $newSliced); - $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $newRelPath; - - // add key ext if this is not an folder - if (!$view->is_dir($oldKeyfilePath)) { - $oldKeyfilePath .= '.key'; - $newKeyfilePath .= '.key'; - - // handle share-keys - $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$oldRelPath); - $matches = glob(preg_quote($localKeyPath).'*.shareKey'); - foreach ($matches as $src) { - $dst = str_replace($oldRelPath, $newRelPath, $src); - rename($src, $dst); - } - - } else { - // handle share-keys folders - $oldShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $oldRelPath; - $newShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $newRelPath; - $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); - } - - // Rename keyfile so it isn't orphaned - $result = $view->rename($oldKeyfilePath, $newKeyfilePath); - - \OC_FileProxy::$enabled = $proxyStatus; - - return $result; - - } - - /** * @brief When a file is renamed, rename its keyfile also * @return bool Result of rename() * @note This is pre rather than post because using post didn't work */ - public function postRename( $oldPath, $newPath ) + public function postWrite( $path ) { + $this->handleFile($path); - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + return true; + } - $view = new \OC_FilesystemView('/'); - $session = new Session($view); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - - // Reformat path for use with OC_FSV - $newPathSplit = explode( '/', $newPath ); - $newPathRelative = implode( '/', array_slice( $newPathSplit, 3 ) ); - - if($util->fixFileSize($newPath)) { - // get sharing app state - $sharingEnabled = \OCP\Share::isEnabled(); - - // get users - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative); - - // update sharing-keys - $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); - } - - \OC_FileProxy::$enabled = $proxyStatus; + public function postTouch( $path ) + { + $this->handleFile($path); return true; } @@ -480,25 +404,28 @@ class Proxy extends \OC_FileProxy { return $data; } - public function postStat( $path, $data ) { + public function postStat($path, $data) + { + // check if file is encrypted + if (Crypt::isCatfileContent($path)) { - if ( Crypt::isCatfileContent( $path ) ) { - - $cached = \OC\Files\Filesystem::getFileInfo( $path, '' ); - - $data['size'] = $cached['unencrypted_size']; - - } - - return $data; - } + // get file info from cache + $cached = \OC\Files\Filesystem::getFileInfo($path, ''); - public function postFileSize( $path, $size ) { + // set the real file size + $data['size'] = $cached['unencrypted_size']; + } - $view = new \OC_FilesystemView( '/' ); + return $data; + } + + public function postFileSize($path, $size) + { + + $view = new \OC_FilesystemView('/'); // if path is a folder do nothing - if($view->is_dir($path)) { + if ($view->is_dir($path)) { return $size; } @@ -510,10 +437,41 @@ class Proxy extends \OC_FileProxy { $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); // if file is encrypted return real file size - if(is_array($fileInfo) && $fileInfo['encrypted'] == 1) { + if (is_array($fileInfo) && $fileInfo['encrypted'] == 1) { return $fileInfo['unencrypted_size']; } else { return $size; } - } -} + } + + public function handleFile($path) { + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $view = new \OC_FilesystemView('/'); + $session = new Session($view); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + + // Reformat path for use with OC_FSV + $path_split = explode( '/', $path ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); + + // only if file is on 'files' folder fix file size and sharing + if($path_split[2] == 'files' && $util->fixFileSize($path)) { + + // get sharing app state + $sharingEnabled = \OCP\Share::isEnabled(); + + // get users + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); + + // update sharing-keys + $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); + } + + \OC_FileProxy::$enabled = $proxyStatus; + } + } From 770aebfb9ed7703010ee2bceca73dee35f660c00 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 20:22:38 +0200 Subject: [PATCH 120/575] check if file exists before fixing file size --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9d9e420e4d..a9996999a3 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -453,7 +453,7 @@ class Util { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ($this->isEncryptedPath($path)) { + if ($this->view->file_exists($path) && $this->isEncryptedPath($path)) { // Reformat path for use with OC_FSV $pathSplit = explode( '/', $path ); From d32bf993fa0d0e1dae6c9e1541bfa9a599ec9b52 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 20:23:30 +0200 Subject: [PATCH 121/575] removed previous added post rename FileProxy hook --- lib/files/view.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/files/view.php b/lib/files/view.php index d0fc5910e6..bd4812f8f8 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -362,7 +362,6 @@ class View { list(, $internalPath2) = Filesystem::resolvePath($absolutePath2 . $postFix2); if ($storage) { $result = $storage->rename($internalPath1, $internalPath2); - \OC_FileProxy::runPostProxies('rename', $absolutePath1, $absolutePath2); } else { $result = false; } From 7f1f0464a882dc8df80cc2da79079dad0933ecdd Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 23:02:42 +0200 Subject: [PATCH 122/575] added self healing if file get remove from file cache --- apps/files_encryption/lib/proxy.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 439aa0da25..23290b5b20 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -438,10 +438,24 @@ class Proxy extends \OC_FileProxy { // if file is encrypted return real file size if (is_array($fileInfo) && $fileInfo['encrypted'] == 1) { - return $fileInfo['unencrypted_size']; + $size = $fileInfo['unencrypted_size']; } else { - return $size; + // self healing if file was removed from file cache + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + $fixSize = $util->getFileSize($path); + if($fixSize > 0) { + $size = $fixSize; + + $fileInfo['encrypted'] = 1; + $fileInfo['unencrypted_size'] = $size; + + // put file info + $view->putFileInfo( $path, $fileInfo ); + } } + + return $size; } public function handleFile($path) { From f9760f65212bd6464685ec1dd60a73825b4a3f66 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 27 Apr 2013 23:34:25 +0200 Subject: [PATCH 123/575] improved file size --- apps/files_encryption/lib/util.php | 87 +++++++++++++++++++----------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index a9996999a3..fe040d8877 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -439,6 +439,58 @@ class Util { } + /** + * @brief get the file size of the unencrypted file + * + * @param $path absolute path + * @return true / false if file is encrypted + */ + + public function getFileSize($path) { + $result = 0; + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // Reformat path for use with OC_FSV + $pathSplit = explode( '/', $path ); + $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + + if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { + + // get the size from filesystem + $fullPath = $this->view->getLocalFile($path); + $size = filesize($fullPath); + + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); + + // open stream + $stream = fopen('crypt://' . $pathRelative, "r"); + + if(is_resource($stream)) { + // calculate last chunk position + $lastChunckPos = ($lastChunckNr * 8192); + + // seek to end + fseek($stream, $lastChunckPos); + + // get the content of the last chunk + $lastChunkContent = fread($stream, 8192); + + // calc the real file size with the size of the last chunk + $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + + // store file size + $result = $realSize; + } + } + + \OC_FileProxy::$enabled = $proxyStatus; + + return $result; + } /** * @brief fix the file size of the encrypted file * @@ -453,40 +505,13 @@ class Util { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ($this->view->file_exists($path) && $this->isEncryptedPath($path)) { - - // Reformat path for use with OC_FSV - $pathSplit = explode( '/', $path ); - $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); - + $realSize = $this->getFileSize($path); + if($realSize > 0) { $cached = $this->view->getFileInfo($path); $cached['encrypted'] = 1; - // get the size from filesystem - $size = $this->view->filesize($path); - - // calculate last chunk nr - $lastChunckNr = floor($size / 8192); - - // open stream - $result = fopen('crypt://' . $pathRelative, "r"); - - if(is_resource($result)) { - // calculate last chunk position - $lastChunckPos = ($lastChunckNr * 8192); - - // seek to end - fseek($result, $lastChunckPos); - - // get the content of the last chunk - $lastChunkContent = fread($result, 8192); - - // calc the real file size with the size of the last chunk - $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); - - // set the size - $cached['unencrypted_size'] = $realSize; - } + // set the size + $cached['unencrypted_size'] = $realSize; // put file info $this->view->putFileInfo( $path, $cached ); From 4a63faf64b14b21af7cb73f43ca3fcf841aff804 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 29 Apr 2013 01:43:59 +0200 Subject: [PATCH 124/575] speed improvement --- apps/files_encryption/lib/stream.php | 65 +++++++++++++++++----------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 411bcdac92..a51f2c56d9 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -298,7 +298,8 @@ class Stream { // automatically attempted when the file is written to disk - // we are handling that separately here and we don't want to // get into an infinite loop - //\OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; // Get the length of the unencrypted data that we are handling $length = strlen( $data ); @@ -322,30 +323,7 @@ class Stream { } - // Fetch user's public key - $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); - - // Check if OC sharing api is enabled - $sharingEnabled = \OCP\Share::isEnabled(); - - $util = new Util( $this->rootView, $this->userId ); - - // Get all users sharing the file includes current user - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId); - // Fetch public keys for all sharing users - $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); - - // Encrypt enc key for all sharing users - $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); - - $view = new \OC_FilesystemView( '/' ); - - // Save the new encrypted file key - Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); - - // Save the sharekeys - Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block @@ -437,6 +415,8 @@ class Stream { $this->size = max( $this->size, $pointer + $length ); $this->unencryptedSize += $length; + \OC_FileProxy::$enabled = $proxyStatus; + return $length; } @@ -492,13 +472,46 @@ class Stream { } public function stream_close() { - - $this->flush(); + + $this->flush(); if ( $this->meta['mode']!='r' and $this->meta['mode']!='rb' ) { + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // Fetch user's public key + $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); + + // Check if OC sharing api is enabled + $sharingEnabled = \OCP\Share::isEnabled(); + + $util = new Util( $this->rootView, $this->userId ); + + // Get all users sharing the file includes current user + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId); + + // Fetch public keys for all sharing users + $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + + // Encrypt enc key for all sharing users + $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); + + $view = new \OC_FilesystemView( '/' ); + + // Save the new encrypted file key + Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); + + // Save the sharekeys + Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => 1, 'size' => $this->size, 'unencrypted_size' => $this->unencryptedSize ), '' ); } From 4ecd62e58d6caf8da3b6e1a14114fec49784a622 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 29 Apr 2013 09:12:43 +0200 Subject: [PATCH 125/575] improvements for test testSymmetricStreamEncryptShortFileContent this runs currently into an infinite loop --- apps/files_encryption/test/crypt.php | 66 ++++++++++++++++------------ 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/test/crypt.php index b02e63b2ff..9c5e43e242 100755 --- a/apps/files_encryption/test/crypt.php +++ b/apps/files_encryption/test/crypt.php @@ -52,14 +52,19 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; - - \OC_Filesystem::init( '/' ); - \OC_Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => \OC_User::getHome($this->userId)), '/' ); - + + $userHome = \OC_User::getHome($this->userId); + if(!file_exists($userHome)) { + mkdir($userHome, 0777, true); + } + $dataDir = str_replace('/'.$this->userId, '', $userHome); + + \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $dataDir), '/' ); + \OC\Files\Filesystem::init($this->userId, '/'); } function tearDown() { - + } function testGenerateKey() { @@ -222,35 +227,38 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { function testSymmetricStreamEncryptShortFileContent() { - $filename = 'tmp-'.time(); - + $filename = 'tmp-'.time().'.test'; + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); - - - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); - + + // Get file contents without using any wrapper to get it's actual contents on disk + $absolutePath = \OC\Files\Filesystem::getLocalFile($this->userId . '/files/' . $filename); + $retreivedCryptedFile = file_get_contents($absolutePath); + // Check that the file was encrypted before being written to disk $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); - - // Get private key - $encryptedPrivateKey = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); - - $decryptedPrivateKey = Encryption\Crypt::symmetricDecryptFileContent( $encryptedPrivateKey, $this->pass ); - - - // Get keyfile - $encryptedKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); - - $decryptedKeyfile = Encryption\Crypt::keyDecrypt( $encryptedKeyfile, $decryptedPrivateKey ); - - - // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricBlockDecryptFileContent( $retreivedCryptedFile, $decryptedKeyfile ); - + + // Get the encrypted keyfile + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + + // Attempt to fetch the user's shareKey + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + + // get session + $session = new Encryption\Session( $this->view ); + + // get private key + $privateKey = $session->getPrivateKey( $this->userId ); + + // Decrypt keyfile with shareKey + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + + // Manually decrypt + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); + // Check that decrypted data matches $this->assertEquals( $this->dataShort, $manualDecrypt ); @@ -329,7 +337,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->view->unlink( $filename ); - Encryption\Keymanager::deleteFileKey( $filename ); + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } From 215264706dcdaf50f47cb208da6b7fae6307e512 Mon Sep 17 00:00:00 2001 From: Paul Brown Date: Mon, 29 Apr 2013 15:44:11 -0500 Subject: [PATCH 126/575] Improve IE Compatibility Added meta tags from HTML5 Boiler Plate to improve compatibility with IE7+. This fixes the issues with rendering. --- core/templates/layout.user.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 4dc4a2c759..734def5f20 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -8,7 +8,8 @@ <?php p(!empty($_['application'])?$_['application'].' | ':'') ?>ownCloud <?php p(trim($_['user_displayname']) != '' ?' ('.$_['user_displayname'].') ':'') ?> - + + From c52fe1253728dde2b85521df3fce4c461741bcc3 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 29 Apr 2013 23:37:08 +0200 Subject: [PATCH 127/575] fixed missing parameter --- apps/files_encryption/hooks/hooks.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 82aae2272a..25c2d091c4 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -119,8 +119,10 @@ class Hooks { // is in use (client-side encryption does not have access to // the necessary keys) if ( Crypt::mode() == 'server' ) { - - $session = new Session(); + + $view = new \OC_FilesystemView( '/' ); + + $session = new Session($view); // Get existing decrypted private key $privateKey = $session->getPrivateKey(); From d22795d68b4937bc6dba6d742b0f7b503cb32228 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 29 Apr 2013 23:41:49 +0200 Subject: [PATCH 128/575] fixed test for crypt and keymanager disabled encryption file proxy in test/lib/cache/file.php --- apps/files_encryption/test/crypt.php | 87 +++++++++++++---------- apps/files_encryption/test/keymanager.php | 37 ++++++---- tests/lib/cache/file.php | 7 +- 3 files changed, 78 insertions(+), 53 deletions(-) diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/test/crypt.php index 9c5e43e242..7f9572f426 100755 --- a/apps/files_encryption/test/crypt.php +++ b/apps/files_encryption/test/crypt.php @@ -34,7 +34,9 @@ use OCA\Encryption; class Test_Crypt extends \PHPUnit_Framework_TestCase { function setUp() { - + // reset backend + \OC_User::useBackend('database'); + // set content for encrypting / decrypting in tests $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); $this->dataShort = 'hats'; @@ -54,13 +56,10 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->pass = 'admin'; $userHome = \OC_User::getHome($this->userId); - if(!file_exists($userHome)) { - mkdir($userHome, 0777, true); - } - $dataDir = str_replace('/'.$this->userId, '', $userHome); + $this->dataDir = str_replace('/'.$this->userId, '', $userHome); - \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $dataDir), '/' ); \OC\Files\Filesystem::init($this->userId, '/'); + \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); } function tearDown() { @@ -225,7 +224,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // // } - function testSymmetricStreamEncryptShortFileContent() { + function testSymmetricStreamEncryptShortFileContent() { $filename = 'tmp-'.time().'.test'; @@ -234,9 +233,15 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + // Get file contents without using any wrapper to get it's actual contents on disk - $absolutePath = \OC\Files\Filesystem::getLocalFile($this->userId . '/files/' . $filename); - $retreivedCryptedFile = file_get_contents($absolutePath); + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); @@ -261,7 +266,11 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Check that decrypted data matches $this->assertEquals( $this->dataShort, $manualDecrypt ); - + + // Teardown + $this->view->unlink( $filename ); + + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } /** @@ -273,7 +282,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { function testSymmetricStreamEncryptLongFileContent() { // Generate a a random filename - $filename = 'tmp-'.time(); + $filename = 'tmp-'.time().'.test'; // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong.$this->dataLong ); @@ -281,12 +290,18 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); - -// echo "\n\n\$retreivedCryptedFile = $retreivedCryptedFile\n\n"; - - // Check that the file was encrypted before being written to disk + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + + + // Check that the file was encrypted before being written to disk $this->assertNotEquals( $this->dataLong.$this->dataLong, $retreivedCryptedFile ); // Manuallly split saved file into separate IVs and encrypted chunks @@ -298,39 +313,35 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $e = array( $r[0].$r[1], $r[2].$r[3], $r[4].$r[5], $r[6].$r[7], $r[8].$r[9], $r[10].$r[11], $r[12].$r[13] );//.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); - - - // Get private key - $encryptedPrivateKey = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); - - $decryptedPrivateKey = Encryption\Crypt::symmetricDecryptFileContent( $encryptedPrivateKey, $this->pass ); - - - // Get keyfile - $encryptedKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); - - $decryptedKeyfile = Encryption\Crypt::keyDecrypt( $encryptedKeyfile, $decryptedPrivateKey ); - - + + // Get the encrypted keyfile + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + + // Attempt to fetch the user's shareKey + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + + // get session + $session = new Encryption\Session( $this->view ); + + // get private key + $privateKey = $session->getPrivateKey( $this->userId ); + + // Decrypt keyfile with shareKey + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + // Set var for reassembling decrypted content $decrypt = ''; // Manually decrypt chunk foreach ($e as $e) { - -// echo "\n\$e = $e"; - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $e, $decryptedKeyfile ); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $e, $plainKeyfile ); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; -// echo "\n\$chunkDecrypt = $chunkDecrypt"; - } -// echo "\n\$decrypt = $decrypt"; - $this->assertEquals( $this->dataLong.$this->dataLong, $decrypt ); // Teardown diff --git a/apps/files_encryption/test/keymanager.php b/apps/files_encryption/test/keymanager.php index bf453fe316..3dba6d0df9 100644 --- a/apps/files_encryption/test/keymanager.php +++ b/apps/files_encryption/test/keymanager.php @@ -24,7 +24,9 @@ use OCA\Encryption; class Test_Keymanager extends \PHPUnit_Framework_TestCase { function setUp() { - + // reset backend + \OC_User::useBackend('database'); + \OC_FileProxy::$enabled = false; // set content for encrypting / decrypting in tests @@ -44,9 +46,12 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; - - \OC_Filesystem::init( '/' ); - \OC_Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => \OC_User::getHome($this->userId)), '/' ); + + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/'.$this->userId, '', $userHome); + + \OC_Filesystem::init( $this->userId, '/' ); + \OC_Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); } @@ -61,7 +66,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); // Will this length vary? Perhaps we should use a range instead - $this->assertEquals( 2296, strlen( $key ) ); + $this->assertEquals( 4388, strlen( $key ) ); } @@ -69,7 +74,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $key = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); - $this->assertEquals( 451, strlen( $key ) ); + $this->assertEquals( 800, strlen( $key ) ); $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $key, 0, 26 ) ); } @@ -81,11 +86,19 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); - $path = 'unittest-'.time().'txt'; - + $file = 'unittest-'.time().'.txt'; + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - - Encryption\Keymanager::setFileKey( $this->view, $path, $this->userId, $key['key'] ); + Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); } @@ -109,9 +122,9 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); - $this->assertEquals( 451, strlen( $keys['publicKey'] ) ); + $this->assertEquals( 800, strlen( $keys['publicKey'] ) ); $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $keys['publicKey'], 0, 26 ) ); - $this->assertEquals( 2296, strlen( $keys['privateKey'] ) ); + $this->assertEquals( 4388, strlen( $keys['privateKey'] ) ); } diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 5dcd326880..d113f90768 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -33,9 +33,10 @@ class Test_Cache_File extends Test_Cache { OC_Hook::clear('OC_Filesystem'); //enable only the encryption hook if needed - if(OC_App::isEnabled('files_encryption')) { - OC_FileProxy::register(new OC_FileProxy_Encryption()); - } + //not used right now + //if(OC_App::isEnabled('files_encryption')) { + // OC_FileProxy::register(new OCA\Encryption\Proxy()); + //} //set up temporary storage \OC\Files\Filesystem::clearMounts(); From 882a747b47371ab9d71ba6c336a873873805c696 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 30 Apr 2013 00:34:05 +0200 Subject: [PATCH 129/575] rename folder to tests --- apps/files_encryption/{test => tests}/binary | Bin apps/files_encryption/{test => tests}/crypt.php | 0 .../files_encryption/{test => tests}/keymanager.php | 0 .../{test => tests}/legacy-encrypted-text.txt | Bin apps/files_encryption/{test => tests}/proxy.php | 0 apps/files_encryption/{test => tests}/stream.php | 0 apps/files_encryption/{test => tests}/util.php | 0 apps/files_encryption/{test => tests}/zeros | Bin 8 files changed, 0 insertions(+), 0 deletions(-) rename apps/files_encryption/{test => tests}/binary (100%) rename apps/files_encryption/{test => tests}/crypt.php (100%) rename apps/files_encryption/{test => tests}/keymanager.php (100%) rename apps/files_encryption/{test => tests}/legacy-encrypted-text.txt (100%) rename apps/files_encryption/{test => tests}/proxy.php (100%) rename apps/files_encryption/{test => tests}/stream.php (100%) rename apps/files_encryption/{test => tests}/util.php (100%) rename apps/files_encryption/{test => tests}/zeros (100%) diff --git a/apps/files_encryption/test/binary b/apps/files_encryption/tests/binary similarity index 100% rename from apps/files_encryption/test/binary rename to apps/files_encryption/tests/binary diff --git a/apps/files_encryption/test/crypt.php b/apps/files_encryption/tests/crypt.php similarity index 100% rename from apps/files_encryption/test/crypt.php rename to apps/files_encryption/tests/crypt.php diff --git a/apps/files_encryption/test/keymanager.php b/apps/files_encryption/tests/keymanager.php similarity index 100% rename from apps/files_encryption/test/keymanager.php rename to apps/files_encryption/tests/keymanager.php diff --git a/apps/files_encryption/test/legacy-encrypted-text.txt b/apps/files_encryption/tests/legacy-encrypted-text.txt similarity index 100% rename from apps/files_encryption/test/legacy-encrypted-text.txt rename to apps/files_encryption/tests/legacy-encrypted-text.txt diff --git a/apps/files_encryption/test/proxy.php b/apps/files_encryption/tests/proxy.php similarity index 100% rename from apps/files_encryption/test/proxy.php rename to apps/files_encryption/tests/proxy.php diff --git a/apps/files_encryption/test/stream.php b/apps/files_encryption/tests/stream.php similarity index 100% rename from apps/files_encryption/test/stream.php rename to apps/files_encryption/tests/stream.php diff --git a/apps/files_encryption/test/util.php b/apps/files_encryption/tests/util.php similarity index 100% rename from apps/files_encryption/test/util.php rename to apps/files_encryption/tests/util.php diff --git a/apps/files_encryption/test/zeros b/apps/files_encryption/tests/zeros similarity index 100% rename from apps/files_encryption/test/zeros rename to apps/files_encryption/tests/zeros From 27ce7845b4205650e50f3777d8b152470440cbe6 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 30 Apr 2013 01:35:46 +0200 Subject: [PATCH 130/575] fixed tests, now tests should work via autotest.sh files_encryption app is now enabled in enable_all.php --- apps/files_encryption/lib/util.php | 7 ++- apps/files_encryption/tests/keymanager.php | 4 +- apps/files_encryption/tests/util.php | 61 +++++++++++++++------- tests/enable_all.php | 1 + 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index fe040d8877..4097250b25 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -204,7 +204,12 @@ class Util { $this->view->file_put_contents( $this->privateKeyPath, $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; - + + // create database configuration + $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery`) VALUES (?,?,?)'; + $args = array( $this->userId, 'server-side', 0); + $query = \OCP\DB::prepare( $sql ); + $query->execute( $args ); } return true; diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 3dba6d0df9..7fe37838a4 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -50,8 +50,8 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $userHome = \OC_User::getHome($this->userId); $this->dataDir = str_replace('/'.$this->userId, '', $userHome); - \OC_Filesystem::init( $this->userId, '/' ); - \OC_Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + \OC\Files\Filesystem::init( $this->userId, '/' ); + \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); } diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 3ebc484809..0659b468a3 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -29,19 +29,20 @@ use OCA\Encryption; class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function setUp() { - - \OC_Filesystem::mount( 'OC_Filestorage_Local', array(), '/' ); - - // set content for encrypting / decrypting in tests + // reset backend + \OC_User::useBackend('database'); + + \OC_User::setUserId( 'admin' ); + $this->userId = 'admin'; + $this->pass = 'admin'; + + // set content for encrypting / decrypting in tests $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); $this->dataShort = 'hats'; $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); $this->legacyData = realpath( dirname(__FILE__).'/legacy-text.txt' ); $this->legacyEncryptedData = realpath( dirname(__FILE__).'/legacy-encrypted-text.txt' ); - - $this->userId = 'admin'; - $this->pass = 'admin'; - + $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; @@ -54,9 +55,15 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key $this->view = new \OC_FilesystemView( '/' ); - - $this->mockView = m::mock('OC_FilesystemView'); - $this->util = new Encryption\Util( $this->mockView, $this->userId ); + + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/'.$this->userId, '', $userHome); + + \OC\Files\Filesystem::init( $this->userId, '/' ); + \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + + $mockView = m::mock('OC_FilesystemView'); + $this->util = new Encryption\Util( $mockView, $this->userId ); } @@ -90,8 +97,8 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $mockView = m::mock('OC_FilesystemView'); - $mockView->shouldReceive( 'file_exists' )->times(5)->andReturn( false ); - $mockView->shouldReceive( 'mkdir' )->times(4)->andReturn( true ); + $mockView->shouldReceive( 'file_exists' )->times(7)->andReturn( false ); + $mockView->shouldReceive( 'mkdir' )->times(6)->andReturn( true ); $mockView->shouldReceive( 'file_put_contents' )->withAnyArgs(); $util = new Encryption\Util( $mockView, $this->userId ); @@ -107,7 +114,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $mockView = m::mock('OC_FilesystemView'); - $mockView->shouldReceive( 'file_exists' )->times(6)->andReturn( true ); + $mockView->shouldReceive( 'file_exists' )->times(8)->andReturn( true ); $mockView->shouldReceive( 'file_put_contents' )->withAnyArgs(); $util = new Encryption\Util( $mockView, $this->userId ); @@ -141,7 +148,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $mockView = m::mock('OC_FilesystemView'); - $mockView->shouldReceive( 'file_exists' )->times(3)->andReturn( true ); + $mockView->shouldReceive( 'file_exists' )->times(5)->andReturn( true ); $util = new Encryption\Util( $mockView, $this->userId ); @@ -190,11 +197,25 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function testGetUidAndFilename() { \OC_User::setUserId( 'admin' ); - - $this->util->getUidAndFilename( 'test1.txt' ); - - - + + $filename = 'tmp-'.time().'.test'; + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + + $util = new Encryption\Util( $this->view, $this->userId ); + + list($fileOwnerUid, $file) = $util->getUidAndFilename( $filename ); + + $this->assertEquals('admin', $fileOwnerUid); + + $this->assertEquals($file, $filename); } // /** diff --git a/tests/enable_all.php b/tests/enable_all.php index 44af011565..111ed0e135 100644 --- a/tests/enable_all.php +++ b/tests/enable_all.php @@ -8,6 +8,7 @@ require_once __DIR__.'/../lib/base.php'; +OC_App::enable('files_encryption'); OC_App::enable('calendar'); OC_App::enable('contacts'); OC_App::enable('apptemplateadvanced'); From b1c4464eda73d0c6674a1635c7f8c8629414ecaa Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 30 Apr 2013 01:54:19 +0200 Subject: [PATCH 131/575] improved key length tests --- apps/files_encryption/tests/keymanager.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 7fe37838a4..81034be54b 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -64,9 +64,13 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { function testGetPrivateKey() { $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); - + + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass); + // Will this length vary? Perhaps we should use a range instead - $this->assertEquals( 4388, strlen( $key ) ); + $this->assertGreaterThan( 27, strlen( $privateKey ) ); + + $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $privateKey, 0, 27 ) ); } @@ -74,7 +78,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $key = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); - $this->assertEquals( 800, strlen( $key ) ); + $this->assertGreaterThan( 26, strlen( $key ) ); $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $key, 0, 26 ) ); } @@ -122,9 +126,15 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); - $this->assertEquals( 800, strlen( $keys['publicKey'] ) ); + $this->assertGreaterThan( 26, strlen( $keys['publicKey'] ) ); + $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $keys['publicKey'], 0, 26 ) ); - $this->assertEquals( 4388, strlen( $keys['privateKey'] ) ); + + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass); + + $this->assertGreaterThan( 27, strlen( $keys['privateKey'] ) ); + + $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $privateKey, 0, 27 ) ); } From fbbc76f281f50afa3072d99e4e0d413df835b3d3 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 30 Apr 2013 20:44:42 +0200 Subject: [PATCH 132/575] fix for sharing files --- apps/files_encryption/lib/proxy.php | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 23290b5b20..50f30594b4 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -153,9 +153,9 @@ class Proxy extends \OC_FileProxy { $data = $encData; // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo( $path, array( 'encrypted'=>true, 'size' => $size ), '' ); - - // Re-enable proxy - our work is done + \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted'=>true, 'size' => strlen($size), 'unencrypted_size' => $size), '' ); + + // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; } @@ -437,24 +437,25 @@ class Proxy extends \OC_FileProxy { $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); // if file is encrypted return real file size - if (is_array($fileInfo) && $fileInfo['encrypted'] == 1) { + if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { $size = $fileInfo['unencrypted_size']; } else { // self healing if file was removed from file cache - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $fixSize = $util->getFileSize($path); - if($fixSize > 0) { - $size = $fixSize; + if(is_array($fileInfo)) { + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId ); + $fixSize = $util->getFileSize($path); + if($fixSize > 0) { + $size = $fixSize; - $fileInfo['encrypted'] = 1; - $fileInfo['unencrypted_size'] = $size; + $fileInfo['encrypted'] = 1; + $fileInfo['unencrypted_size'] = $size; - // put file info - $view->putFileInfo( $path, $fileInfo ); + // put file info + $view->putFileInfo( $path_f, $fileInfo ); + } } } - return $size; } From b08179d406cf5af76291bba2edf81b9563a46f44 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 30 Apr 2013 23:58:53 +0200 Subject: [PATCH 133/575] fixed tests after merge against master --- apps/files_encryption/tests/crypt.php | 9 ++++++--- apps/files_encryption/tests/keymanager.php | 7 +++++-- apps/files_encryption/tests/stream.php | 2 +- apps/files_encryption/tests/util.php | 9 +++++++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 7f9572f426..4a85048ba4 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -21,7 +21,6 @@ use OCA\Encryption; // This has to go here because otherwise session errors arise, and the private // encryption key needs to be saved in the session -\OC_User::login( 'admin', 'admin' ); /** * @note It would be better to use Mockery here for mocking out the session @@ -37,7 +36,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // reset backend \OC_User::useBackend('database'); - // set content for encrypting / decrypting in tests + // set content for encrypting / decrypting in tests $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); $this->dataShort = 'hats'; $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); @@ -60,13 +59,17 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init($this->userId, '/'); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); } function tearDown() { } - function testGenerateKey() { + function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 81034be54b..33ca29997b 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -19,7 +19,7 @@ use OCA\Encryption; // This has to go here because otherwise session errors arise, and the private // encryption key needs to be saved in the session -\OC_User::login( 'admin', 'admin' ); +//\OC_User::login( 'admin', 'admin' ); class Test_Keymanager extends \PHPUnit_Framework_TestCase { @@ -52,7 +52,10 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init( $this->userId, '/' ); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); - + + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); } function tearDown(){ diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index ba82ac80ea..633cc9e4fc 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -1,4 +1,4 @@ -// // * This file is licensed under the Affero General Public License version 3 or diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 0659b468a3..e3ec0860fa 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -24,8 +24,6 @@ $loader->register(); use \Mockery as m; use OCA\Encryption; -\OC_User::login( 'admin', 'admin' ); - class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function setUp() { @@ -62,6 +60,10 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init( $this->userId, '/' ); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); + $mockView = m::mock('OC_FilesystemView'); $this->util = new Encryption\Util( $mockView, $this->userId ); @@ -75,6 +77,9 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { /** * @brief test that paths set during User construction are correct + * + * + * */ function testKeyPaths() { From 5deba29bdfedc3ee2babece9eafff0bb709cd90c Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 1 May 2013 00:09:55 +0200 Subject: [PATCH 134/575] fixed public-keys mount point error --- apps/files_encryption/hooks/hooks.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 25c2d091c4..e27054f0ec 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -45,7 +45,12 @@ class Hooks { $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $params['uid'] ); + $userHome = \OC_User::getHome($params['uid']); + $dataDir = str_replace('/'.$params['uid'], '', $userHome); + + \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $dataDir .'/public-keys'), '/public-keys/' ); + + $util = new Util( $view, $params['uid'] ); // Check files_encryption infrastructure is ready for action if ( ! $util->ready() ) { From 3c100af1329c1c101f38f23f2d74710954387fdf Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 1 May 2013 01:38:06 +0200 Subject: [PATCH 135/575] revert changes to fbbc76f281f50afa3072d99e4e0d413df835b3d3 because master is very unstable right now --- apps/files/js/files.js | 5 - apps/files/l10n/ar.php | 6 +- apps/files/l10n/bg_BG.php | 8 +- apps/files/l10n/bn_BD.php | 15 +- apps/files/l10n/ca.php | 16 +- apps/files/l10n/cs_CZ.php | 8 +- apps/files/l10n/da.php | 17 +- apps/files/l10n/de.php | 21 +- apps/files/l10n/de_DE.php | 11 +- apps/files/l10n/el.php | 6 +- apps/files/l10n/eo.php | 11 +- apps/files/l10n/es.php | 18 +- apps/files/l10n/es_AR.php | 14 +- apps/files/l10n/et_EE.php | 6 +- apps/files/l10n/eu.php | 13 +- apps/files/l10n/fa.php | 23 +- apps/files/l10n/fi_FI.php | 10 +- apps/files/l10n/fr.php | 16 +- apps/files/l10n/gl.php | 10 +- apps/files/l10n/he.php | 10 +- apps/files/l10n/hr.php | 22 +- apps/files/l10n/hu_HU.php | 4 +- apps/files/l10n/ia.php | 2 +- apps/files/l10n/id.php | 6 +- apps/files/l10n/it.php | 12 +- apps/files/l10n/ja_JP.php | 14 +- apps/files/l10n/ka_GE.php | 2 +- apps/files/l10n/ko.php | 18 +- apps/files/l10n/lb.php | 4 +- apps/files/l10n/lt_LT.php | 8 +- apps/files/l10n/lv.php | 4 +- apps/files/l10n/mk.php | 10 +- apps/files/l10n/ms_MY.php | 17 +- apps/files/l10n/nb_NO.php | 13 +- apps/files/l10n/nl.php | 28 +- apps/files/l10n/nn_NO.php | 53 +- apps/files/l10n/oc.php | 3 +- apps/files/l10n/pl.php | 14 +- apps/files/l10n/pt_BR.php | 14 +- apps/files/l10n/pt_PT.php | 20 +- apps/files/l10n/ro.php | 24 +- apps/files/l10n/ru.php | 19 +- apps/files/l10n/si_LK.php | 13 +- apps/files/l10n/sk_SK.php | 24 +- apps/files/l10n/sl.php | 17 +- apps/files/l10n/sr.php | 2 +- apps/files/l10n/sv.php | 11 +- apps/files/l10n/ta_LK.php | 5 +- apps/files/l10n/th_TH.php | 17 +- apps/files/l10n/tr.php | 14 +- apps/files/l10n/uk.php | 4 +- apps/files/l10n/ur_PK.php | 3 +- apps/files/l10n/vi.php | 15 +- apps/files/l10n/zh_CN.GB2312.php | 21 +- apps/files/l10n/zh_CN.php | 14 +- apps/files/templates/index.php | 3 +- apps/files_encryption/hooks/hooks.php | 7 +- apps/files_encryption/l10n/ca.php | 2 +- apps/files_encryption/l10n/de.php | 2 +- apps/files_encryption/l10n/de_DE.php | 2 +- apps/files_encryption/l10n/el.php | 2 +- apps/files_encryption/l10n/eu.php | 2 +- apps/files_encryption/l10n/it.php | 2 +- apps/files_encryption/l10n/pl.php | 2 +- apps/files_encryption/l10n/pt_BR.php | 2 +- apps/files_encryption/l10n/ru.php | 2 +- apps/files_encryption/l10n/sk_SK.php | 2 +- apps/files_encryption/l10n/th_TH.php | 2 +- apps/files_encryption/l10n/vi.php | 2 +- apps/files_encryption/tests/crypt.php | 9 +- apps/files_encryption/tests/keymanager.php | 7 +- apps/files_encryption/tests/stream.php | 2 +- apps/files_encryption/tests/util.php | 9 +- apps/files_external/l10n/ar.php | 2 +- apps/files_external/l10n/bn_BD.php | 2 +- apps/files_external/l10n/ca.php | 2 +- apps/files_external/l10n/de.php | 1 - apps/files_external/l10n/de_DE.php | 1 - apps/files_external/l10n/el.php | 1 - apps/files_external/l10n/es.php | 2 +- apps/files_external/l10n/et_EE.php | 3 +- apps/files_external/l10n/fr.php | 1 - apps/files_external/l10n/lb.php | 1 - apps/files_external/l10n/nl.php | 1 - apps/files_external/l10n/pt_BR.php | 3 +- apps/files_external/l10n/ro.php | 3 - apps/files_external/l10n/ru.php | 1 - apps/files_external/l10n/sk_SK.php | 3 +- apps/files_external/l10n/sl.php | 5 +- apps/files_external/l10n/zh_TW.php | 20 +- apps/files_sharing/l10n/bn_BD.php | 2 +- apps/files_sharing/l10n/de_DE.php | 4 +- apps/files_sharing/l10n/he.php | 2 +- apps/files_sharing/l10n/hi.php | 3 - apps/files_sharing/l10n/hr.php | 6 - apps/files_sharing/l10n/hy.php | 4 - apps/files_sharing/l10n/ia.php | 6 - apps/files_sharing/l10n/ku_IQ.php | 2 +- apps/files_sharing/l10n/lb.php | 5 +- apps/files_sharing/l10n/lt_LT.php | 8 +- apps/files_sharing/l10n/lv.php | 2 +- apps/files_sharing/l10n/ms_MY.php | 6 - apps/files_sharing/l10n/nn_NO.php | 6 - apps/files_sharing/l10n/oc.php | 6 - apps/files_sharing/l10n/pt_BR.php | 2 +- apps/files_sharing/l10n/si_LK.php | 4 +- apps/files_sharing/l10n/sk_SK.php | 2 +- apps/files_sharing/l10n/sr.php | 3 +- apps/files_sharing/l10n/sr@latin.php | 5 - apps/files_sharing/l10n/tr.php | 2 +- apps/files_sharing/l10n/uk.php | 2 +- apps/files_sharing/l10n/zh_TW.php | 6 +- apps/files_sharing/lib/cache.php | 2 +- apps/files_sharing/lib/sharedstorage.php | 2 +- apps/files_trashbin/l10n/id.php | 8 +- apps/files_trashbin/l10n/nn_NO.php | 5 - apps/files_trashbin/l10n/pl.php | 4 +- apps/files_trashbin/l10n/pt_PT.php | 2 +- apps/files_trashbin/l10n/ro.php | 1 - apps/files_trashbin/l10n/sk_SK.php | 2 +- apps/files_trashbin/lib/trash.php | 395 +++----------- apps/files_versions/l10n/et_EE.php | 2 +- apps/files_versions/l10n/he.php | 4 +- apps/files_versions/l10n/ku_IQ.php | 4 +- apps/files_versions/l10n/nb_NO.php | 4 +- apps/files_versions/l10n/ro.php | 12 +- apps/files_versions/l10n/si_LK.php | 4 +- apps/files_versions/l10n/ta_LK.php | 4 +- apps/files_versions/l10n/th_TH.php | 4 +- apps/files_versions/l10n/vi.php | 1 - apps/user_ldap/l10n/ca.php | 2 +- apps/user_ldap/l10n/fa.php | 2 +- apps/user_ldap/l10n/gl.php | 2 +- apps/user_ldap/l10n/hi.php | 1 - apps/user_ldap/l10n/hr.php | 1 - apps/user_ldap/l10n/ia.php | 1 - apps/user_ldap/l10n/id.php | 8 +- apps/user_ldap/l10n/ku_IQ.php | 1 - apps/user_ldap/l10n/ms_MY.php | 1 - apps/user_ldap/l10n/nn_NO.php | 1 - apps/user_ldap/l10n/oc.php | 1 - apps/user_ldap/l10n/pl.php | 2 +- apps/user_ldap/l10n/pt_PT.php | 2 +- apps/user_ldap/l10n/sr@latin.php | 1 - apps/user_ldap/l10n/tr.php | 21 - core/css/styles.css | 6 +- core/js/jquery-showpassword.js | 14 +- core/l10n/ar.php | 20 +- core/l10n/bg_BG.php | 51 +- core/l10n/bn_BD.php | 16 +- core/l10n/ca.php | 6 +- core/l10n/cs_CZ.php | 6 +- core/l10n/cy_GB.php | 2 + core/l10n/da.php | 6 +- core/l10n/de.php | 10 +- core/l10n/de_DE.php | 12 +- core/l10n/el.php | 8 +- core/l10n/eo.php | 3 +- core/l10n/es.php | 12 +- core/l10n/es_AR.php | 40 +- core/l10n/et_EE.php | 13 +- core/l10n/eu.php | 4 +- core/l10n/fa.php | 18 +- core/l10n/fi_FI.php | 45 +- core/l10n/fr.php | 10 +- core/l10n/gl.php | 14 +- core/l10n/he.php | 8 +- core/l10n/hr.php | 6 +- core/l10n/hu_HU.php | 8 +- core/l10n/hy.php | 21 - core/l10n/id.php | 10 +- core/l10n/is.php | 14 +- core/l10n/it.php | 12 +- core/l10n/ja_JP.php | 10 +- core/l10n/ka_GE.php | 14 +- core/l10n/ko.php | 14 +- core/l10n/lb.php | 2 +- core/l10n/lt_LT.php | 2 +- core/l10n/lv.php | 8 +- core/l10n/mk.php | 6 +- core/l10n/ms_MY.php | 4 +- core/l10n/nb_NO.php | 2 +- core/l10n/nl.php | 12 +- core/l10n/nn_NO.php | 96 +--- core/l10n/oc.php | 28 +- core/l10n/pl.php | 4 +- core/l10n/pt_BR.php | 12 +- core/l10n/pt_PT.php | 14 +- core/l10n/ro.php | 23 +- core/l10n/ru.php | 14 +- core/l10n/ru_RU.php | 136 ++++- core/l10n/si_LK.php | 13 +- core/l10n/sk_SK.php | 14 +- core/l10n/sl.php | 10 +- core/l10n/sq.php | 6 +- core/l10n/sr.php | 14 +- core/l10n/sr@latin.php | 2 +- core/l10n/sv.php | 6 +- core/l10n/ta_LK.php | 16 +- core/l10n/th_TH.php | 10 +- core/l10n/tr.php | 6 +- core/l10n/uk.php | 8 +- core/l10n/vi.php | 14 +- core/l10n/zh_CN.GB2312.php | 14 +- core/l10n/zh_CN.php | 12 +- core/l10n/zh_HK.php | 2 + core/l10n/zh_TW.php | 8 +- core/lostpassword/templates/lostpassword.php | 31 +- core/templates/layout.user.php | 3 - l10n/.tx/config | 3 - l10n/af_ZA/core.po | 75 ++- l10n/af_ZA/files.po | 14 +- l10n/af_ZA/files_encryption.po | 4 +- l10n/af_ZA/files_external.po | 15 +- l10n/af_ZA/files_sharing.po | 4 +- l10n/af_ZA/files_trashbin.po | 4 +- l10n/af_ZA/files_versions.po | 4 +- l10n/af_ZA/lib.po | 55 +- l10n/af_ZA/settings.po | 80 +-- l10n/af_ZA/user_ldap.po | 4 +- l10n/ar/core.po | 96 ++-- l10n/ar/files.po | 22 +- l10n/ar/files_encryption.po | 6 +- l10n/ar/files_external.po | 17 +- l10n/ar/files_sharing.po | 5 +- l10n/ar/files_trashbin.po | 5 +- l10n/ar/files_versions.po | 5 +- l10n/ar/lib.po | 58 ++- l10n/ar/settings.po | 95 ++-- l10n/ar/user_ldap.po | 4 +- l10n/be/core.po | 75 ++- l10n/be/files.po | 14 +- l10n/be/files_encryption.po | 4 +- l10n/be/files_external.po | 15 +- l10n/be/files_sharing.po | 4 +- l10n/be/files_trashbin.po | 4 +- l10n/be/files_versions.po | 4 +- l10n/be/lib.po | 55 +- l10n/be/settings.po | 78 +-- l10n/be/user_ldap.po | 4 +- l10n/bg_BG/core.po | 182 ++++--- l10n/bg_BG/files.po | 28 +- l10n/bg_BG/files_encryption.po | 5 +- l10n/bg_BG/files_external.po | 18 +- l10n/bg_BG/files_sharing.po | 5 +- l10n/bg_BG/files_trashbin.po | 8 +- l10n/bg_BG/files_versions.po | 9 +- l10n/bg_BG/lib.po | 57 +- l10n/bg_BG/settings.po | 97 ++-- l10n/bg_BG/user_ldap.po | 4 +- l10n/bn_BD/core.po | 90 ++-- l10n/bn_BD/files.po | 29 +- l10n/bn_BD/files_encryption.po | 4 +- l10n/bn_BD/files_external.po | 17 +- l10n/bn_BD/files_sharing.po | 6 +- l10n/bn_BD/files_trashbin.po | 4 +- l10n/bn_BD/files_versions.po | 4 +- l10n/bn_BD/lib.po | 61 ++- l10n/bn_BD/settings.po | 87 ++-- l10n/bn_BD/user_ldap.po | 4 +- l10n/ca/core.po | 82 ++- l10n/ca/files.po | 37 +- l10n/ca/files_encryption.po | 8 +- l10n/ca/files_external.po | 19 +- l10n/ca/files_sharing.po | 5 +- l10n/ca/files_trashbin.po | 5 +- l10n/ca/files_versions.po | 7 +- l10n/ca/lib.po | 59 ++- l10n/ca/settings.po | 94 ++-- l10n/ca/user_ldap.po | 8 +- l10n/cs_CZ/core.po | 49 +- l10n/cs_CZ/files.po | 25 +- l10n/cs_CZ/files_encryption.po | 6 +- l10n/cs_CZ/files_external.po | 19 +- l10n/cs_CZ/files_sharing.po | 7 +- l10n/cs_CZ/files_trashbin.po | 5 +- l10n/cs_CZ/files_versions.po | 6 +- l10n/cs_CZ/lib.po | 63 ++- l10n/cs_CZ/settings.po | 88 ++-- l10n/cs_CZ/user_ldap.po | 6 +- l10n/cy_GB/core.po | 57 +- l10n/cy_GB/files.po | 17 +- l10n/cy_GB/files_encryption.po | 4 +- l10n/cy_GB/files_external.po | 15 +- l10n/cy_GB/files_sharing.po | 7 +- l10n/cy_GB/files_trashbin.po | 7 +- l10n/cy_GB/files_versions.po | 4 +- l10n/cy_GB/lib.po | 58 ++- l10n/cy_GB/settings.po | 78 +-- l10n/cy_GB/user_ldap.po | 4 +- l10n/da/core.po | 89 ++-- l10n/da/files.po | 42 +- l10n/da/files_encryption.po | 7 +- l10n/da/files_external.po | 19 +- l10n/da/files_sharing.po | 6 +- l10n/da/files_trashbin.po | 6 +- l10n/da/files_versions.po | 8 +- l10n/da/lib.po | 70 ++- l10n/da/settings.po | 98 ++-- l10n/da/user_ldap.po | 9 +- l10n/de/core.po | 81 +-- l10n/de/files.po | 58 ++- l10n/de/files_encryption.po | 8 +- l10n/de/files_external.po | 24 +- l10n/de/files_sharing.po | 9 +- l10n/de/files_trashbin.po | 10 +- l10n/de/files_versions.po | 11 +- l10n/de/lib.po | 73 ++- l10n/de/settings.po | 101 ++-- l10n/de/user_ldap.po | 14 +- l10n/de_DE/core.po | 87 ++-- l10n/de_DE/files.po | 99 ++-- l10n/de_DE/files_encryption.po | 12 +- l10n/de_DE/files_external.po | 24 +- l10n/de_DE/files_sharing.po | 13 +- l10n/de_DE/files_trashbin.po | 11 +- l10n/de_DE/files_versions.po | 16 +- l10n/de_DE/lib.po | 70 ++- l10n/de_DE/settings.po | 110 ++-- l10n/de_DE/user_ldap.po | 18 +- l10n/el/core.po | 92 ++-- l10n/el/files.po | 30 +- l10n/el/files_encryption.po | 9 +- l10n/el/files_external.po | 25 +- l10n/el/files_sharing.po | 7 +- l10n/el/files_trashbin.po | 5 +- l10n/el/files_versions.po | 8 +- l10n/el/lib.po | 66 ++- l10n/el/settings.po | 103 ++-- l10n/el/user_ldap.po | 11 +- l10n/eo/core.po | 79 ++- l10n/eo/files.po | 29 +- l10n/eo/files_encryption.po | 5 +- l10n/eo/files_external.po | 16 +- l10n/eo/files_sharing.po | 5 +- l10n/eo/files_trashbin.po | 4 +- l10n/eo/files_versions.po | 6 +- l10n/eo/lib.po | 64 ++- l10n/eo/settings.po | 107 ++-- l10n/eo/user_ldap.po | 6 +- l10n/es/core.po | 59 ++- l10n/es/files.po | 46 +- l10n/es/files_encryption.po | 8 +- l10n/es/files_external.po | 22 +- l10n/es/files_sharing.po | 7 +- l10n/es/files_trashbin.po | 6 +- l10n/es/files_versions.po | 10 +- l10n/es/lib.po | 67 ++- l10n/es/settings.po | 111 ++-- l10n/es/user_ldap.po | 12 +- l10n/es_AR/core.po | 115 ++--- l10n/es_AR/files.po | 34 +- l10n/es_AR/files_encryption.po | 6 +- l10n/es_AR/files_external.po | 18 +- l10n/es_AR/files_sharing.po | 5 +- l10n/es_AR/files_trashbin.po | 5 +- l10n/es_AR/files_versions.po | 7 +- l10n/es_AR/lib.po | 71 ++- l10n/es_AR/settings.po | 90 ++-- l10n/es_AR/user_ldap.po | 7 +- l10n/et_EE/core.po | 87 ++-- l10n/et_EE/files.po | 23 +- l10n/et_EE/files_encryption.po | 7 +- l10n/et_EE/files_external.po | 22 +- l10n/et_EE/files_sharing.po | 7 +- l10n/et_EE/files_trashbin.po | 8 +- l10n/et_EE/files_versions.po | 11 +- l10n/et_EE/lib.po | 64 ++- l10n/et_EE/settings.po | 85 +-- l10n/et_EE/user_ldap.po | 6 +- l10n/et_EE/user_webdavauth.po | 10 +- l10n/eu/core.po | 80 ++- l10n/eu/files.po | 32 +- l10n/eu/files_encryption.po | 8 +- l10n/eu/files_external.po | 17 +- l10n/eu/files_sharing.po | 5 +- l10n/eu/files_trashbin.po | 5 +- l10n/eu/files_versions.po | 6 +- l10n/eu/lib.po | 67 ++- l10n/eu/settings.po | 90 ++-- l10n/eu/user_ldap.po | 6 +- l10n/fa/core.po | 94 ++-- l10n/fa/files.po | 40 +- l10n/fa/files_encryption.po | 7 +- l10n/fa/files_external.po | 16 +- l10n/fa/files_sharing.po | 6 +- l10n/fa/files_trashbin.po | 5 +- l10n/fa/files_versions.po | 7 +- l10n/fa/lib.po | 58 ++- l10n/fa/settings.po | 98 ++-- l10n/fa/user_ldap.po | 9 +- l10n/fi/core.po | 74 ++- l10n/fi/files.po | 16 +- l10n/fi/lib.po | 55 +- l10n/fi_FI/core.po | 126 +++-- l10n/fi_FI/files.po | 29 +- l10n/fi_FI/files_encryption.po | 5 +- l10n/fi_FI/files_external.po | 18 +- l10n/fi_FI/files_sharing.po | 6 +- l10n/fi_FI/files_trashbin.po | 5 +- l10n/fi_FI/files_versions.po | 5 +- l10n/fi_FI/lib.po | 58 ++- l10n/fi_FI/settings.po | 90 ++-- l10n/fi_FI/user_ldap.po | 7 +- l10n/fr/core.po | 95 ++-- l10n/fr/files.po | 47 +- l10n/fr/files_encryption.po | 5 +- l10n/fr/files_external.po | 18 +- l10n/fr/files_sharing.po | 9 +- l10n/fr/files_trashbin.po | 6 +- l10n/fr/files_versions.po | 6 +- l10n/fr/lib.po | 63 ++- l10n/fr/settings.po | 106 ++-- l10n/fr/user_ldap.po | 12 +- l10n/gl/core.po | 89 ++-- l10n/gl/files.po | 29 +- l10n/gl/files_encryption.po | 6 +- l10n/gl/files_external.po | 18 +- l10n/gl/files_sharing.po | 6 +- l10n/gl/files_trashbin.po | 5 +- l10n/gl/files_versions.po | 8 +- l10n/gl/lib.po | 63 ++- l10n/gl/settings.po | 89 ++-- l10n/gl/user_ldap.po | 11 +- l10n/he/core.po | 85 ++- l10n/he/files.po | 28 +- l10n/he/files_encryption.po | 5 +- l10n/he/files_external.po | 17 +- l10n/he/files_sharing.po | 7 +- l10n/he/files_trashbin.po | 5 +- l10n/he/files_versions.po | 8 +- l10n/he/lib.po | 57 +- l10n/he/settings.po | 94 ++-- l10n/he/user_ldap.po | 5 +- l10n/hi/core.po | 76 ++- l10n/hi/files.po | 14 +- l10n/hi/files_encryption.po | 4 +- l10n/hi/files_external.po | 15 +- l10n/hi/files_sharing.po | 6 +- l10n/hi/files_trashbin.po | 4 +- l10n/hi/files_versions.po | 4 +- l10n/hi/lib.po | 55 +- l10n/hi/settings.po | 80 +-- l10n/hi/user_ldap.po | 6 +- l10n/hr/core.po | 84 ++- l10n/hr/files.po | 39 +- l10n/hr/files_encryption.po | 4 +- l10n/hr/files_external.po | 15 +- l10n/hr/files_sharing.po | 12 +- l10n/hr/files_trashbin.po | 4 +- l10n/hr/files_versions.po | 4 +- l10n/hr/lib.po | 57 +- l10n/hr/settings.po | 89 ++-- l10n/hr/user_ldap.po | 6 +- l10n/hu_HU/core.po | 85 ++- l10n/hu_HU/files.po | 25 +- l10n/hu_HU/files_encryption.po | 8 +- l10n/hu_HU/files_external.po | 16 +- l10n/hu_HU/files_sharing.po | 5 +- l10n/hu_HU/files_trashbin.po | 6 +- l10n/hu_HU/files_versions.po | 5 +- l10n/hu_HU/lib.po | 64 ++- l10n/hu_HU/settings.po | 86 +-- l10n/hu_HU/user_ldap.po | 6 +- l10n/hy/core.po | 456 +++++----------- l10n/hy/files.po | 16 +- l10n/hy/files_external.po | 17 +- l10n/hy/files_sharing.po | 22 +- l10n/hy/files_trashbin.po | 6 +- l10n/hy/settings.po | 82 +-- l10n/ia/core.po | 75 ++- l10n/ia/files.po | 18 +- l10n/ia/files_encryption.po | 4 +- l10n/ia/files_external.po | 15 +- l10n/ia/files_sharing.po | 12 +- l10n/ia/files_trashbin.po | 4 +- l10n/ia/files_versions.po | 4 +- l10n/ia/lib.po | 57 +- l10n/ia/settings.po | 86 +-- l10n/ia/user_ldap.po | 6 +- l10n/id/core.po | 91 ++-- l10n/id/files.po | 25 +- l10n/id/files_encryption.po | 6 +- l10n/id/files_external.po | 18 +- l10n/id/files_sharing.po | 6 +- l10n/id/files_trashbin.po | 14 +- l10n/id/files_versions.po | 7 +- l10n/id/lib.po | 58 ++- l10n/id/settings.po | 92 ++-- l10n/id/user_ldap.po | 15 +- l10n/is/core.po | 88 ++-- l10n/is/files.po | 15 +- l10n/is/files_encryption.po | 5 +- l10n/is/files_external.po | 16 +- l10n/is/files_sharing.po | 5 +- l10n/is/files_trashbin.po | 4 +- l10n/is/files_versions.po | 5 +- l10n/is/lib.po | 56 +- l10n/is/settings.po | 81 +-- l10n/is/user_ldap.po | 5 +- l10n/it/core.po | 89 ++-- l10n/it/files.po | 30 +- l10n/it/files_encryption.po | 7 +- l10n/it/files_external.po | 17 +- l10n/it/files_sharing.po | 5 +- l10n/it/files_trashbin.po | 5 +- l10n/it/files_versions.po | 5 +- l10n/it/lib.po | 62 ++- l10n/it/settings.po | 89 ++-- l10n/it/user_ldap.po | 6 +- l10n/ja_JP/core.po | 88 ++-- l10n/ja_JP/files.po | 33 +- l10n/ja_JP/files_encryption.po | 6 +- l10n/ja_JP/files_external.po | 18 +- l10n/ja_JP/files_sharing.po | 6 +- l10n/ja_JP/files_trashbin.po | 5 +- l10n/ja_JP/files_versions.po | 8 +- l10n/ja_JP/lib.po | 68 ++- l10n/ja_JP/settings.po | 93 ++-- l10n/ja_JP/user_ldap.po | 8 +- l10n/ka/core.po | 74 ++- l10n/ka/files.po | 14 +- l10n/ka/files_encryption.po | 4 +- l10n/ka/files_external.po | 15 +- l10n/ka/files_sharing.po | 5 +- l10n/ka/files_trashbin.po | 4 +- l10n/ka/files_versions.po | 4 +- l10n/ka/lib.po | 56 +- l10n/ka/settings.po | 80 +-- l10n/ka/user_ldap.po | 4 +- l10n/ka_GE/core.po | 70 ++- l10n/ka_GE/files.po | 20 +- l10n/ka_GE/files_encryption.po | 7 +- l10n/ka_GE/files_external.po | 18 +- l10n/ka_GE/files_sharing.po | 8 +- l10n/ka_GE/files_trashbin.po | 7 +- l10n/ka_GE/files_versions.po | 7 +- l10n/ka_GE/lib.po | 57 +- l10n/ka_GE/settings.po | 83 +-- l10n/ka_GE/user_ldap.po | 7 +- l10n/kn/core.po | 74 ++- l10n/kn/files.po | 14 +- l10n/kn/files_encryption.po | 4 +- l10n/kn/files_external.po | 15 +- l10n/kn/files_sharing.po | 4 +- l10n/kn/files_trashbin.po | 4 +- l10n/kn/files_versions.po | 4 +- l10n/kn/lib.po | 55 +- l10n/kn/settings.po | 78 +-- l10n/kn/user_ldap.po | 4 +- l10n/ko/core.po | 98 ++-- l10n/ko/files.po | 38 +- l10n/ko/files_encryption.po | 6 +- l10n/ko/files_external.po | 19 +- l10n/ko/files_sharing.po | 7 +- l10n/ko/files_trashbin.po | 4 +- l10n/ko/files_versions.po | 7 +- l10n/ko/lib.po | 58 ++- l10n/ko/settings.po | 93 ++-- l10n/ko/user_ldap.po | 8 +- l10n/ku_IQ/core.po | 75 ++- l10n/ku_IQ/files.po | 14 +- l10n/ku_IQ/files_encryption.po | 5 +- l10n/ku_IQ/files_external.po | 15 +- l10n/ku_IQ/files_sharing.po | 7 +- l10n/ku_IQ/files_trashbin.po | 4 +- l10n/ku_IQ/files_versions.po | 7 +- l10n/ku_IQ/lib.po | 57 +- l10n/ku_IQ/settings.po | 80 +-- l10n/ku_IQ/user_ldap.po | 6 +- l10n/lb/core.po | 78 ++- l10n/lb/files.po | 19 +- l10n/lb/files_encryption.po | 4 +- l10n/lb/files_external.po | 17 +- l10n/lb/files_sharing.po | 10 +- l10n/lb/files_trashbin.po | 4 +- l10n/lb/files_versions.po | 5 +- l10n/lb/lib.po | 59 ++- l10n/lb/settings.po | 99 ++-- l10n/lb/user_ldap.po | 4 +- l10n/lt_LT/core.po | 78 ++- l10n/lt_LT/files.po | 25 +- l10n/lt_LT/files_encryption.po | 5 +- l10n/lt_LT/files_external.po | 18 +- l10n/lt_LT/files_sharing.po | 13 +- l10n/lt_LT/files_trashbin.po | 4 +- l10n/lt_LT/files_versions.po | 7 +- l10n/lt_LT/lib.po | 65 ++- l10n/lt_LT/settings.po | 94 ++-- l10n/lt_LT/user_ldap.po | 5 +- l10n/lv/core.po | 82 ++- l10n/lv/files.po | 21 +- l10n/lv/files_encryption.po | 5 +- l10n/lv/files_external.po | 16 +- l10n/lv/files_sharing.po | 7 +- l10n/lv/files_trashbin.po | 5 +- l10n/lv/files_versions.po | 5 +- l10n/lv/lib.po | 56 +- l10n/lv/settings.po | 85 +-- l10n/lv/user_ldap.po | 5 +- l10n/mk/core.po | 81 ++- l10n/mk/files.po | 27 +- l10n/mk/files_encryption.po | 5 +- l10n/mk/files_external.po | 16 +- l10n/mk/files_sharing.po | 5 +- l10n/mk/files_trashbin.po | 4 +- l10n/mk/files_versions.po | 5 +- l10n/mk/lib.po | 58 ++- l10n/mk/settings.po | 89 ++-- l10n/mk/user_ldap.po | 5 +- l10n/ms_MY/core.po | 81 ++- l10n/ms_MY/files.po | 34 +- l10n/ms_MY/files_encryption.po | 4 +- l10n/ms_MY/files_external.po | 15 +- l10n/ms_MY/files_sharing.po | 12 +- l10n/ms_MY/files_trashbin.po | 4 +- l10n/ms_MY/files_versions.po | 4 +- l10n/ms_MY/lib.po | 57 +- l10n/ms_MY/settings.po | 94 ++-- l10n/ms_MY/user_ldap.po | 6 +- l10n/my_MM/core.po | 75 ++- l10n/my_MM/files.po | 14 +- l10n/my_MM/files_encryption.po | 4 +- l10n/my_MM/files_external.po | 15 +- l10n/my_MM/files_sharing.po | 4 +- l10n/my_MM/files_trashbin.po | 4 +- l10n/my_MM/files_versions.po | 4 +- l10n/my_MM/lib.po | 56 +- l10n/my_MM/settings.po | 80 +-- l10n/my_MM/user_ldap.po | 4 +- l10n/nb_NO/core.po | 83 ++- l10n/nb_NO/files.po | 37 +- l10n/nb_NO/files_encryption.po | 6 +- l10n/nb_NO/files_external.po | 17 +- l10n/nb_NO/files_sharing.po | 6 +- l10n/nb_NO/files_trashbin.po | 5 +- l10n/nb_NO/files_versions.po | 8 +- l10n/nb_NO/lib.po | 64 ++- l10n/nb_NO/settings.po | 110 ++-- l10n/nb_NO/user_ldap.po | 6 +- l10n/ne/core.po | 74 ++- l10n/ne/files.po | 14 +- l10n/ne/files_encryption.po | 4 +- l10n/ne/files_external.po | 15 +- l10n/ne/files_sharing.po | 4 +- l10n/ne/files_trashbin.po | 4 +- l10n/ne/files_versions.po | 4 +- l10n/ne/lib.po | 55 +- l10n/ne/settings.po | 78 +-- l10n/ne/user_ldap.po | 4 +- l10n/nl/core.po | 97 ++-- l10n/nl/files.po | 54 +- l10n/nl/files_encryption.po | 7 +- l10n/nl/files_external.po | 20 +- l10n/nl/files_sharing.po | 6 +- l10n/nl/files_trashbin.po | 5 +- l10n/nl/files_versions.po | 6 +- l10n/nl/lib.po | 59 ++- l10n/nl/settings.po | 109 ++-- l10n/nl/user_ldap.po | 7 +- l10n/nn_NO/core.po | 251 +++++---- l10n/nn_NO/files.po | 167 +++--- l10n/nn_NO/files_encryption.po | 4 +- l10n/nn_NO/files_external.po | 15 +- l10n/nn_NO/files_sharing.po | 12 +- l10n/nn_NO/files_trashbin.po | 14 +- l10n/nn_NO/files_versions.po | 4 +- l10n/nn_NO/lib.po | 79 +-- l10n/nn_NO/settings.po | 261 +++++----- l10n/nn_NO/user_ldap.po | 6 +- l10n/oc/core.po | 105 ++-- l10n/oc/files.po | 19 +- l10n/oc/files_encryption.po | 4 +- l10n/oc/files_external.po | 15 +- l10n/oc/files_sharing.po | 12 +- l10n/oc/files_trashbin.po | 4 +- l10n/oc/files_versions.po | 4 +- l10n/oc/lib.po | 56 +- l10n/oc/settings.po | 95 ++-- l10n/oc/user_ldap.po | 6 +- l10n/pl/core.po | 89 ++-- l10n/pl/files.po | 38 +- l10n/pl/files_encryption.po | 8 +- l10n/pl/files_external.po | 19 +- l10n/pl/files_sharing.po | 7 +- l10n/pl/files_trashbin.po | 9 +- l10n/pl/files_versions.po | 8 +- l10n/pl/lib.po | 71 ++- l10n/pl/settings.po | 98 ++-- l10n/pl/user_ldap.po | 11 +- l10n/pl_PL/core.po | 76 ++- l10n/pl_PL/files.po | 18 +- l10n/pl_PL/lib.po | 57 +- l10n/pl_PL/settings.po | 84 +-- l10n/pt_BR/core.po | 97 ++-- l10n/pt_BR/files.po | 40 +- l10n/pt_BR/files_encryption.po | 8 +- l10n/pt_BR/files_external.po | 23 +- l10n/pt_BR/files_sharing.po | 7 +- l10n/pt_BR/files_trashbin.po | 5 +- l10n/pt_BR/files_versions.po | 8 +- l10n/pt_BR/lib.po | 60 ++- l10n/pt_BR/settings.po | 106 ++-- l10n/pt_BR/user_ldap.po | 9 +- l10n/pt_PT/core.po | 96 ++-- l10n/pt_PT/files.po | 42 +- l10n/pt_PT/files_encryption.po | 6 +- l10n/pt_PT/files_external.po | 18 +- l10n/pt_PT/files_sharing.po | 6 +- l10n/pt_PT/files_trashbin.po | 8 +- l10n/pt_PT/files_versions.po | 7 +- l10n/pt_PT/lib.po | 67 ++- l10n/pt_PT/settings.po | 98 ++-- l10n/pt_PT/user_ldap.po | 11 +- l10n/ro/core.po | 111 ++-- l10n/ro/files.po | 53 +- l10n/ro/files_encryption.po | 6 +- l10n/ro/files_external.po | 21 +- l10n/ro/files_sharing.po | 5 +- l10n/ro/files_trashbin.po | 6 +- l10n/ro/files_versions.po | 23 +- l10n/ro/lib.po | 58 ++- l10n/ro/settings.po | 125 +++-- l10n/ro/user_ldap.po | 7 +- l10n/ru/core.po | 97 ++-- l10n/ru/files.po | 48 +- l10n/ru/files_encryption.po | 8 +- l10n/ru/files_external.po | 19 +- l10n/ru/files_sharing.po | 8 +- l10n/ru/files_trashbin.po | 5 +- l10n/ru/files_versions.po | 8 +- l10n/ru/lib.po | 69 ++- l10n/ru/settings.po | 106 ++-- l10n/ru/user_ldap.po | 9 +- l10n/ru_RU/core.po | 349 ++++++------- l10n/ru_RU/files.po | 22 +- l10n/ru_RU/lib.po | 122 +++-- l10n/ru_RU/settings.po | 214 ++++---- l10n/si_LK/core.po | 89 ++-- l10n/si_LK/files.po | 28 +- l10n/si_LK/files_encryption.po | 5 +- l10n/si_LK/files_external.po | 16 +- l10n/si_LK/files_sharing.po | 9 +- l10n/si_LK/files_trashbin.po | 4 +- l10n/si_LK/files_versions.po | 7 +- l10n/si_LK/lib.po | 59 ++- l10n/si_LK/settings.po | 107 ++-- l10n/si_LK/user_ldap.po | 5 +- l10n/sk/core.po | 74 ++- l10n/sk/files.po | 14 +- l10n/sk/files_encryption.po | 4 +- l10n/sk/files_external.po | 15 +- l10n/sk/files_sharing.po | 4 +- l10n/sk/files_trashbin.po | 4 +- l10n/sk/files_versions.po | 4 +- l10n/sk/lib.po | 55 +- l10n/sk/settings.po | 78 +-- l10n/sk/user_ldap.po | 4 +- l10n/sk_SK/core.po | 94 ++-- l10n/sk_SK/files.po | 45 +- l10n/sk_SK/files_encryption.po | 9 +- l10n/sk_SK/files_external.po | 23 +- l10n/sk_SK/files_sharing.po | 8 +- l10n/sk_SK/files_trashbin.po | 8 +- l10n/sk_SK/files_versions.po | 7 +- l10n/sk_SK/lib.po | 61 ++- l10n/sk_SK/settings.po | 95 ++-- l10n/sk_SK/user_ldap.po | 6 +- l10n/sl/core.po | 67 ++- l10n/sl/files.po | 35 +- l10n/sl/files_encryption.po | 7 +- l10n/sl/files_external.po | 25 +- l10n/sl/files_sharing.po | 6 +- l10n/sl/files_trashbin.po | 8 +- l10n/sl/files_versions.po | 7 +- l10n/sl/lib.po | 64 ++- l10n/sl/settings.po | 95 ++-- l10n/sl/user_ldap.po | 7 +- l10n/sq/core.po | 78 ++- l10n/sq/files.po | 15 +- l10n/sq/files_encryption.po | 4 +- l10n/sq/files_external.po | 15 +- l10n/sq/files_sharing.po | 5 +- l10n/sq/files_trashbin.po | 5 +- l10n/sq/files_versions.po | 4 +- l10n/sq/lib.po | 58 ++- l10n/sq/settings.po | 83 +-- l10n/sq/user_ldap.po | 4 +- l10n/sr/core.po | 89 ++-- l10n/sr/files.po | 20 +- l10n/sr/files_encryption.po | 6 +- l10n/sr/files_external.po | 15 +- l10n/sr/files_sharing.po | 6 +- l10n/sr/files_trashbin.po | 5 +- l10n/sr/files_versions.po | 5 +- l10n/sr/lib.po | 60 ++- l10n/sr/settings.po | 87 ++-- l10n/sr/user_ldap.po | 5 +- l10n/sr@latin/core.po | 77 ++- l10n/sr@latin/files.po | 15 +- l10n/sr@latin/files_encryption.po | 4 +- l10n/sr@latin/files_external.po | 15 +- l10n/sr@latin/files_sharing.po | 10 +- l10n/sr@latin/files_trashbin.po | 4 +- l10n/sr@latin/files_versions.po | 4 +- l10n/sr@latin/lib.po | 57 +- l10n/sr@latin/settings.po | 81 +-- l10n/sr@latin/user_ldap.po | 6 +- l10n/sv/core.po | 85 ++- l10n/sv/files.po | 33 +- l10n/sv/files_encryption.po | 6 +- l10n/sv/files_external.po | 17 +- l10n/sv/files_sharing.po | 5 +- l10n/sv/files_trashbin.po | 6 +- l10n/sv/files_versions.po | 5 +- l10n/sv/lib.po | 61 ++- l10n/sv/settings.po | 107 ++-- l10n/sv/user_ldap.po | 7 +- l10n/sw_KE/core.po | 74 ++- l10n/sw_KE/files.po | 14 +- l10n/sw_KE/files_encryption.po | 4 +- l10n/sw_KE/files_external.po | 15 +- l10n/sw_KE/files_sharing.po | 4 +- l10n/sw_KE/files_trashbin.po | 4 +- l10n/sw_KE/files_versions.po | 4 +- l10n/sw_KE/lib.po | 55 +- l10n/sw_KE/settings.po | 78 +-- l10n/sw_KE/user_ldap.po | 4 +- l10n/ta_LK/core.po | 90 ++-- l10n/ta_LK/files.po | 19 +- l10n/ta_LK/files_encryption.po | 5 +- l10n/ta_LK/files_external.po | 16 +- l10n/ta_LK/files_sharing.po | 5 +- l10n/ta_LK/files_trashbin.po | 4 +- l10n/ta_LK/files_versions.po | 7 +- l10n/ta_LK/lib.po | 58 ++- l10n/ta_LK/settings.po | 87 ++-- l10n/ta_LK/user_ldap.po | 5 +- l10n/te/core.po | 75 ++- l10n/te/files.po | 15 +- l10n/te/files_encryption.po | 4 +- l10n/te/files_external.po | 15 +- l10n/te/files_sharing.po | 4 +- l10n/te/files_trashbin.po | 4 +- l10n/te/files_versions.po | 4 +- l10n/te/lib.po | 55 +- l10n/te/settings.po | 81 +-- l10n/te/user_ldap.po | 4 +- l10n/templates/core.pot | 34 +- l10n/templates/files.pot | 58 +-- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 13 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 19 +- l10n/templates/settings.pot | 74 +-- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 84 ++- l10n/th_TH/files.po | 34 +- l10n/th_TH/files_encryption.po | 7 +- l10n/th_TH/files_external.po | 16 +- l10n/th_TH/files_sharing.po | 5 +- l10n/th_TH/files_trashbin.po | 5 +- l10n/th_TH/files_versions.po | 7 +- l10n/th_TH/lib.po | 62 ++- l10n/th_TH/settings.po | 119 +++-- l10n/th_TH/user_ldap.po | 5 +- l10n/tr/core.po | 50 +- l10n/tr/files.po | 35 +- l10n/tr/files_encryption.po | 6 +- l10n/tr/files_external.po | 21 +- l10n/tr/files_sharing.po | 7 +- l10n/tr/files_trashbin.po | 6 +- l10n/tr/files_versions.po | 7 +- l10n/tr/lib.po | 28 +- l10n/tr/settings.po | 93 ++-- l10n/tr/user_ldap.po | 48 +- l10n/uk/core.po | 86 ++- l10n/uk/files.po | 22 +- l10n/uk/files_encryption.po | 6 +- l10n/uk/files_external.po | 18 +- l10n/uk/files_sharing.po | 8 +- l10n/uk/files_trashbin.po | 5 +- l10n/uk/files_versions.po | 6 +- l10n/uk/lib.po | 60 ++- l10n/uk/settings.po | 86 +-- l10n/uk/user_ldap.po | 7 +- l10n/ur_PK/core.po | 75 ++- l10n/ur_PK/files.po | 16 +- l10n/ur_PK/files_encryption.po | 4 +- l10n/ur_PK/files_external.po | 15 +- l10n/ur_PK/files_sharing.po | 4 +- l10n/ur_PK/files_trashbin.po | 4 +- l10n/ur_PK/files_versions.po | 4 +- l10n/ur_PK/lib.po | 55 +- l10n/ur_PK/settings.po | 80 +-- l10n/ur_PK/user_ldap.po | 4 +- l10n/vi/core.po | 94 ++-- l10n/vi/files.po | 35 +- l10n/vi/files_encryption.po | 8 +- l10n/vi/files_external.po | 18 +- l10n/vi/files_sharing.po | 6 +- l10n/vi/files_trashbin.po | 5 +- l10n/vi/files_versions.po | 9 +- l10n/vi/lib.po | 63 ++- l10n/vi/settings.po | 119 +++-- l10n/vi/user_ldap.po | 7 +- l10n/zh_CN.GB2312/core.po | 89 ++-- l10n/zh_CN.GB2312/files.po | 38 +- l10n/zh_CN.GB2312/files_encryption.po | 5 +- l10n/zh_CN.GB2312/files_external.po | 17 +- l10n/zh_CN.GB2312/files_sharing.po | 5 +- l10n/zh_CN.GB2312/files_trashbin.po | 4 +- l10n/zh_CN.GB2312/files_versions.po | 6 +- l10n/zh_CN.GB2312/lib.po | 56 +- l10n/zh_CN.GB2312/settings.po | 101 ++-- l10n/zh_CN.GB2312/user_ldap.po | 5 +- l10n/zh_CN/core.po | 99 ++-- l10n/zh_CN/files.po | 37 +- l10n/zh_CN/files_encryption.po | 6 +- l10n/zh_CN/files_external.po | 18 +- l10n/zh_CN/files_sharing.po | 5 +- l10n/zh_CN/files_trashbin.po | 5 +- l10n/zh_CN/files_versions.po | 6 +- l10n/zh_CN/lib.po | 64 ++- l10n/zh_CN/settings.po | 96 ++-- l10n/zh_CN/user_ldap.po | 6 +- l10n/zh_HK/core.po | 76 ++- l10n/zh_HK/files.po | 15 +- l10n/zh_HK/files_encryption.po | 5 +- l10n/zh_HK/files_external.po | 15 +- l10n/zh_HK/files_sharing.po | 4 +- l10n/zh_HK/files_trashbin.po | 4 +- l10n/zh_HK/files_versions.po | 5 +- l10n/zh_HK/lib.po | 55 +- l10n/zh_HK/settings.po | 80 +-- l10n/zh_HK/user_ldap.po | 4 +- l10n/zh_TW/core.po | 69 ++- l10n/zh_TW/files.po | 25 +- l10n/zh_TW/files_encryption.po | 7 +- l10n/zh_TW/files_external.po | 48 +- l10n/zh_TW/files_sharing.po | 16 +- l10n/zh_TW/files_trashbin.po | 8 +- l10n/zh_TW/files_versions.po | 6 +- l10n/zh_TW/lib.po | 62 ++- l10n/zh_TW/settings.po | 94 ++-- l10n/zh_TW/user_ldap.po | 5 +- lib/api.php | 6 +- lib/base.php | 26 +- lib/files/cache/cache.php | 49 +- lib/files/cache/scanner.php | 2 +- lib/files/cache/storage.php | 59 --- lib/files/filesystem.php | 39 +- lib/files/{mount => }/mount.php | 106 +++- lib/files/mount/manager.php | 120 ----- lib/files/storage/common.php | 10 +- lib/files/storage/local.php | 517 +++++++++---------- lib/files/storage/storage.php | 5 - lib/files/view.php | 2 +- lib/l10n/ar.php | 5 +- lib/l10n/bg_BG.php | 3 + lib/l10n/bn_BD.php | 10 +- lib/l10n/ca.php | 5 +- lib/l10n/cs_CZ.php | 9 +- lib/l10n/cy_GB.php | 3 + lib/l10n/da.php | 13 +- lib/l10n/de.php | 11 +- lib/l10n/de_DE.php | 7 +- lib/l10n/el.php | 9 +- lib/l10n/eo.php | 11 +- lib/l10n/es.php | 7 +- lib/l10n/es_AR.php | 15 +- lib/l10n/et_EE.php | 9 +- lib/l10n/eu.php | 13 +- lib/l10n/fi_FI.php | 5 +- lib/l10n/fr.php | 7 +- lib/l10n/gl.php | 7 +- lib/l10n/he.php | 3 + lib/l10n/hr.php | 1 - lib/l10n/hu_HU.php | 9 +- lib/l10n/ia.php | 1 - lib/l10n/id.php | 3 + lib/l10n/is.php | 3 + lib/l10n/it.php | 9 +- lib/l10n/ja_JP.php | 13 +- lib/l10n/ka_GE.php | 3 + lib/l10n/ko.php | 3 + lib/l10n/ku_IQ.php | 1 - lib/l10n/lb.php | 2 - lib/l10n/lt_LT.php | 13 +- lib/l10n/lv.php | 3 + lib/l10n/mk.php | 5 +- lib/l10n/ms_MY.php | 1 - lib/l10n/my_MM.php | 3 + lib/l10n/nb_NO.php | 7 +- lib/l10n/nl.php | 3 + lib/l10n/nn_NO.php | 13 +- lib/l10n/oc.php | 4 +- lib/l10n/pl.php | 15 +- lib/l10n/pt_BR.php | 3 + lib/l10n/pt_PT.php | 11 +- lib/l10n/ro.php | 3 + lib/l10n/ru.php | 9 +- lib/l10n/ru_RU.php | 36 +- lib/l10n/si_LK.php | 7 +- lib/l10n/sk_SK.php | 5 +- lib/l10n/sl.php | 9 +- lib/l10n/sq.php | 5 +- lib/l10n/sr.php | 5 +- lib/l10n/sr@latin.php | 1 - lib/l10n/sv.php | 7 +- lib/l10n/ta_LK.php | 5 +- lib/l10n/th_TH.php | 9 +- lib/l10n/tr.php | 5 +- lib/l10n/uk.php | 3 + lib/l10n/vi.php | 7 +- lib/l10n/zh_CN.GB2312.php | 5 +- lib/l10n/zh_CN.php | 9 +- lib/l10n/zh_TW.php | 3 + lib/public/share.php | 2 +- lib/request.php | 13 +- lib/templatelayout.php | 73 +-- lib/updater.php | 46 +- lib/user.php | 2 +- lib/util.php | 32 +- ocs/routes.php | 74 +-- settings/js/personal.js | 3 - settings/l10n/ar.php | 13 +- settings/l10n/bg_BG.php | 1 - settings/l10n/bn_BD.php | 6 +- settings/l10n/ca.php | 11 +- settings/l10n/cs_CZ.php | 6 +- settings/l10n/da.php | 9 +- settings/l10n/de.php | 6 +- settings/l10n/de_DE.php | 10 +- settings/l10n/el.php | 10 +- settings/l10n/eo.php | 12 - settings/l10n/es.php | 14 +- settings/l10n/es_AR.php | 9 +- settings/l10n/et_EE.php | 6 +- settings/l10n/eu.php | 9 +- settings/l10n/fa.php | 14 +- settings/l10n/fi_FI.php | 8 +- settings/l10n/fr.php | 8 +- settings/l10n/gl.php | 4 +- settings/l10n/he.php | 9 +- settings/l10n/hr.php | 3 - settings/l10n/hu_HU.php | 5 +- settings/l10n/ia.php | 2 - settings/l10n/id.php | 9 +- settings/l10n/it.php | 6 +- settings/l10n/ja_JP.php | 13 +- settings/l10n/ka_GE.php | 8 +- settings/l10n/ko.php | 5 +- settings/l10n/lb.php | 9 - settings/l10n/lt_LT.php | 8 +- settings/l10n/lv.php | 5 +- settings/l10n/mk.php | 4 +- settings/l10n/ms_MY.php | 7 +- settings/l10n/nb_NO.php | 13 +- settings/l10n/nl.php | 18 +- settings/l10n/nn_NO.php | 97 +--- settings/l10n/oc.php | 7 - settings/l10n/pl.php | 7 +- settings/l10n/pt_BR.php | 16 +- settings/l10n/pt_PT.php | 13 +- settings/l10n/ro.php | 22 +- settings/l10n/ru.php | 12 +- settings/l10n/ru_RU.php | 67 ++- settings/l10n/si_LK.php | 17 +- settings/l10n/sk_SK.php | 10 +- settings/l10n/sl.php | 10 +- settings/l10n/sq.php | 3 +- settings/l10n/sr.php | 7 +- settings/l10n/sv.php | 13 +- settings/l10n/ta_LK.php | 6 +- settings/l10n/th_TH.php | 21 +- settings/l10n/tr.php | 7 +- settings/l10n/uk.php | 5 +- settings/l10n/vi.php | 21 +- settings/l10n/zh_CN.GB2312.php | 16 +- settings/l10n/zh_CN.php | 11 +- settings/l10n/zh_TW.php | 9 +- settings/personal.php | 15 +- settings/templates/admin.php | 3 +- settings/templates/personal.php | 7 +- tests/lib/files/mount.php | 58 +++ tests/lib/files/mount/manager.php | 67 --- tests/lib/streamwrappers.php | 4 +- 1091 files changed, 15493 insertions(+), 14231 deletions(-) delete mode 100644 apps/files_sharing/l10n/hi.php delete mode 100644 apps/files_sharing/l10n/hr.php delete mode 100644 apps/files_sharing/l10n/hy.php delete mode 100644 apps/files_sharing/l10n/ia.php delete mode 100644 apps/files_sharing/l10n/ms_MY.php delete mode 100644 apps/files_sharing/l10n/nn_NO.php delete mode 100644 apps/files_sharing/l10n/oc.php delete mode 100644 apps/files_sharing/l10n/sr@latin.php delete mode 100644 core/l10n/hy.php delete mode 100644 lib/files/cache/storage.php rename lib/files/{mount => }/mount.php (54%) delete mode 100644 lib/files/mount/manager.php create mode 100644 tests/lib/files/mount.php delete mode 100644 tests/lib/files/mount/manager.php diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 296e54e356..a2d17fae7d 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -115,11 +115,6 @@ $(document).ready(function() { return false; }); - // Trigger cancelling of file upload - $('#uploadprogresswrapper .stop').on('click', function() { - Files.cancelUploads(); - }); - // Show trash bin $('#trash a').live('click', function() { window.location=OC.filePath('files_trashbin', '', 'index.php'); diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php index a84adc3bb0..41e6a225a2 100644 --- a/apps/files/l10n/ar.php +++ b/apps/files/l10n/ar.php @@ -14,7 +14,7 @@ "Invalid directory." => "مسار غير صحيح.", "Files" => "الملفات", "Delete permanently" => "حذف بشكل دائم", -"Delete" => "إلغاء", +"Delete" => "محذوف", "Rename" => "إعادة تسميه", "Pending" => "قيد الانتظار", "{new_name} already exists" => "{new_name} موجود مسبقا", @@ -37,14 +37,14 @@ "URL cannot be empty." => "عنوان ال URL لا يجوز أن يكون فارغا.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "إسم مجلد غير صحيح. استخدام مصطلح \"Shared\" محجوز للنظام", "Error" => "خطأ", -"Name" => "اسم", +"Name" => "الاسم", "Size" => "حجم", "Modified" => "معدل", "1 folder" => "مجلد عدد 1", "{count} folders" => "{count} مجلدات", "1 file" => "ملف واحد", "{count} files" => "{count} ملفات", -"Upload" => "رفع", +"Upload" => "إرفع", "File handling" => "التعامل مع الملف", "Maximum upload size" => "الحد الأقصى لحجم الملفات التي يمكن رفعها", "max. possible: " => "الحد الأقصى المسموح به", diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php index 09e01745a4..c4bbca36f4 100644 --- a/apps/files/l10n/bg_BG.php +++ b/apps/files/l10n/bg_BG.php @@ -1,8 +1,4 @@ "Файлът е качен успешно", -"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" => "Файлът е качен частично", -"No file was uploaded" => "Фахлът не бе качен", "Missing a temporary folder" => "Липсва временна папка", "Failed to write to disk" => "Възникна проблем при запис в диска", "Invalid directory." => "Невалидна директория.", @@ -33,7 +29,5 @@ "Cancel upload" => "Спри качването", "Nothing in here. Upload something!" => "Няма нищо тук. Качете нещо.", "Download" => "Изтегляне", -"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." => "Файловете се претърсват, изчакайте." +"Upload too large" => "Файлът който сте избрали за качване е прекалено голям" ); diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php index 42c78ab347..640430716f 100644 --- a/apps/files/l10n/bn_BD.php +++ b/apps/files/l10n/bn_BD.php @@ -2,18 +2,17 @@ "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" => "কোন সমস্যা হয় নি, ফাইল আপলোড সুসম্পন্ন হয়েছে।", +"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 নির্দেশিত আয়তন অতিক্রম করছেঃ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "আপলোড করা ফাইলটি HTML ফর্মে উল্লিখিত MAX_FILE_SIZE নির্ধারিত ফাইলের সর্বোচ্চ আকার অতিক্রম করতে চলেছে ", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "আপলোড করা ফাইলটি HTML ফর্মে নির্ধারিত MAX_FILE_SIZE নির্দেশিত সর্বোচ্চ আকার অতিক্রম করেছে ", "The uploaded file was only partially uploaded" => "আপলোড করা ফাইলটি আংশিক আপলোড করা হয়েছে", "No file was uploaded" => "কোন ফাইল আপলোড করা হয় নি", -"Missing a temporary folder" => "অস্থায়ী ফোল্ডারটি হারানো গিয়েছে", +"Missing a temporary folder" => "অস্থায়ী ফোল্ডার খোয়া গিয়েছে", "Failed to write to disk" => "ডিস্কে লিখতে ব্যর্থ", "Invalid directory." => "ভুল ডিরেক্টরি", "Files" => "ফাইল", -"Share" => "ভাগাভাগি কর", -"Delete" => "মুছে", +"Delete" => "মুছে ফেল", "Rename" => "পূনঃনামকরণ", "Pending" => "মুলতুবি", "{new_name} already exists" => "{new_name} টি বিদ্যমান", @@ -33,7 +32,7 @@ "URL cannot be empty." => "URL ফাঁকা রাখা যাবে না।", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ফোল্ডারের নামটি সঠিক নয়। 'ভাগাভাগি করা' শুধুমাত্র Owncloud এর জন্য সংরক্ষিত।", "Error" => "সমস্যা", -"Name" => "রাম", +"Name" => "নাম", "Size" => "আকার", "Modified" => "পরিবর্তিত", "1 folder" => "১টি ফোল্ডার", @@ -48,7 +47,7 @@ "Enable ZIP-download" => "ZIP ডাউনলোড সক্রিয় কর", "0 is unlimited" => "০ এর অর্থ অসীম", "Maximum input size for ZIP files" => "ZIP ফাইলের ইনপুটের সর্বোচ্চ আকার", -"Save" => "সংরক্ষণ", +"Save" => "সংরক্ষন কর", "New" => "নতুন", "Text file" => "টেক্সট ফাইল", "Folder" => "ফোল্ডার", diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index a294fbdce4..d92dbeef67 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -3,20 +3,20 @@ "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" => "No hi ha errors, el fitxer s'ha carregat correctament", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El fitxer carregat supera la directiva MAX_FILE_SIZE especificada al formulari HTML", -"The uploaded file was only partially uploaded" => "El fitxer només s'ha carregat parcialment", -"No file was uploaded" => "No s'ha carregat cap fitxer", -"Missing a temporary folder" => "Falta un fitxer temporal", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El fitxer de pujada excedeix la directiva MAX_FILE_SIZE especificada al formulari HTML", +"The uploaded file was only partially uploaded" => "El fitxer només s'ha pujat parcialment", +"No file was uploaded" => "El fitxer no s'ha pujat", +"Missing a temporary folder" => "S'ha perdut un fitxer temporal", "Failed to write to disk" => "Ha fallat en escriure al disc", "Not enough storage available" => "No hi ha prou espai disponible", "Invalid directory." => "Directori no vàlid.", "Files" => "Fitxers", "Delete permanently" => "Esborra permanentment", -"Delete" => "Esborra", +"Delete" => "Suprimeix", "Rename" => "Reanomena", -"Pending" => "Pendent", +"Pending" => "Pendents", "{new_name} already exists" => "{new_name} ja existeix", "replace" => "substitueix", "suggest name" => "sugereix un nom", @@ -55,7 +55,7 @@ "0 is unlimited" => "0 és sense límit", "Maximum input size for ZIP files" => "Mida màxima d'entrada per fitxers ZIP", "Save" => "Desa", -"New" => "Nova", +"New" => "Nou", "Text file" => "Fitxer de text", "Folder" => "Carpeta", "From link" => "Des d'enllaç", diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index b434da7f28..66c748fbaa 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -16,7 +16,7 @@ "Delete permanently" => "Trvale odstranit", "Delete" => "Smazat", "Rename" => "Přejmenovat", -"Pending" => "Nevyřízené", +"Pending" => "Čekající", "{new_name} already exists" => "{new_name} již existuje", "replace" => "nahradit", "suggest name" => "navrhnout název", @@ -32,7 +32,7 @@ "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 je jeho velikost 0 bajtů", +"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ů", "Not enough space available" => "Nedostatek dostupného místa", "Upload cancelled." => "Odesílání zrušeno.", "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í.", @@ -41,7 +41,7 @@ "Error" => "Chyba", "Name" => "Název", "Size" => "Velikost", -"Modified" => "Upraveno", +"Modified" => "Změněno", "1 folder" => "1 složka", "{count} folders" => "{count} složky", "1 file" => "1 soubor", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Žádný obsah. Nahrajte něco.", "Download" => "Stáhnout", "Unshare" => "Zrušit sdílení", -"Upload too large" => "Odesílaný soubor je příliš velký", +"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í", diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index ff590aa9a3..7c065952ae 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -3,17 +3,16 @@ "Could not move %s" => "Kunne ikke flytte %s", "Unable to rename file" => "Kunne ikke omdøbe fil", "No file was uploaded. Unknown error" => "Ingen fil blev uploadet. Ukendt fejl.", -"There is no error, the file uploaded with success" => "Der skete ingen fejl, filen blev succesfuldt uploadet", +"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", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overstiger MAX_FILE_SIZE indstilingen, som specificeret i HTML formularen", -"The uploaded file was only partially uploaded" => "Filen blev kun delvist uploadet.", -"No file was uploaded" => "Ingen fil uploadet", -"Missing a temporary folder" => "Manglende midlertidig mappe.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overskrider MAX_FILE_SIZE -direktivet som er specificeret i HTML-formularen", +"The uploaded file was only partially uploaded" => "Den uploadede file blev kun delvist uploadet", +"No file was uploaded" => "Ingen fil blev uploadet", +"Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Fejl ved skrivning til disk.", "Not enough storage available" => "Der er ikke nok plads til rådlighed", "Invalid directory." => "Ugyldig mappe.", "Files" => "Filer", -"Share" => "Del", "Delete permanently" => "Slet permanent", "Delete" => "Slet", "Rename" => "Omdøb", @@ -26,15 +25,13 @@ "undo" => "fortryd", "perform delete operation" => "udfør slet operation", "1 file uploading" => "1 fil uploades", -"files uploading" => "uploader filer", "'.' 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" => "Kan ikke uploade din fil - det er enten en mappe eller en fil med et indhold på 0 bytes.", -"Not enough space available" => "ikke nok tilgængelig ledig plads ", +"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 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.", @@ -66,7 +63,7 @@ "Nothing in here. Upload something!" => "Her er tomt. Upload noget!", "Download" => "Download", "Unshare" => "Fjern deling", -"Upload too large" => "Upload er for stor", +"Upload too large" => "Upload for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload på denne server.", "Files are being scanned, please wait." => "Filerne bliver indlæst, vent venligst.", "Current scanning" => "Indlæser", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index f8ad5993af..34f0233486 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -3,18 +3,17 @@ "Could not move %s" => "%s konnte nicht verschoben werden", "Unable to rename file" => "Die Datei konnte nicht umbenannt werden", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", -"There is no error, the file uploaded with success" => "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich übertragen.", +"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", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Datei ist größer, als die MAX_FILE_SIZE Direktive erlaubt, die im HTML-Formular spezifiziert ist", -"The uploaded file was only partially uploaded" => "Die Datei konnte nur teilweise übertragen werden", -"No file was uploaded" => "Keine Datei konnte übertragen werden.", -"Missing a temporary folder" => "Kein temporärer Ordner vorhanden", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde", +"The uploaded file was only partially uploaded" => "Die Datei wurde nur teilweise hochgeladen.", +"No file was uploaded" => "Es wurde keine Datei hochgeladen.", +"Missing a temporary folder" => "Temporärer Ordner fehlt.", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" => "Nicht genug Speicherplatz verfügbar", "Invalid directory." => "Ungültiges Verzeichnis.", "Files" => "Dateien", -"Share" => "Teilen", -"Delete permanently" => "Endgültig löschen", +"Delete permanently" => "Permanent löschen", "Delete" => "Löschen", "Rename" => "Umbenennen", "Pending" => "Ausstehend", @@ -42,7 +41,7 @@ "Error" => "Fehler", "Name" => "Name", "Size" => "Größe", -"Modified" => "Geändert", +"Modified" => "Bearbeitet", "1 folder" => "1 Ordner", "{count} folders" => "{count} Ordner", "1 file" => "1 Datei", @@ -64,9 +63,9 @@ "Cancel upload" => "Upload abbrechen", "You don’t have write permissions here." => "Du besitzt hier keine Schreib-Berechtigung.", "Nothing in here. Upload something!" => "Alles leer. Lade etwas hoch!", -"Download" => "Download", -"Unshare" => "Freigabe aufheben", -"Upload too large" => "Der Upload ist zu groß", +"Download" => "Herunterladen", +"Unshare" => "Nicht mehr freigeben", +"Upload too large" => "Upload zu groß", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", "Files are being scanned, please wait." => "Dateien werden gescannt, bitte warten.", "Current scanning" => "Scanne", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php index 8a977710a2..8fc1c106d0 100644 --- a/apps/files/l10n/de_DE.php +++ b/apps/files/l10n/de_DE.php @@ -5,16 +5,15 @@ "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 der php.ini:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Datei ist größer, als die MAX_FILE_SIZE Direktive erlaubt, die im HTML-Formular spezifiziert ist", -"The uploaded file was only partially uploaded" => "Die Datei konnte nur teilweise übertragen werden", -"No file was uploaded" => "Keine Datei konnte übertragen werden.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde", +"The uploaded file was only partially uploaded" => "Die Datei wurde nur teilweise hochgeladen.", +"No file was uploaded" => "Es wurde keine Datei hochgeladen.", "Missing a temporary folder" => "Der temporäre Ordner fehlt.", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", "Not enough storage available" => "Nicht genug Speicher vorhanden.", "Invalid directory." => "Ungültiges Verzeichnis.", "Files" => "Dateien", -"Share" => "Teilen", -"Delete permanently" => "Endgültig löschen", +"Delete permanently" => "Entgültig löschen", "Delete" => "Löschen", "Rename" => "Umbenennen", "Pending" => "Ausstehend", @@ -33,7 +32,7 @@ "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, weil es sich um einen Ordner handelt oder 0 Bytes groß ist.", +"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.", "Not enough space available" => "Nicht genügend Speicherplatz verfügbar", "Upload cancelled." => "Upload abgebrochen.", "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.", diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index 8ecb84eb3c..60d63c4142 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -5,7 +5,7 @@ "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", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Το ανεβασμένο αρχείο υπερβαίνει το MAX_FILE_SIZE που ορίζεται στην HTML φόρμα", +"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" => "Το αρχείο εστάλει μόνο εν μέρει", "No file was uploaded" => "Κανένα αρχείο δεν στάλθηκε", "Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος", @@ -46,7 +46,7 @@ "{count} folders" => "{count} φάκελοι", "1 file" => "1 αρχείο", "{count} files" => "{count} αρχεία", -"Upload" => "Μεταφόρτωση", +"Upload" => "Αποστολή", "File handling" => "Διαχείριση αρχείων", "Maximum upload size" => "Μέγιστο μέγεθος αποστολής", "max. possible: " => "μέγιστο δυνατό:", @@ -64,7 +64,7 @@ "You don’t have write permissions here." => "Δεν έχετε δικαιώματα εγγραφής εδώ.", "Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Ανεβάστε κάτι!", "Download" => "Λήψη", -"Unshare" => "Σταμάτημα διαμοιρασμού", +"Unshare" => "Διακοπή κοινής χρήσης", "Upload too large" => "Πολύ μεγάλο αρχείο προς αποστολή", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος αποστολής αρχείων σε αυτόν τον διακομιστή.", "Files are being scanned, please wait." => "Τα αρχεία σαρώνονται, παρακαλώ περιμένετε.", diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index 35683a35f1..3435f43059 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -3,12 +3,12 @@ "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.", +"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: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "La dosiero alŝutita superas la regulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo", -"The uploaded file was only partially uploaded" => "la alŝutita dosiero nur parte alŝutiĝis", -"No file was uploaded" => "Neniu dosiero alŝutiĝis.", -"Missing a temporary folder" => "Mankas provizora dosierujo.", +"The uploaded file was only partially uploaded" => "La alŝutita dosiero nur parte alŝutiĝis", +"No file was uploaded" => "Neniu dosiero estas alŝutita", +"Missing a temporary folder" => "Mankas tempa dosierujo", "Failed to write to disk" => "Malsukcesis skribo al disko", "Invalid directory." => "Nevalida dosierujo.", "Files" => "Dosieroj", @@ -22,7 +22,6 @@ "replaced {new_name} with {old_name}" => "anstataŭiĝis {new_name} per {old_name}", "undo" => "malfari", "1 file uploading" => "1 dosiero estas alŝutata", -"files uploading" => "dosieroj estas alŝutataj", "'.' is an invalid file name." => "'.' ne estas valida dosiernomo.", "File name cannot be empty." => "Dosiernomo devas ne malpleni.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nevalida nomo: “\\”, “/”, “<”, “>”, “:”, “\"”, “|”, “?” kaj “*” ne permesatas.", @@ -58,7 +57,7 @@ "Nothing in here. Upload something!" => "Nenio estas ĉi tie. Alŝutu ion!", "Download" => "Elŝuti", "Unshare" => "Malkunhavigi", -"Upload too large" => "Alŝuto tro larĝa", +"Upload too large" => "Elŝuto tro larĝa", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "La dosieroj, kiujn vi provas alŝuti, transpasas la maksimuman grandon por dosieralŝutoj en ĉi tiu servilo.", "Files are being scanned, please wait." => "Dosieroj estas skanataj, bonvolu atendi.", "Current scanning" => "Nuna skano" diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index ff782d0c64..e231abe429 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -2,13 +2,13 @@ "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" => "No se subió ningún archivo. Error desconocido", -"There is no error, the file uploaded with success" => "No hay ningún error, el archivo se ha subido con éxito", +"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", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo subido sobrepasa la directiva MAX_FILE_SIZE especificada en el formulario HTML", -"The uploaded file was only partially uploaded" => "El archivo se ha subido parcialmente", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo que intentas subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML", +"The uploaded file was only partially uploaded" => "El archivo que intentas subir solo se subió parcialmente", "No file was uploaded" => "No se ha subido ningún archivo", -"Missing a temporary folder" => "Falta la carpeta temporal", +"Missing a temporary folder" => "Falta un directorio temporal", "Failed to write to disk" => "La escritura en disco ha fallado", "Not enough storage available" => "No hay suficiente espacio disponible", "Invalid directory." => "Directorio invalido.", @@ -16,7 +16,7 @@ "Delete permanently" => "Eliminar permanentemente", "Delete" => "Eliminar", "Rename" => "Renombrar", -"Pending" => "Pendientes", +"Pending" => "Pendiente", "{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", @@ -32,7 +32,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Su almacenamiento esta lleno, los archivos no pueden ser mas actualizados o sincronizados!", "Your storage is almost full ({usedSpacePercent}%)" => "Su almacenamiento esta lleno en un ({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" => "Imposible subir su archivo, es un directorio o tiene 0 bytes", +"Unable to upload your file as it is a directory or has 0 bytes" => "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes", "Not enough space available" => "No hay suficiente espacio disponible", "Upload cancelled." => "Subida cancelada.", "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.", @@ -64,8 +64,8 @@ "You don’t have write permissions here." => "No tienes permisos para escribir aquí.", "Nothing in here. Upload something!" => "Aquí no hay nada. ¡Sube algo!", "Download" => "Descargar", -"Unshare" => "No compartir", -"Upload too large" => "bida demasido grande", +"Unshare" => "Dejar de compartir", +"Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor.", "Files are being scanned, please wait." => "Se están escaneando los archivos, por favor espere.", "Current scanning" => "Ahora escaneando", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index 3248c241db..25c2f4ff69 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -3,12 +3,12 @@ "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 hay errores, el archivo fue subido con éxito", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo subido sobrepasa el valor MAX_FILE_SIZE especificada en el formulario HTML", -"The uploaded file was only partially uploaded" => "El archivo fue subido parcialmente", -"No file was uploaded" => "No se subió ningún archivo ", -"Missing a temporary folder" => "Error en la carpera temporal", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo que intentás subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML", +"The uploaded file was only partially uploaded" => "El archivo que intentás subir solo se subió parcialmente", +"No file was uploaded" => "El archivo no fue subido", +"Missing a temporary folder" => "Falta un directorio temporal", "Failed to write to disk" => "Error al escribir en el disco", "Not enough storage available" => "No hay suficiente capacidad de almacenamiento", "Invalid directory." => "Directorio invalido.", @@ -16,7 +16,7 @@ "Delete permanently" => "Borrar de manera permanente", "Delete" => "Borrar", "Rename" => "Cambiar nombre", -"Pending" => "Pendientes", +"Pending" => "Pendiente", "{new_name} already exists" => "{new_name} ya existe", "replace" => "reemplazar", "suggest name" => "sugerir nombre", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "No hay nada. ¡Subí contenido!", "Download" => "Descargar", "Unshare" => "Dejar de compartir", -"Upload too large" => "El tamaño del archivo que querés subir es demasiado grande", +"Upload too large" => "El archivo es demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que intentás subir sobrepasan el tamaño máximo ", "Files are being scanned, please wait." => "Se están escaneando los archivos, por favor esperá.", "Current scanning" => "Escaneo actual", diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index fa48cb2cc4..64a2f71b27 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -3,9 +3,9 @@ "Could not move %s" => "%s liigutamine ebaõnnestus", "Unable to rename file" => "Faili ümbernimetamine ebaõnnestus", "No file was uploaded. Unknown error" => "Ühtegi faili ei laetud üles. Tundmatu viga", -"There is no error, the file uploaded with success" => "Ühtegi tõrget polnud, fail on üles laetud", +"There is no error, the file uploaded with success" => "Ühtegi viga pole, fail on üles laetud", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Üleslaetava faili suurus ületab php.ini poolt määratud upload_max_filesize suuruse", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Üleslaetud fail ületab MAX_FILE_SIZE suuruse, mis on HTML vormi jaoks määratud", +"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", "The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt", "No file was uploaded" => "Ühtegi faili ei laetud üles", "Missing a temporary folder" => "Ajutiste failide kaust puudub", @@ -32,7 +32,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Sinu andmemaht on täis! Faile ei uuendata ja sünkroniseerimist ei toimu!", "Your storage is almost full ({usedSpacePercent}%)" => "Su andmemaht on peaaegu täis ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Valmistatakse allalaadimist. See võib võtta veidi aega kui on tegu suurte failidega. ", -"Unable to upload your file as it is a directory or has 0 bytes" => "Faili ei saa üles laadida, kuna see on kaust või selle suurus on 0 baiti", +"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", "Not enough space available" => "Pole piisavalt ruumi", "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.", diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php index 7d938cffd2..8c244babf0 100644 --- a/apps/files/l10n/eu.php +++ b/apps/files/l10n/eu.php @@ -3,12 +3,12 @@ "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 errorerik egon, fitxategia ongi igo da", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategia HTML formularioan zehaztutako MAX_FILE_SIZE direktiba baino handidagoa da.", -"The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat bakarrik igo da", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategiaren tamaina HTML inprimakiko MAX_FILESIZE direktiban adierazitakoa baino handiagoa da", +"The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat baino gehiago ez da igo", "No file was uploaded" => "Ez da fitxategirik igo", -"Missing a temporary folder" => "Aldi bateko karpeta falta da", +"Missing a temporary folder" => "Aldi baterako karpeta falta da", "Failed to write to disk" => "Errore bat izan da diskoan idazterakoan", "Not enough storage available" => "Ez dago behar aina leku erabilgarri,", "Invalid directory." => "Baliogabeko karpeta.", @@ -25,14 +25,13 @@ "undo" => "desegin", "perform delete operation" => "Ezabatu", "1 file uploading" => "fitxategi 1 igotzen", -"files uploading" => "fitxategiak igotzen", "'.' 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 izan da zure fitxategia igo karpeta bat delako edo 0 byte dituelako", +"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", "Not enough space available" => "Ez dago leku nahikorik.", "Upload cancelled." => "Igoera ezeztatuta", "File upload is in progress. Leaving the page now will cancel the upload." => "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.", @@ -65,7 +64,7 @@ "Nothing in here. Upload something!" => "Ez dago ezer. Igo zerbait!", "Download" => "Deskargatu", "Unshare" => "Ez elkarbanatu", -"Upload too large" => "Igoera handiegia da", +"Upload too large" => "Igotakoa handiegia da", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira.", "Files are being scanned, please wait." => "Fitxategiak eskaneatzen ari da, itxoin mezedez.", "Current scanning" => "Orain eskaneatzen ari da", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index 10132fdf9e..13ef465199 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -3,19 +3,18 @@ "Could not move %s" => "%s نمی تواند حرکت کند ", "Unable to rename file" => "قادر به تغییر نام پرونده نیست.", "No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس", -"There is no error, the file uploaded with success" => "هیچ خطایی نیست بارگذاری پرونده موفقیت آمیز بود", +"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 MAX_FILE_SIZE است", -"The uploaded file was only partially uploaded" => "پرونده بارگذاری شده فقط تاحدودی بارگذاری شده", -"No file was uploaded" => "هیچ پروندهای بارگذاری نشده", -"Missing a temporary folder" => "یک پوشه موقت گم شده", +"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 storage available" => "فضای کافی در دسترس نیست", "Invalid directory." => "فهرست راهنما نامعتبر می باشد.", -"Files" => "پرونده‌ها", -"Share" => "اشتراک‌گذاری", +"Files" => "فایل ها", "Delete permanently" => "حذف قطعی", -"Delete" => "حذف", +"Delete" => "پاک کردن", "Rename" => "تغییرنام", "Pending" => "در انتظار", "{new_name} already exists" => "{نام _جدید} در حال حاضر وجود دارد.", @@ -42,12 +41,12 @@ "Error" => "خطا", "Name" => "نام", "Size" => "اندازه", -"Modified" => "تاریخ", +"Modified" => "تغییر یافته", "1 folder" => "1 پوشه", "{count} folders" => "{ شمار} پوشه ها", "1 file" => "1 پرونده", "{count} files" => "{ شمار } فایل ها", -"Upload" => "بارگزاری", +"Upload" => "بارگذاری", "File handling" => "اداره پرونده ها", "Maximum upload size" => "حداکثر اندازه بارگزاری", "max. possible: " => "حداکثرمقدارممکن:", @@ -64,9 +63,9 @@ "Cancel upload" => "متوقف کردن بار گذاری", "You don’t have write permissions here." => "شما اجازه ی نوشتن در اینجا را ندارید", "Nothing in here. Upload something!" => "اینجا هیچ چیز نیست.", -"Download" => "دانلود", +"Download" => "بارگیری", "Unshare" => "لغو اشتراک", -"Upload too large" => "سایز فایل برای آپلود زیاد است(م.تنظیمات در php.ini)", +"Upload too large" => "حجم بارگذاری بسیار زیاد است", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "فایلها بیش از حد تعیین شده در این سرور هستند\nمترجم:با تغییر فایل php,ini میتوان این محدودیت را برطرف کرد", "Files are being scanned, please wait." => "پرونده ها در حال بازرسی هستند لطفا صبر کنید", "Current scanning" => "بازرسی کنونی", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index 08a0718323..b797273d51 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -4,16 +4,14 @@ "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 upload_max_filesize directive in php.ini: " => "Lähetetyn tiedoston koko ylittää php.ini-tiedoston upload_max_filesize-säännön:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ladattavan tiedoston maksimikoko ylittää MAX_FILE_SIZE dirketiivin, joka on määritelty HTML-lomakkeessa", +"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", "The uploaded file was only partially uploaded" => "Tiedoston lähetys onnistui vain osittain", "No file was uploaded" => "Yhtäkään tiedostoa ei lähetetty", -"Missing a temporary folder" => "Tilapäiskansio puuttuu", +"Missing a temporary folder" => "Väliaikaiskansiota ei ole olemassa", "Failed to write to disk" => "Levylle kirjoitus epäonnistui", "Not enough storage available" => "Tallennustilaa ei ole riittävästi käytettävissä", "Invalid directory." => "Virheellinen kansio.", "Files" => "Tiedostot", -"Share" => "Jaa", "Delete permanently" => "Poista pysyvästi", "Delete" => "Poista", "Rename" => "Nimeä uudelleen", @@ -30,7 +28,7 @@ "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.", +"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", "Not enough space available" => "Tilaa ei ole riittävästi", "Upload cancelled." => "Lähetys peruttu.", "File upload is in progress. Leaving the page now will cancel the upload." => "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.", @@ -38,7 +36,7 @@ "Error" => "Virhe", "Name" => "Nimi", "Size" => "Koko", -"Modified" => "Muokattu", +"Modified" => "Muutettu", "1 folder" => "1 kansio", "{count} folders" => "{count} kansiota", "1 file" => "1 tiedosto", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index f901e6c2f7..093a0b891c 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -3,12 +3,12 @@ "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" => "Il n'y a pas d'erreur, le fichier a été envoyé avec succes.", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Le fichier envoyé dépasse la directive MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.", -"The uploaded file was only partially uploaded" => "Le fichier envoyé n'a été que partiellement envoyé.", -"No file was uploaded" => "Pas de fichier envoyé.", -"Missing a temporary folder" => "Absence de dossier temporaire.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Le fichier téléversé excède la valeur de MAX_FILE_SIZE spécifiée dans le formulaire HTML", +"The uploaded file was only partially uploaded" => "Le fichier n'a été que partiellement téléversé", +"No file was uploaded" => "Aucun fichier n'a été téléversé", +"Missing a temporary folder" => "Il manque un répertoire temporaire", "Failed to write to disk" => "Erreur d'écriture sur le disque", "Not enough storage available" => "Plus assez d'espace de stockage disponible", "Invalid directory." => "Dossier invalide.", @@ -16,7 +16,7 @@ "Delete permanently" => "Supprimer de façon définitive", "Delete" => "Supprimer", "Rename" => "Renommer", -"Pending" => "En attente", +"Pending" => "En cours", "{new_name} already exists" => "{new_name} existe déjà", "replace" => "remplacer", "suggest name" => "Suggérer un nom", @@ -32,7 +32,7 @@ "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 téléverser votre fichier dans la mesure où il s'agit d'un répertoire ou d'un fichier de taille nulle", +"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.", "Not enough space available" => "Espace disponible insuffisant", "Upload cancelled." => "Chargement annulé.", "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.", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Download" => "Télécharger", "Unshare" => "Ne plus partager", -"Upload too large" => "Téléversement trop volumineux", +"Upload too large" => "Fichier trop volumineux", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur.", "Files are being scanned, please wait." => "Les fichiers sont en cours d'analyse, veuillez patienter.", "Current scanning" => "Analyse en cours", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index c371684313..14992f5838 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -2,13 +2,13 @@ "Could not move %s - File with this name already exists" => "Non se moveu %s - Xa existe un ficheiro con ese nome.", "Could not move %s" => "Non foi posíbel mover %s", "Unable to rename file" => "Non é posíbel renomear o ficheiro", -"No file was uploaded. Unknown error" => "Non se enviou ningún ficheiro. Produciuse un erro descoñecido.", -"There is no error, the file uploaded with success" => "Non houbo erros, o ficheiro enviouse correctamente", +"No file was uploaded. Unknown error" => "Non foi enviado ningún ficheiro. Produciuse un erro descoñecido.", +"There is no error, the file uploaded with success" => "Non se produciu ningún erro. O ficheiro enviouse correctamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede a directiva indicada por upload_max_filesize de php.ini:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado excede da directiva MAX_FILE_SIZE especificada no formulario HTML", -"The uploaded file was only partially uploaded" => "O ficheiro so foi parcialmente enviado", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado excede a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", +"The uploaded file was only partially uploaded" => "O ficheiro enviado foi só parcialmente enviado", "No file was uploaded" => "Non se enviou ningún ficheiro", -"Missing a temporary folder" => "Falta o cartafol temporal", +"Missing a temporary folder" => "Falta un cartafol temporal", "Failed to write to disk" => "Produciuse un erro ao escribir no disco", "Not enough storage available" => "Non hai espazo de almacenamento abondo", "Invalid directory." => "O directorio é incorrecto.", diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 3facc4f859..36ba7cc5de 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -1,11 +1,11 @@ "לא הועלה קובץ. טעות בלתי מזוהה.", -"There is no error, the file uploaded with success" => "לא התרחשה שגיאה, הקובץ הועלה בהצלחה", +"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", -"The uploaded file was only partially uploaded" => "הקובץ הועלה באופן חלקי בלבד", -"No file was uploaded" => "שום קובץ לא הועלה", -"Missing a temporary folder" => "תקיה זמנית חסרה", +"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" => "הקובץ שהועלה הועלה בצורה חלקית", +"No file was uploaded" => "לא הועלו קבצים", +"Missing a temporary folder" => "תיקייה זמנית חסרה", "Failed to write to disk" => "הכתיבה לכונן נכשלה", "Files" => "קבצים", "Delete permanently" => "מחק לצמיתות", diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php index d634faee75..a6b83b3d67 100644 --- a/apps/files/l10n/hr.php +++ b/apps/files/l10n/hr.php @@ -1,13 +1,12 @@ "Nema pogreške, datoteka je poslana uspješno.", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka prelazi veličinu prikazanu u MAX_FILE_SIZE direktivi u HTML formi", -"The uploaded file was only partially uploaded" => "Poslana datoteka je parcijalno poslana", -"No file was uploaded" => "Datoteka nije poslana", -"Missing a temporary folder" => "Nedostaje privremeni direktorij", +"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", +"No file was uploaded" => "Ni jedna datoteka nije poslana", +"Missing a temporary folder" => "Nedostaje privremena mapa", "Failed to write to disk" => "Neuspjelo pisanje na disk", "Files" => "Datoteke", -"Share" => "Podijeli", -"Delete" => "Obriši", +"Delete" => "Briši", "Rename" => "Promjeni ime", "Pending" => "U tijeku", "replace" => "zamjeni", @@ -15,15 +14,14 @@ "cancel" => "odustani", "undo" => "vrati", "1 file uploading" => "1 datoteka se učitava", -"files uploading" => "datoteke se učitavaju", "Unable to upload your file as it is a directory or has 0 bytes" => "Nemoguće poslati datoteku jer je prazna ili je direktorij", "Upload 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" => "Greška", -"Name" => "Ime", +"Name" => "Naziv", "Size" => "Veličina", "Modified" => "Zadnja promjena", -"Upload" => "Učitaj", +"Upload" => "Pošalji", "File handling" => "datoteka za rukovanje", "Maximum upload size" => "Maksimalna veličina prijenosa", "max. possible: " => "maksimalna moguća: ", @@ -37,8 +35,8 @@ "Folder" => "mapa", "Cancel upload" => "Prekini upload", "Nothing in here. Upload something!" => "Nema ničega u ovoj mapi. Pošalji nešto!", -"Download" => "Preuzimanje", -"Unshare" => "Makni djeljenje", +"Download" => "Preuzmi", +"Unshare" => "Prekini djeljenje", "Upload too large" => "Prijenos je preobiman", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke koje pokušavate prenijeti prelaze maksimalnu veličinu za prijenos datoteka na ovom poslužitelju.", "Files are being scanned, please wait." => "Datoteke se skeniraju, molimo pričekajte.", diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 9a4e519969..103523b65f 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -7,7 +7,7 @@ "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.", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "A feltöltött fájl mérete meghaladja a MAX_FILE_SIZE paramétert, ami a HTML formban került megadásra.", "The uploaded file was only partially uploaded" => "Az eredeti fájlt csak részben sikerült feltölteni.", -"No file was uploaded" => "Nem töltődött fel állomány", +"No file was uploaded" => "Nem töltődött fel semmi", "Missing a temporary folder" => "Hiányzik egy ideiglenes mappa", "Failed to write to disk" => "Nem sikerült a lemezre történő írás", "Not enough storage available" => "Nincs elég szabad hely.", @@ -64,7 +64,7 @@ "You don’t have write permissions here." => "Itt nincs írásjoga.", "Nothing in here. Upload something!" => "Itt nincs semmi. Töltsön fel valamit!", "Download" => "Letöltés", -"Unshare" => "A megosztás visszavonása", +"Unshare" => "Megosztás visszavonása", "Upload too large" => "A feltöltés túl nagy", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "A feltöltendő állományok mérete meghaladja a kiszolgálón megengedett maximális méretet.", "Files are being scanned, please wait." => "A fájllista ellenőrzése zajlik, kis türelmet!", diff --git a/apps/files/l10n/ia.php b/apps/files/l10n/ia.php index 457f771e46..b3233cc37d 100644 --- a/apps/files/l10n/ia.php +++ b/apps/files/l10n/ia.php @@ -1,6 +1,6 @@ "Le file incargate solmente esseva incargate partialmente", -"No file was uploaded" => "Nulle file esseva incargate.", +"No file was uploaded" => "Nulle file esseva incargate", "Missing a temporary folder" => "Manca un dossier temporari", "Files" => "Files", "Delete" => "Deler", diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php index 187ccfc67f..3894ce0de9 100644 --- a/apps/files/l10n/id.php +++ b/apps/files/l10n/id.php @@ -2,7 +2,7 @@ "Could not move %s - File with this name already exists" => "Tidak dapat memindahkan %s - Berkas dengan nama ini sudah ada", "Could not move %s" => "Tidak dapat memindahkan %s", "Unable to rename file" => "Tidak dapat mengubah nama berkas", -"No file was uploaded. Unknown error" => "Tidak ada berkas yang diunggah. Galat tidak dikenal.", +"No file was uploaded. Unknown error" => "Tidak ada berkas yang diunggah. Galat tidak dikenal", "There is no error, the file uploaded with success" => "Tidak ada galat, berkas sukses diunggah", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Berkas yang diunggah melampaui direktif upload_max_filesize pada php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Berkas yang diunggah melampaui direktif MAX_FILE_SIZE yang ditentukan dalam formulir HTML.", @@ -32,7 +32,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Ruang penyimpanan Anda penuh, berkas tidak dapat diperbarui atau disinkronkan lagi!", "Your storage is almost full ({usedSpacePercent}%)" => "Ruang penyimpanan hampir penuh ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Unduhan Anda sedang disiapkan. Prosesnya dapat berlangsung agak lama jika ukuran berkasnya besar.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Gagal mengunggah berkas Anda karena berupa direktori atau mempunyai ukuran 0 byte", +"Unable to upload your file as it is a directory or has 0 bytes" => "Gagal mengunggah berkas Anda karena berupa direktori atau ukurannya 0 byte", "Not enough space available" => "Ruang penyimpanan tidak mencukupi", "Upload cancelled." => "Pengunggahan dibatalkan.", "File upload is in progress. Leaving the page now will cancel the upload." => "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", "Download" => "Unduh", "Unshare" => "Batalkan berbagi", -"Upload too large" => "Yang diunggah terlalu besar", +"Upload too large" => "Unggahan terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Berkas yang dicoba untuk diunggah melebihi ukuran maksimum pengunggahan berkas di server ini.", "Files are being scanned, please wait." => "Berkas sedang dipindai, silakan tunggu.", "Current scanning" => "Yang sedang dipindai", diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index 9f54b2efb9..20819e2564 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -3,12 +3,12 @@ "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, il file è stato caricato correttamente", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Il file inviato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", -"The uploaded file was only partially uploaded" => "Il file è stato caricato solo parzialmente", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Il file caricato supera il valore MAX_FILE_SIZE definito nel form HTML", +"The uploaded file was only partially uploaded" => "Il file è stato parzialmente caricato", "No file was uploaded" => "Nessun file è stato caricato", -"Missing a temporary folder" => "Manca una cartella temporanea", +"Missing a temporary folder" => "Cartella temporanea mancante", "Failed to write to disk" => "Scrittura su disco non riuscita", "Not enough storage available" => "Spazio di archiviazione insufficiente", "Invalid directory." => "Cartella non valida.", @@ -32,7 +32,7 @@ "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 caricare il file poiché è una cartella o ha una dimensione di 0 byte", +"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", "Not enough space available" => "Spazio disponibile insufficiente", "Upload cancelled." => "Invio annullato", "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.", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", "Download" => "Scarica", "Unshare" => "Rimuovi condivisione", -"Upload too large" => "Caricamento troppo grande", +"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", diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index afc2f54b6d..402a9f33b3 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -5,10 +5,10 @@ "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 に設定されたサイズを超えています:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "アップロードファイルはHTMLフォームで指定された MAX_FILE_SIZE の制限を超えています", -"The uploaded file was only partially uploaded" => "アップロードファイルは一部分だけアップロードされました", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "アップロードされたファイルはHTMLのフォームに設定されたMAX_FILE_SIZEに設定されたサイズを超えています", +"The uploaded file was only partially uploaded" => "ファイルは一部分しかアップロードされませんでした", "No file was uploaded" => "ファイルはアップロードされませんでした", -"Missing a temporary folder" => "一時保存フォルダが見つかりません", +"Missing a temporary folder" => "テンポラリフォルダが見つかりません", "Failed to write to disk" => "ディスクへの書き込みに失敗しました", "Not enough storage available" => "ストレージに十分な空き容量がありません", "Invalid directory." => "無効なディレクトリです。", @@ -16,7 +16,7 @@ "Delete permanently" => "完全に削除する", "Delete" => "削除", "Rename" => "名前の変更", -"Pending" => "中断", +"Pending" => "保留", "{new_name} already exists" => "{new_name} はすでに存在しています", "replace" => "置き換え", "suggest name" => "推奨名称", @@ -41,7 +41,7 @@ "Error" => "エラー", "Name" => "名前", "Size" => "サイズ", -"Modified" => "変更", +"Modified" => "更新日時", "1 folder" => "1 フォルダ", "{count} folders" => "{count} フォルダ", "1 file" => "1 ファイル", @@ -64,8 +64,8 @@ "You don’t have write permissions here." => "あなたには書き込み権限がありません。", "Nothing in here. Upload something!" => "ここには何もありません。何かアップロードしてください。", "Download" => "ダウンロード", -"Unshare" => "共有解除", -"Upload too large" => "アップロードには大きすぎます。", +"Unshare" => "共有しない", +"Upload too large" => "ファイルサイズが大きすぎます", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードしようとしているファイルは、サーバで規定された最大サイズを超えています。", "Files are being scanned, please wait." => "ファイルをスキャンしています、しばらくお待ちください。", "Current scanning" => "スキャン中", diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php index 82b9c5df93..6ea75a2ea9 100644 --- a/apps/files/l10n/ka_GE.php +++ b/apps/files/l10n/ka_GE.php @@ -64,7 +64,7 @@ "You don’t have write permissions here." => "თქვენ არ გაქვთ ჩაწერის უფლება აქ.", "Nothing in here. Upload something!" => "აქ არაფერი არ არის. ატვირთე რამე!", "Download" => "ჩამოტვირთვა", -"Unshare" => "გაუზიარებადი", +"Unshare" => "გაზიარების მოხსნა", "Upload too large" => "ასატვირთი ფაილი ძალიან დიდია", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ფაილის ზომა რომლის ატვირთვასაც თქვენ აპირებთ, აჭარბებს სერვერზე დაშვებულ მაქსიმუმს.", "Files are being scanned, please wait." => "მიმდინარეობს ფაილების სკანირება, გთხოვთ დაელოდოთ.", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index c35bdd115e..88378bb486 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -3,24 +3,24 @@ "Could not move %s" => "%s 항목을 이딩시키지 못하였음", "Unable to rename file" => "파일 이름바꾸기 할 수 없음", "No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다", -"There is no error, the file uploaded with success" => "파일 업로드에 성공하였습니다.", +"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보다 큽니다:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "업로드한 파일 크기가 HTML 폼의 MAX_FILE_SIZE보다 큼", -"The uploaded file was only partially uploaded" => "파일의 일부분만 업로드됨", -"No file was uploaded" => "파일이 업로드되지 않았음", -"Missing a temporary folder" => "임시 폴더가 없음", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "업로드한 파일이 HTML 문서에 지정한 MAX_FILE_SIZE보다 더 큼", +"The uploaded file was only partially uploaded" => "파일이 부분적으로 업로드됨", +"No file was uploaded" => "업로드된 파일 없음", +"Missing a temporary folder" => "임시 폴더가 사라짐", "Failed to write to disk" => "디스크에 쓰지 못했습니다", "Invalid directory." => "올바르지 않은 디렉터리입니다.", "Files" => "파일", "Delete" => "삭제", "Rename" => "이름 바꾸기", -"Pending" => "대기 중", +"Pending" => "보류 중", "{new_name} already exists" => "{new_name}이(가) 이미 존재함", "replace" => "바꾸기", "suggest name" => "이름 제안", "cancel" => "취소", "replaced {new_name} with {old_name}" => "{old_name}이(가) {new_name}(으)로 대체됨", -"undo" => "되돌리기", +"undo" => "실행 취소", "1 file uploading" => "파일 1개 업로드 중", "'.' is an invalid file name." => "'.' 는 올바르지 않은 파일 이름 입니다.", "File name cannot be empty." => "파일 이름이 비어 있을 수 없습니다.", @@ -28,7 +28,7 @@ "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" => "디렉터리 및 빈 파일은 업로드할 수 없습니다", +"Unable to upload your file as it is a directory or has 0 bytes" => "이 파일은 디렉터리이거나 비어 있기 때문에 업로드할 수 없습니다", "Not enough space available" => "여유 공간이 부족합니다", "Upload cancelled." => "업로드가 취소되었습니다.", "File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.", @@ -59,7 +59,7 @@ "Nothing in here. Upload something!" => "내용이 없습니다. 업로드할 수 있습니다!", "Download" => "다운로드", "Unshare" => "공유 해제", -"Upload too large" => "업로드한 파일이 너무 큼", +"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" => "현재 검색", diff --git a/apps/files/l10n/lb.php b/apps/files/l10n/lb.php index 948a114acc..6533a12308 100644 --- a/apps/files/l10n/lb.php +++ b/apps/files/l10n/lb.php @@ -2,7 +2,7 @@ "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", -"No file was uploaded" => "Et ass kee Fichier ropgeluede ginn", +"No file was uploaded" => "Et ass keng Datei ropgelueden ginn", "Missing a temporary folder" => "Et feelt en temporären Dossier", "Failed to write to disk" => "Konnt net op den Disk schreiwen", "Files" => "Dateien", @@ -31,7 +31,7 @@ "Folder" => "Dossier", "Cancel upload" => "Upload ofbriechen", "Nothing in here. Upload something!" => "Hei ass näischt. Lued eppes rop!", -"Download" => "Download", +"Download" => "Eroflueden", "Unshare" => "Net méi deelen", "Upload too large" => "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 199b6978ce..750500a3d5 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -1,8 +1,8 @@ "Failas įkeltas sėkmingai, be klaidų", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE nustatymą, kuris naudojamas HTML formoje.", +"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", -"No file was uploaded" => "Nebuvo įkeltas joks failas", +"No file was uploaded" => "Nebuvo įkeltas nė vienas failas", "Missing a temporary folder" => "Nėra laikinojo katalogo", "Failed to write to disk" => "Nepavyko įrašyti į diską", "Files" => "Failai", @@ -44,7 +44,7 @@ "Download" => "Atsisiųsti", "Unshare" => "Nebesidalinti", "Upload too large" => "Įkėlimui failas per didelis", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis viršija maksimalų, kuris leidžiamas šiame serveryje", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis viršija maksimalų leidžiamą šiame serveryje", "Files are being scanned, please wait." => "Skenuojami failai, prašome palaukti.", "Current scanning" => "Šiuo metu skenuojama" ); diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 99304be9e0..1292514547 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -3,7 +3,7 @@ "Could not move %s" => "Nevarēja pārvietot %s", "Unable to rename file" => "Nevarēja pārsaukt datni", "No file was uploaded. Unknown error" => "Netika augšupielādēta neviena datne. Nezināma kļūda", -"There is no error, the file uploaded with success" => "Viss kārtībā, datne augšupielādēta veiksmīga", +"There is no error, the file uploaded with success" => "Augšupielāde pabeigta bez kļūdām", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Augšupielādētā datne pārsniedz upload_max_filesize norādījumu php.ini datnē:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Augšupielādētā datne pārsniedz MAX_FILE_SIZE norādi, kas ir norādīta HTML formā", "The uploaded file was only partially uploaded" => "Augšupielādētā datne ir tikai daļēji augšupielādēta", @@ -31,7 +31,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Jūsu krātuve ir pilna, datnes vairs nevar augšupielādēt vai sinhronizēt!", "Your storage is almost full ({usedSpacePercent}%)" => "Jūsu krātuve ir gandrīz pilna ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Tiek sagatavota lejupielāde. Tas var aizņemt kādu laiciņu, ja datnes ir lielas.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Nevar augšupielādēt jūsu datni, jo tā ir direktorija vai arī tā ir 0 baitu liela", +"Unable to upload your file as it is a directory or has 0 bytes" => "Nevar augšupielādēt jūsu datni, jo tā ir direktorija vai arī tās izmērs ir 0 baiti", "Not enough space available" => "Nepietiek brīvas vietas", "Upload cancelled." => "Augšupielāde ir atcelta.", "File upload is in progress. Leaving the page now will cancel the upload." => "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.", diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php index 32e7eadb93..78fed25cf9 100644 --- a/apps/files/l10n/mk.php +++ b/apps/files/l10n/mk.php @@ -1,11 +1,11 @@ "Ниту еден фајл не се вчита. Непозната грешка", -"There is no error, the file uploaded with success" => "Датотеката беше успешно подигната.", +"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 формата", +"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" => "Датотеката беше само делумно подигната.", -"No file was uploaded" => "Не беше подигната датотека.", -"Missing a temporary folder" => "Недостасува привремена папка", +"No file was uploaded" => "Не беше подигната датотека", +"Missing a temporary folder" => "Не постои привремена папка", "Failed to write to disk" => "Неуспеав да запишам на диск", "Files" => "Датотеки", "Delete" => "Избриши", @@ -48,7 +48,7 @@ "Nothing in here. Upload something!" => "Тука нема ништо. Снимете нешто!", "Download" => "Преземи", "Unshare" => "Не споделувај", -"Upload too large" => "Фајлот кој се вчитува е преголем", +"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" => "Моментално скенирам" diff --git a/apps/files/l10n/ms_MY.php b/apps/files/l10n/ms_MY.php index 2ce4f16332..a390288b36 100644 --- a/apps/files/l10n/ms_MY.php +++ b/apps/files/l10n/ms_MY.php @@ -1,13 +1,12 @@ "Tiada fail dimuatnaik. Ralat tidak diketahui.", -"There is no error, the file uploaded with success" => "Tiada ralat berlaku, fail berjaya dimuatnaik", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Saiz fail yang dimuatnaik melebihi MAX_FILE_SIZE yang ditetapkan dalam borang HTML", -"The uploaded file was only partially uploaded" => "Fail yang dimuatnaik tidak lengkap", -"No file was uploaded" => "Tiada fail dimuatnaik", -"Missing a temporary folder" => "Direktori sementara hilang", +"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 ", +"The uploaded file was only partially uploaded" => "Sebahagian daripada fail telah dimuat naik. ", +"No file was uploaded" => "Tiada fail yang dimuat naik", +"Missing a temporary folder" => "Folder sementara hilang", "Failed to write to disk" => "Gagal untuk disimpan", -"Files" => "Fail-fail", -"Share" => "Kongsi", +"Files" => "fail", "Delete" => "Padam", "Pending" => "Dalam proses", "replace" => "ganti", @@ -15,7 +14,7 @@ "Unable to upload your file as it is a directory or has 0 bytes" => "Tidak boleh memuatnaik fail anda kerana mungkin ianya direktori atau saiz fail 0 bytes", "Upload cancelled." => "Muatnaik dibatalkan.", "Error" => "Ralat", -"Name" => "Nama", +"Name" => "Nama ", "Size" => "Saiz", "Modified" => "Dimodifikasi", "Upload" => "Muat naik", @@ -33,7 +32,7 @@ "Cancel upload" => "Batal muat naik", "Nothing in here. Upload something!" => "Tiada apa-apa di sini. Muat naik sesuatu!", "Download" => "Muat turun", -"Upload too large" => "Muatnaik terlalu besar", +"Upload too large" => "Muat naik terlalu besar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server", "Files are being scanned, please wait." => "Fail sedang diimbas, harap bersabar.", "Current scanning" => "Imbasan semasa" diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php index 98f91b3eb5..54042c9124 100644 --- a/apps/files/l10n/nb_NO.php +++ b/apps/files/l10n/nb_NO.php @@ -1,10 +1,10 @@ "Ingen filer ble lastet opp. Ukjent feil.", -"There is no error, the file uploaded with success" => "Pust ut, ingen feil. Filen ble lastet opp problemfritt", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filen du prøvde å laste opp var større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet.", -"The uploaded file was only partially uploaded" => "Filen du prøvde å laste opp ble kun delvis lastet opp", -"No file was uploaded" => "Ingen filer ble lastet opp", -"Missing a temporary folder" => "Mangler midlertidig mappe", +"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", +"The uploaded file was only partially uploaded" => "Filopplastningen ble bare delvis gjennomført", +"No file was uploaded" => "Ingen fil ble lastet opp", +"Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Klarte ikke å skrive til disk", "Files" => "Filer", "Delete permanently" => "Slett permanent", @@ -18,7 +18,6 @@ "replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}", "undo" => "angre", "1 file uploading" => "1 fil lastes opp", -"files uploading" => "filer lastes opp", "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 cancelled." => "Opplasting avbrutt.", @@ -49,7 +48,7 @@ "Nothing in here. Upload something!" => "Ingenting her. Last opp noe!", "Download" => "Last ned", "Unshare" => "Avslutt deling", -"Upload too large" => "Filen er for stor", +"Upload too large" => "Opplasting for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er for store for å laste opp til denne serveren.", "Files are being scanned, please wait." => "Skanner etter filer, vennligst vent.", "Current scanning" => "Pågående skanning" diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php index b9a05fdf23..38b55d34d9 100644 --- a/apps/files/l10n/nl.php +++ b/apps/files/l10n/nl.php @@ -3,12 +3,12 @@ "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" => "De upload van het bestand is goedgegaan.", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Het bestand overschrijdt de MAX_FILE_SIZE instelling dat is opgegeven in het HTML formulier", -"The uploaded file was only partially uploaded" => "Het bestand is gedeeltelijk geüpload", -"No file was uploaded" => "Er is geen bestand geüpload", -"Missing a temporary folder" => "Er ontbreekt een tijdelijke map", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Het geüploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in de HTML-formulier", +"The uploaded file was only partially uploaded" => "Het bestand is slechts gedeeltelijk geupload", +"No file was uploaded" => "Geen bestand geüpload", +"Missing a temporary folder" => "Een tijdelijke map mist", "Failed to write to disk" => "Schrijven naar schijf mislukt", "Not enough storage available" => "Niet genoeg opslagruimte beschikbaar", "Invalid directory." => "Ongeldige directory.", @@ -16,7 +16,7 @@ "Delete permanently" => "Verwijder definitief", "Delete" => "Verwijder", "Rename" => "Hernoem", -"Pending" => "In behandeling", +"Pending" => "Wachten", "{new_name} already exists" => "{new_name} bestaat al", "replace" => "vervang", "suggest name" => "Stel een naam voor", @@ -32,7 +32,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Uw opslagruimte zit vol, Bestanden kunnen niet meer worden ge-upload of gesynchroniseerd!", "Your storage is almost full ({usedSpacePercent}%)" => "Uw opslagruimte zit bijna vol ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Uw download wordt voorbereid. Dit kan enige tijd duren bij grote bestanden.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Het lukt niet om uw bestand te uploaded, omdat het een folder of 0 bytes is", +"Unable to upload your file as it is a directory or has 0 bytes" => "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes", "Not enough space available" => "Niet genoeg ruimte beschikbaar", "Upload cancelled." => "Uploaden geannuleerd.", "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.", @@ -40,13 +40,13 @@ "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud", "Error" => "Fout", "Name" => "Naam", -"Size" => "Grootte", -"Modified" => "Aangepast", +"Size" => "Bestandsgrootte", +"Modified" => "Laatst aangepast", "1 folder" => "1 map", "{count} folders" => "{count} mappen", "1 file" => "1 bestand", "{count} files" => "{count} bestanden", -"Upload" => "Uploaden", +"Upload" => "Upload", "File handling" => "Bestand", "Maximum upload size" => "Maximale bestandsgrootte voor uploads", "max. possible: " => "max. mogelijk: ", @@ -54,7 +54,7 @@ "Enable ZIP-download" => "Zet ZIP-download aan", "0 is unlimited" => "0 is ongelimiteerd", "Maximum input size for ZIP files" => "Maximale grootte voor ZIP bestanden", -"Save" => "Bewaren", +"Save" => "Opslaan", "New" => "Nieuw", "Text file" => "Tekstbestand", "Folder" => "Map", @@ -63,9 +63,9 @@ "Cancel upload" => "Upload afbreken", "You don’t have write permissions here." => "U hebt hier geen schrijfpermissies.", "Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", -"Download" => "Downloaden", -"Unshare" => "Stop met delen", -"Upload too large" => "Upload is te groot", +"Download" => "Download", +"Unshare" => "Stop delen", +"Upload too large" => "Bestanden te groot", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server.", "Files are being scanned, please wait." => "Bestanden worden gescand, even wachten.", "Current scanning" => "Er wordt gescand", diff --git a/apps/files/l10n/nn_NO.php b/apps/files/l10n/nn_NO.php index 2042e7bf8a..8f32dc012e 100644 --- a/apps/files/l10n/nn_NO.php +++ b/apps/files/l10n/nn_NO.php @@ -1,74 +1,23 @@ "Klarte ikkje å flytta %s – det finst allereie ei fil med dette namnet", -"Could not move %s" => "Klarte ikkje å flytta %s", -"Unable to rename file" => "Klarte ikkje å endra filnamnet", -"No file was uploaded. Unknown error" => "Ingen filer lasta opp. Ukjend feil", "There is no error, the file uploaded with success" => "Ingen feil, fila vart lasta opp", -"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fila du lasta opp er større enn det «upload_max_filesize» i php.ini tillater: ", "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", "No file was uploaded" => "Ingen filer vart lasta opp", "Missing a temporary folder" => "Manglar ei mellombels mappe", -"Failed to write to disk" => "Klarte ikkje å skriva til disk", -"Not enough storage available" => "Ikkje nok lagringsplass tilgjengeleg", -"Invalid directory." => "Ugyldig mappe.", "Files" => "Filer", -"Share" => "Del", -"Delete permanently" => "Slett for godt", "Delete" => "Slett", -"Rename" => "Endra namn", -"Pending" => "Under vegs", -"{new_name} already exists" => "{new_name} finst allereie", -"replace" => "byt ut", -"suggest name" => "føreslå namn", -"cancel" => "avbryt", -"replaced {new_name} with {old_name}" => "bytte ut {new_name} med {old_name}", -"undo" => "angre", -"perform delete operation" => "utfør sletting", -"1 file uploading" => "1 fil lastar opp", -"files uploading" => "filer lastar opp", -"'.' is an invalid file name." => "«.» er eit ugyldig filnamn.", -"File name cannot be empty." => "Filnamnet kan ikkje vera tomt.", -"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldig namn, «\\», «/», «<», «>», «:», «\"», «|», «?» og «*» er ikkje tillate.", -"Your storage is full, files can not be updated or synced anymore!" => "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!", -"Your storage is almost full ({usedSpacePercent}%)" => "Lagringa di er nesten full ({usedSpacePercent} %)", -"Your download is being prepared. This might take some time if the files are big." => "Gjer klar nedlastinga di. Dette kan ta ei stund viss filene er store.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Klarte ikkje å lasta opp fila sidan ho er ei mappe eller er på 0 byte", -"Not enough space available" => "Ikkje nok lagringsplass tilgjengeleg", -"Upload cancelled." => "Opplasting avbroten.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Fila lastar no opp. Viss du forlèt sida no vil opplastinga bli avbroten.", -"URL cannot be empty." => "URL-en kan ikkje vera tom.", -"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldig mappenamn. Mappa «Shared» er reservert av ownCloud", "Error" => "Feil", "Name" => "Namn", "Size" => "Storleik", "Modified" => "Endra", -"1 folder" => "1 mappe", -"{count} folders" => "{count} mapper", -"1 file" => "1 fil", -"{count} files" => "{count} filer", "Upload" => "Last opp", -"File handling" => "Filhandtering", "Maximum upload size" => "Maksimal opplastingsstorleik", -"max. possible: " => "maks. moglege:", -"Needed for multi-file and folder downloads." => "Naudsynt for fleirfils- og mappenedlastingar.", -"Enable ZIP-download" => "Skru på ZIP-nedlasting", -"0 is unlimited" => "0 er ubegrensa", -"Maximum input size for ZIP files" => "Maksimal storleik for ZIP-filer", "Save" => "Lagre", "New" => "Ny", "Text file" => "Tekst fil", "Folder" => "Mappe", -"From link" => "Frå lenkje", -"Deleted files" => "Sletta filer", -"Cancel upload" => "Avbryt opplasting", -"You don’t have write permissions here." => "Du har ikkje skriverettar her.", "Nothing in here. Upload something!" => "Ingenting her. Last noko opp!", "Download" => "Last ned", -"Unshare" => "Udel", "Upload too large" => "For stor opplasting", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er større enn maksgrensa til denne tenaren.", -"Files are being scanned, please wait." => "Skannar filer, ver venleg og vent.", -"Current scanning" => "Køyrande skanning", -"Upgrading filesystem cache..." => "Oppgraderer mellomlageret av filsystemet …" +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er større enn maksgrensa til denne tenaren." ); diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php index 03b46444b6..b1ef621658 100644 --- a/apps/files/l10n/oc.php +++ b/apps/files/l10n/oc.php @@ -14,7 +14,6 @@ "cancel" => "anulla", "undo" => "defar", "1 file uploading" => "1 fichièr al amontcargar", -"files uploading" => "fichièrs al amontcargar", "Unable to upload your file as it is a directory or has 0 bytes" => "Impossible d'amontcargar lo teu fichièr qu'es un repertòri o que ten pas que 0 octet.", "Upload cancelled." => "Amontcargar anullat.", "File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ", @@ -37,7 +36,7 @@ "Cancel upload" => " Anulla l'amontcargar", "Nothing in here. Upload something!" => "Pas res dedins. Amontcarga qualquaren", "Download" => "Avalcarga", -"Unshare" => "Pas partejador", +"Unshare" => "Non parteja", "Upload too large" => "Amontcargament tròp gròs", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor.", "Files are being scanned, please wait." => "Los fiichièrs son a èsser explorats, ", diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php index 8b7f665cee..e9a78e2f44 100644 --- a/apps/files/l10n/pl.php +++ b/apps/files/l10n/pl.php @@ -3,12 +3,12 @@ "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" => "Żaden plik nie został załadowany. Nieznany błąd", -"There is no error, the file uploaded with success" => "Nie było błędów, plik wysłano poprawnie.", +"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: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Wysłany plik przekracza wielkość dyrektywy MAX_FILE_SIZE określonej w formularzu HTML", "The uploaded file was only partially uploaded" => "Załadowany plik został wysłany tylko częściowo.", -"No file was uploaded" => "Nie wysłano żadnego pliku", -"Missing a temporary folder" => "Brak folderu tymczasowego", +"No file was uploaded" => "Nie przesłano żadnego pliku", +"Missing a temporary folder" => "Brak katalogu tymczasowego", "Failed to write to disk" => "Błąd zapisu na dysk", "Not enough storage available" => "Za mało dostępnego miejsca", "Invalid directory." => "Zła ścieżka.", @@ -46,7 +46,7 @@ "{count} folders" => "Ilość folderów: {count}", "1 file" => "1 plik", "{count} files" => "Ilość plików: {count}", -"Upload" => "Wyślij", +"Upload" => "Prześlij", "File handling" => "Zarządzanie plikami", "Maximum upload size" => "Maksymalny rozmiar wysyłanego pliku", "max. possible: " => "maks. możliwy:", @@ -57,15 +57,15 @@ "Save" => "Zapisz", "New" => "Nowy", "Text file" => "Plik tekstowy", -"Folder" => "Folder", +"Folder" => "Katalog", "From link" => "Z odnośnika", "Deleted files" => "Pliki usunięte", "Cancel upload" => "Anuluj wysyłanie", "You don’t have write permissions here." => "Nie masz uprawnień do zapisu w tym miejscu.", "Nothing in here. Upload something!" => "Pusto. Wyślij coś!", "Download" => "Pobierz", -"Unshare" => "Zatrzymaj współdzielenie", -"Upload too large" => "Ładowany plik jest za duży", +"Unshare" => "Nie udostępniaj", +"Upload too large" => "Wysyłany plik ma za duży rozmiar", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "Files are being scanned, please wait." => "Skanowanie plików, proszę czekać.", "Current scanning" => "Aktualnie skanowane", diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index bd038806d2..ad8f37c24f 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -3,11 +3,11 @@ "Could not move %s" => "Impossível mover %s", "Unable to rename file" => "Impossível renomear arquivo", "No file was uploaded. Unknown error" => "Nenhum arquivo foi enviado. Erro desconhecido", -"There is no error, the file uploaded with success" => "Sem erros, o arquivo foi enviado com sucesso", +"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: ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o argumento MAX_FILE_SIZE especificado no formulário HTML", -"The uploaded file was only partially uploaded" => "O arquivo foi parcialmente enviado", -"No file was uploaded" => "Nenhum arquivo enviado", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML", +"The uploaded file was only partially uploaded" => "O arquivo foi transferido parcialmente", +"No file was uploaded" => "Nenhum arquivo foi transferido", "Missing a temporary folder" => "Pasta temporária não encontrada", "Failed to write to disk" => "Falha ao escrever no disco", "Not enough storage available" => "Espaço de armazenamento insuficiente", @@ -46,7 +46,7 @@ "{count} folders" => "{count} pastas", "1 file" => "1 arquivo", "{count} files" => "{count} arquivos", -"Upload" => "Upload", +"Upload" => "Carregar", "File handling" => "Tratamento de Arquivo", "Maximum upload size" => "Tamanho máximo para carregar", "max. possible: " => "max. possível:", @@ -54,7 +54,7 @@ "Enable ZIP-download" => "Habilitar ZIP-download", "0 is unlimited" => "0 para ilimitado", "Maximum input size for ZIP files" => "Tamanho máximo para arquivo ZIP", -"Save" => "Guardar", +"Save" => "Salvar", "New" => "Novo", "Text file" => "Arquivo texto", "Folder" => "Pasta", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Nada aqui.Carrege alguma coisa!", "Download" => "Baixar", "Unshare" => "Descompartilhar", -"Upload too large" => "Upload muito grande", +"Upload too large" => "Arquivo muito grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor.", "Files are being scanned, please wait." => "Arquivos sendo escaneados, por favor aguarde.", "Current scanning" => "Scanning atual", diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index b799a4b81a..c06108cf2b 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -3,18 +3,18 @@ "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" => "Não ocorreram erros, o ficheiro foi submetido com sucesso", +"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", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O tamanho do ficheiro carregado ultrapassa o valor MAX_FILE_SIZE definido no formulário HTML", -"The uploaded file was only partially uploaded" => "O ficheiro seleccionado foi apenas carregado parcialmente", -"No file was uploaded" => "Nenhum ficheiro foi submetido", -"Missing a temporary folder" => "Está a faltar a pasta temporária", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado excede o diretivo MAX_FILE_SIZE especificado no formulário HTML", +"The uploaded file was only partially uploaded" => "O ficheiro enviado só foi enviado parcialmente", +"No file was uploaded" => "Não foi enviado nenhum ficheiro", +"Missing a temporary folder" => "Falta uma pasta temporária", "Failed to write to disk" => "Falhou a escrita no disco", "Not enough storage available" => "Não há espaço suficiente em disco", "Invalid directory." => "Directório Inválido", "Files" => "Ficheiros", "Delete permanently" => "Eliminar permanentemente", -"Delete" => "Eliminar", +"Delete" => "Apagar", "Rename" => "Renomear", "Pending" => "Pendente", "{new_name} already exists" => "O nome {new_name} já existe", @@ -46,11 +46,11 @@ "{count} folders" => "{count} pastas", "1 file" => "1 ficheiro", "{count} files" => "{count} ficheiros", -"Upload" => "Carregar", +"Upload" => "Enviar", "File handling" => "Manuseamento de ficheiros", "Maximum upload size" => "Tamanho máximo de envio", "max. possible: " => "max. possivel: ", -"Needed for multi-file and folder downloads." => "Necessário para multi download de ficheiros e pastas", +"Needed for multi-file and folder downloads." => "Necessário para descarregamento múltiplo de ficheiros e pastas", "Enable ZIP-download" => "Permitir descarregar em ficheiro ZIP", "0 is unlimited" => "0 é ilimitado", "Maximum input size for ZIP files" => "Tamanho máximo para ficheiros ZIP", @@ -65,8 +65,8 @@ "Nothing in here. Upload something!" => "Vazio. Envie alguma coisa!", "Download" => "Transferir", "Unshare" => "Deixar de partilhar", -"Upload too large" => "Upload muito grande", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiro que está a tentar enviar excedem o tamanho máximo de envio neste servidor.", +"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", "Upgrading filesystem cache..." => "Atualizar cache do sistema de ficheiros..." diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index b2b6ee4963..e3cab80fbc 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -3,18 +3,15 @@ "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" => "Nu a apărut nici o eroare, fișierul a fost încărcat cu succes", +"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: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Fișierul are o dimensiune mai mare decât variabile MAX_FILE_SIZE specificată în formularul HTML", "The uploaded file was only partially uploaded" => "Fișierul a fost încărcat doar parțial", -"No file was uploaded" => "Nu a fost încărcat nici un fișier", -"Missing a temporary folder" => "Lipsește un director temporar", +"No file was uploaded" => "Niciun fișier încărcat", +"Missing a temporary folder" => "Lipsește un dosar temporar", "Failed to write to disk" => "Eroare la scriere pe disc", -"Not enough storage available" => "Nu este suficient spațiu disponibil", "Invalid directory." => "Director invalid.", "Files" => "Fișiere", -"Share" => "Partajează", -"Delete permanently" => "Stergere permanenta", "Delete" => "Șterge", "Rename" => "Redenumire", "Pending" => "În așteptare", @@ -24,14 +21,10 @@ "cancel" => "anulare", "replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}", "undo" => "Anulează ultima acțiune", -"perform delete operation" => "efectueaza operatiunea de stergere", "1 file uploading" => "un fișier se încarcă", -"files uploading" => "fișiere se încarcă", "'.' 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 storage is full, files can not be updated or synced anymore!" => "Spatiul de stocare este plin, nu mai puteti incarca s-au sincroniza alte fisiere.", -"Your storage is almost full ({usedSpacePercent}%)" => "Spatiul de stocare este aproape plin ({usedSpacePercent}%)", "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.", "Not enough space available" => "Nu este suficient spațiu disponibil", @@ -47,7 +40,7 @@ "{count} folders" => "{count} foldare", "1 file" => "1 fisier", "{count} files" => "{count} fisiere", -"Upload" => "Încărcare", +"Upload" => "Încarcă", "File handling" => "Manipulare fișiere", "Maximum upload size" => "Dimensiune maximă admisă la încărcare", "max. possible: " => "max. posibil:", @@ -55,20 +48,17 @@ "Enable ZIP-download" => "Activează descărcare fișiere compresate", "0 is unlimited" => "0 e nelimitat", "Maximum input size for ZIP files" => "Dimensiunea maximă de intrare pentru fișiere compresate", -"Save" => "Salvează", +"Save" => "Salvare", "New" => "Nou", "Text file" => "Fișier text", "Folder" => "Dosar", "From link" => "de la adresa", -"Deleted files" => "Sterge fisierele", "Cancel upload" => "Anulează încărcarea", -"You don’t have write permissions here." => "Nu ai permisiunea de a sterge fisiere aici.", "Nothing in here. Upload something!" => "Nimic aici. Încarcă ceva!", "Download" => "Descarcă", -"Unshare" => "Anulare partajare", +"Unshare" => "Anulează partajarea", "Upload too large" => "Fișierul încărcat este prea mare", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fișierul care l-ai încărcat a depășită limita maximă admisă la încărcare pe acest server.", "Files are being scanned, please wait." => "Fișierele sunt scanate, te rog așteptă.", -"Current scanning" => "În curs de scanare", -"Upgrading filesystem cache..." => "Modernizare fisiere de sistem cache.." +"Current scanning" => "În curs de scanare" ); diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index 1bf3b174b8..37f2e083c4 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -3,12 +3,12 @@ "Could not move %s" => "Невозможно переместить %s", "Unable to rename file" => "Невозможно переименовать файл", "No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка", -"There is no error, the file uploaded with success" => "Файл загружен успешно.", +"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", -"The uploaded file was only partially uploaded" => "Файл загружен частично", +"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" => "Файл был загружен не полностью", "No file was uploaded" => "Файл не был загружен", -"Missing a temporary folder" => "Отсутствует временная папка", +"Missing a temporary folder" => "Невозможно найти временную папку", "Failed to write to disk" => "Ошибка записи на диск", "Not enough storage available" => "Недостаточно доступного места в хранилище", "Invalid directory." => "Неправильный каталог.", @@ -25,28 +25,27 @@ "undo" => "отмена", "perform delete operation" => "выполняется операция удаления", "1 file uploading" => "загружается 1 файл", -"files uploading" => "файлы загружаются", "'.' 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 байт либо это не файл, а директория.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Не удается загрузить файл размером 0 байт в каталог", "Not enough space available" => "Недостаточно свободного места", "Upload cancelled." => "Загрузка отменена.", "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' зарезервировано.", "Error" => "Ошибка", -"Name" => "Имя", +"Name" => "Название", "Size" => "Размер", "Modified" => "Изменён", "1 folder" => "1 папка", "{count} folders" => "{count} папок", "1 file" => "1 файл", "{count} files" => "{count} файлов", -"Upload" => "Загрузка", +"Upload" => "Загрузить", "File handling" => "Управление файлами", "Maximum upload size" => "Максимальный размер загружаемого файла", "max. possible: " => "макс. возможно: ", @@ -64,8 +63,8 @@ "You don’t have write permissions here." => "У вас нет разрешений на запись здесь.", "Nothing in here. Upload something!" => "Здесь ничего нет. Загрузите что-нибудь!", "Download" => "Скачать", -"Unshare" => "Закрыть общий доступ", -"Upload too large" => "Файл слишком велик", +"Unshare" => "Отменить публикацию", +"Upload too large" => "Файл слишком большой", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файлы, которые Вы пытаетесь загрузить, превышают лимит для файлов на этом сервере.", "Files are being scanned, please wait." => "Подождите, файлы сканируются.", "Current scanning" => "Текущее сканирование", diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php index 351021a9f8..dfcca6f689 100644 --- a/apps/files/l10n/si_LK.php +++ b/apps/files/l10n/si_LK.php @@ -1,14 +1,13 @@ "ගොනුවක් උඩුගත නොවුනි. නොහැඳිනු දෝෂයක්", -"There is no error, the file uploaded with success" => "දෝෂයක් නොමැත. සාර්ථකව ගොනුව උඩුගත කෙරුණි", +"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 විශාලත්වයට වඩා වැඩිය", "The uploaded file was only partially uploaded" => "උඩුගත කළ ගොනුවේ කොටසක් පමණක් උඩුගත විය", -"No file was uploaded" => "ගොනුවක් උඩුගත නොවුණි", -"Missing a temporary folder" => "තාවකාලික ෆොල්ඩරයක් අතුරුදහන්", +"No file was uploaded" => "කිසිදු ගොනවක් උඩුගත නොවිනි", +"Missing a temporary folder" => "තාවකාලික ෆොල්ඩරයක් සොයාගත නොහැක", "Failed to write to disk" => "තැටිගත කිරීම අසාර්ථකයි", "Files" => "ගොනු", -"Share" => "බෙදා හදා ගන්න", -"Delete" => "මකා දමන්න", +"Delete" => "මකන්න", "Rename" => "නැවත නම් කරන්න", "replace" => "ප්‍රතිස්ථාපනය කරන්න", "suggest name" => "නමක් යෝජනා කරන්න", @@ -24,7 +23,7 @@ "Modified" => "වෙනස් කළ", "1 folder" => "1 ෆොල්ඩරයක්", "1 file" => "1 ගොනුවක්", -"Upload" => "උඩුගත කරන්න", +"Upload" => "උඩුගත කිරීම", "File handling" => "ගොනු පරිහරණය", "Maximum upload size" => "උඩුගත කිරීමක උපරිම ප්‍රමාණය", "max. possible: " => "හැකි උපරිමය:", @@ -39,7 +38,7 @@ "From link" => "යොමුවෙන්", "Cancel upload" => "උඩුගත කිරීම අත් හරින්න", "Nothing in here. Upload something!" => "මෙහි කිසිවක් නොමැත. යමක් උඩුගත කරන්න", -"Download" => "බාන්න", +"Download" => "බාගත කිරීම", "Unshare" => "නොබෙදු", "Upload too large" => "උඩුගත කිරීම විශාල වැඩිය", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ඔබ උඩුගත කිරීමට තැත් කරන ගොනු මෙම සේවාදායකයා උඩුගත කිරීමට ඉඩදී ඇති උපරිම ගොනු විශාලත්වයට වඩා වැඩිය", diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index 42eb3b1238..ee89a4c7d6 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -5,18 +5,18 @@ "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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.", -"The uploaded file was only partially uploaded" => "Ukladaný súbor sa nahral len čiastočne", -"No file was uploaded" => "Žiadny súbor nebol uložený", -"Missing a temporary folder" => "Chýba dočasný priečinok", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Nahrávaný súbor presiahol MAX_FILE_SIZE direktívu, ktorá bola špecifikovaná v HTML formulári", +"The uploaded file was only partially uploaded" => "Nahrávaný súbor bol iba čiastočne nahraný", +"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 storage available" => "Nedostatok dostupného úložného priestoru", "Invalid directory." => "Neplatný priečinok", "Files" => "Súbory", "Delete permanently" => "Zmazať trvalo", -"Delete" => "Zmazať", +"Delete" => "Odstrániť", "Rename" => "Premenovať", -"Pending" => "Prebieha", +"Pending" => "Čaká sa", "{new_name} already exists" => "{new_name} už existuje", "replace" => "nahradiť", "suggest name" => "pomôcť s menom", @@ -32,14 +32,14 @@ "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" => "Nedá sa odoslať Váš súbor, pretože je to priečinok, alebo je jeho veľkosť 0 bajtov", +"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.", "Not enough space available" => "Nie je k dispozícii dostatok miesta", "Upload cancelled." => "Odosielanie zrušené", "File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.", "URL cannot be empty." => "URL nemôže byť prázdne", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno priečinka. Používanie mena 'Shared' je vyhradené len pre Owncloud", "Error" => "Chyba", -"Name" => "Názov", +"Name" => "Meno", "Size" => "Veľkosť", "Modified" => "Upravené", "1 folder" => "1 priečinok", @@ -55,7 +55,7 @@ "0 is unlimited" => "0 znamená neobmedzené", "Maximum input size for ZIP files" => "Najväčšia veľkosť ZIP súborov", "Save" => "Uložiť", -"New" => "Nová", +"New" => "Nový", "Text file" => "Textový súbor", "Folder" => "Priečinok", "From link" => "Z odkazu", @@ -63,9 +63,9 @@ "Cancel upload" => "Zrušiť odosielanie", "You don’t have write permissions here." => "Nemáte oprávnenie na zápis.", "Nothing in here. Upload something!" => "Žiadny súbor. Nahrajte niečo!", -"Download" => "Sťahovanie", -"Unshare" => "Zrušiť zdieľanie", -"Upload too large" => "Nahrávanie je príliš veľké", +"Download" => "Stiahnuť", +"Unshare" => "Nezdielať", +"Upload too large" => "Odosielaný súbor je príliš veľký", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Súbory, ktoré sa snažíte nahrať, presahujú maximálnu veľkosť pre nahratie súborov na tento server.", "Files are being scanned, please wait." => "Čakajte, súbory sú prehľadávané.", "Current scanning" => "Práve prezerané", diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index 44c33d62fb..65d463e13d 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -2,19 +2,18 @@ "Could not move %s - File with this name already exists" => "Ni mogoče premakniti %s - datoteka s tem imenom že obstaja", "Could not move %s" => "Ni mogoče premakniti %s", "Unable to rename file" => "Ni mogoče preimenovati datoteke", -"No file was uploaded. Unknown error" => "Ni poslane datoteke. Neznana napaka.", -"There is no error, the file uploaded with success" => "Datoteka je uspešno naložena.", +"No file was uploaded. Unknown error" => "Ni poslane nobene datoteke. Neznana napaka.", +"There is no error, the file uploaded with success" => "Datoteka je uspešno poslana.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Poslana datoteka presega dovoljeno velikost, ki je določena z možnostjo upload_max_filesize v datoteki php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka presega velikost, ki jo določa parameter največje dovoljene velikosti v obrazcu HTML.", -"The uploaded file was only partially uploaded" => "Poslan je le del datoteke.", -"No file was uploaded" => "Ni poslane datoteke", +"The uploaded file was only partially uploaded" => "Datoteka je le delno naložena", +"No file was uploaded" => "Nobena datoteka ni bila naložena", "Missing a temporary folder" => "Manjka začasna mapa", "Failed to write to disk" => "Pisanje na disk je spodletelo", "Not enough storage available" => "Na voljo ni dovolj prostora", "Invalid directory." => "Neveljavna mapa.", "Files" => "Datoteke", -"Share" => "Souporaba", -"Delete permanently" => "Izbriši dokončno", +"Delete permanently" => "Izbriši trajno", "Delete" => "Izbriši", "Rename" => "Preimenuj", "Pending" => "V čakanju ...", @@ -33,7 +32,7 @@ "Your storage is full, files can not be updated or synced anymore!" => "Shramba je povsem napolnjena. Datotek ni več mogoče posodabljati in usklajevati!", "Your storage is almost full ({usedSpacePercent}%)" => "Mesto za shranjevanje je skoraj polno ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Postopek priprave datoteke za prejem je lahko dolgotrajen, če je datoteka zelo velika.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Pošiljanja ni mogoče izvesti, saj gre za mapo oziroma datoteko velikosti 0 bajtov.", +"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.", "Not enough space available" => "Na voljo ni dovolj prostora.", "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.", @@ -56,7 +55,7 @@ "0 is unlimited" => "0 predstavlja neomejeno vrednost", "Maximum input size for ZIP files" => "Največja vhodna velikost za datoteke ZIP", "Save" => "Shrani", -"New" => "Novo", +"New" => "Nova", "Text file" => "Besedilna datoteka", "Folder" => "Mapa", "From link" => "Iz povezave", @@ -65,7 +64,7 @@ "You don’t have write permissions here." => "Za to mesto ni ustreznih dovoljenj za pisanje.", "Nothing in here. Upload something!" => "Tukaj še ni ničesar. Najprej je treba kakšno datoteko poslati v oblak!", "Download" => "Prejmi", -"Unshare" => "Prekliči souporabo", +"Unshare" => "Odstrani iz souporabe", "Upload too large" => "Prekoračenje omejitve velikosti", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke, ki jih želite poslati, presegajo največjo dovoljeno velikost na strežniku.", "Files are being scanned, please wait." => "Poteka preučevanje datotek, počakajte ...", diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php index 9c7e4e1fc0..50d587ebb2 100644 --- a/apps/files/l10n/sr.php +++ b/apps/files/l10n/sr.php @@ -39,7 +39,7 @@ "URL cannot be empty." => "Адреса не може бити празна.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неисправно име фасцикле. Фасцикла „Shared“ је резервисана за ownCloud.", "Error" => "Грешка", -"Name" => "Име", +"Name" => "Назив", "Size" => "Величина", "Modified" => "Измењено", "1 folder" => "1 фасцикла", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index 54e4275ebb..125788ad13 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -3,12 +3,12 @@ "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.", +"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:", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överskrider MAX_FILE_SIZE direktivet som har angetts i HTML formuläret", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överstiger MAX_FILE_SIZE direktivet som anges i HTML-formulär", "The uploaded file was only partially uploaded" => "Den uppladdade filen var endast delvis uppladdad", -"No file was uploaded" => "Ingen fil laddades upp", -"Missing a temporary folder" => "En temporär mapp saknas", +"No file was uploaded" => "Ingen fil blev uppladdad", +"Missing a temporary folder" => "Saknar en tillfällig mapp", "Failed to write to disk" => "Misslyckades spara till disk", "Not enough storage available" => "Inte tillräckligt med lagringsutrymme tillgängligt", "Invalid directory." => "Felaktig mapp.", @@ -25,14 +25,13 @@ "undo" => "ångra", "perform delete operation" => "utför raderingen", "1 file uploading" => "1 filuppladdning", -"files uploading" => "filer laddas upp", "'.' 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" => "Kan inte ladda upp din fil eftersom det är en katalog eller har 0 bytes", +"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.", "Not enough space available" => "Inte tillräckligt med utrymme tillgängligt", "Upload cancelled." => "Uppladdning avbruten.", "File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.", diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php index e5f7bbdf9b..b88379043d 100644 --- a/apps/files/l10n/ta_LK.php +++ b/apps/files/l10n/ta_LK.php @@ -7,8 +7,7 @@ "Missing a temporary folder" => "ஒரு தற்காலிகமான கோப்புறையை காணவில்லை", "Failed to write to disk" => "வட்டில் எழுத முடியவில்லை", "Files" => "கோப்புகள்", -"Share" => "பகிர்வு", -"Delete" => "நீக்குக", +"Delete" => "அழிக்க", "Rename" => "பெயர்மாற்றம்", "Pending" => "நிலுவையிலுள்ள", "{new_name} already exists" => "{new_name} ஏற்கனவே உள்ளது", @@ -39,7 +38,7 @@ "Enable ZIP-download" => "ZIP பதிவிறக்கலை இயலுமைப்படுத்துக", "0 is unlimited" => "0 ஆனது எல்லையற்றது", "Maximum input size for ZIP files" => "ZIP கோப்புகளுக்கான ஆகக்கூடிய உள்ளீட்டு அளவு", -"Save" => "சேமிக்க ", +"Save" => "சேமிக்க", "New" => "புதிய", "Text file" => "கோப்பு உரை", "Folder" => "கோப்புறை", diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index a879dba85a..0e7d32bf12 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -3,12 +3,12 @@ "Could not move %s" => "ไม่สามารถย้าย %s ได้", "Unable to rename file" => "ไม่สามารถเปลี่ยนชื่อไฟล์ได้", "No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", -"There is no error, the file uploaded with success" => "ไม่พบข้อผิดพลาดใดๆ, ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว", +"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", -"The uploaded file was only partially uploaded" => "ไฟล์ถูกอัพโหลดได้เพียงบางส่วนเท่านั้น", -"No file was uploaded" => "ไม่มีไฟล์ที่ถูกอัพโหลด", -"Missing a temporary folder" => "โฟลเดอร์ชั่วคราวเกิดการสูญหาย", +"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" => "ไฟล์ที่อัพโหลดยังไม่ได้ถูกอัพโหลดอย่างสมบูรณ์", +"No file was uploaded" => "ยังไม่มีไฟล์ที่ถูกอัพโหลด", +"Missing a temporary folder" => "แฟ้มเอกสารชั่วคราวเกิดการสูญหาย", "Failed to write to disk" => "เขียนข้อมูลลงแผ่นดิสก์ล้มเหลว", "Not enough storage available" => "เหลือพื้นที่ไม่เพียงสำหรับใช้งาน", "Invalid directory." => "ไดเร็กทอรี่ไม่ถูกต้อง", @@ -24,14 +24,13 @@ "undo" => "เลิกทำ", "perform delete operation" => "ดำเนินการตามคำสั่งลบ", "1 file uploading" => "กำลังอัพโหลดไฟล์ 1 ไฟล์", -"files uploading" => "การอัพโหลดไฟล์", "'.' 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 ไบต์", +"Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจากไฟล์ดังกล่าวเป็นไดเร็กทอรี่หรือมีขนาด 0 ไบต์", "Not enough space available" => "มีพื้นที่เหลือไม่เพียงพอ", "Upload cancelled." => "การอัพโหลดถูกยกเลิก", "File upload is in progress. Leaving the page now will cancel the upload." => "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก", @@ -40,7 +39,7 @@ "Error" => "ข้อผิดพลาด", "Name" => "ชื่อ", "Size" => "ขนาด", -"Modified" => "แก้ไขแล้ว", +"Modified" => "ปรับปรุงล่าสุด", "1 folder" => "1 โฟลเดอร์", "{count} folders" => "{count} โฟลเดอร์", "1 file" => "1 ไฟล์", @@ -61,7 +60,7 @@ "Cancel upload" => "ยกเลิกการอัพโหลด", "Nothing in here. Upload something!" => "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์!", "Download" => "ดาวน์โหลด", -"Unshare" => "ยกเลิกการแชร์", +"Unshare" => "ยกเลิกการแชร์ข้อมูล", "Upload too large" => "ไฟล์ที่อัพโหลดมีขนาดใหญ่เกินไป", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณพยายามที่จะอัพโหลดมีขนาดเกินกว่าขนาดสูงสุดที่กำหนดไว้ให้อัพโหลดได้สำหรับเซิร์ฟเวอร์นี้", "Files are being scanned, please wait." => "ไฟล์กำลังอยู่ระหว่างการสแกน, กรุณารอสักครู่.", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index 17275e4753..84da59cee0 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -3,12 +3,12 @@ "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" => "Dosya başarıyla yüklendi, hata oluşmadı", +"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ı.", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Yüklenecek dosyanın boyutu HTML formunda belirtilen MAX_FILE_SIZE limitini aşıyor", -"The uploaded file was only partially uploaded" => "Dosya kısmen karşıya yüklenebildi", -"No file was uploaded" => "Hiç dosya gönderilmedi", -"Missing a temporary folder" => "Geçici dizin eksik", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Yüklenen dosya HTML formundaki MAX_FILE_SIZE sınırını aşıyor", +"The uploaded file was only partially uploaded" => "Yüklenen dosyanın sadece bir kısmı yüklendi", +"No file was uploaded" => "Hiç dosya yüklenmedi", +"Missing a temporary folder" => "Geçici bir klasör eksik", "Failed to write to disk" => "Diske yazılamadı", "Not enough storage available" => "Yeterli disk alanı yok", "Invalid directory." => "Geçersiz dizin.", @@ -39,7 +39,7 @@ "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.", "Error" => "Hata", -"Name" => "İsim", +"Name" => "Ad", "Size" => "Boyut", "Modified" => "Değiştirilme", "1 folder" => "1 dizin", @@ -65,7 +65,7 @@ "Nothing in here. Upload something!" => "Burada hiçbir şey yok. Birşeyler yükleyin!", "Download" => "İndir", "Unshare" => "Paylaşılmayan", -"Upload too large" => "Yükleme çok büyük", +"Upload too large" => "Yüklemeniz çok büyük", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor.", "Files are being scanned, please wait." => "Dosyalar taranıyor, lütfen bekleyin.", "Current scanning" => "Güncel tarama", diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index db3120645f..65b4ec1433 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -46,7 +46,7 @@ "{count} folders" => "{count} папок", "1 file" => "1 файл", "{count} files" => "{count} файлів", -"Upload" => "Вивантажити", +"Upload" => "Відвантажити", "File handling" => "Робота з файлами", "Maximum upload size" => "Максимальний розмір відвантажень", "max. possible: " => "макс.можливе:", @@ -64,7 +64,7 @@ "You don’t have write permissions here." => "У вас тут немає прав на запис.", "Nothing in here. Upload something!" => "Тут нічого немає. Відвантажте що-небудь!", "Download" => "Завантажити", -"Unshare" => "Закрити доступ", +"Unshare" => "Заборонити доступ", "Upload too large" => "Файл занадто великий", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файли,що ви намагаєтесь відвантажити перевищують максимальний дозволений розмір файлів на цьому сервері.", "Files are being scanned, please wait." => "Файли скануються, зачекайте, будь-ласка.", diff --git a/apps/files/l10n/ur_PK.php b/apps/files/l10n/ur_PK.php index aa87eeda38..e13a623fec 100644 --- a/apps/files/l10n/ur_PK.php +++ b/apps/files/l10n/ur_PK.php @@ -1,4 +1,3 @@ "ایرر", -"Unshare" => "شئیرنگ ختم کریں" +"Error" => "ایرر" ); diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index 7a67f66b30..73cf154492 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -5,9 +5,9 @@ "No file was uploaded. Unknown error" => "Không có tập tin nào được tải lên. Lỗi không xác định", "There is no error, the file uploaded with success" => "Không có lỗi, các tập tin đã được tải lên thành công", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "The uploaded file exceeds the upload_max_filesize directive in php.ini: ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Tập tin được tải lên vượt quá MAX_FILE_SIZE được quy định trong mẫu HTML", -"The uploaded file was only partially uploaded" => "Các tập tin được tải lên chỉ tải lên được một phần", -"No file was uploaded" => "Chưa có file nào được tải lên", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Kích thước những tập tin tải lên vượt quá MAX_FILE_SIZE đã được quy định", +"The uploaded file was only partially uploaded" => "Tập tin tải lên mới chỉ tải lên được một phần", +"No file was uploaded" => "Không có tập tin nào được tải lên", "Missing a temporary folder" => "Không tìm thấy thư mục tạm", "Failed to write to disk" => "Không thể ghi ", "Not enough storage available" => "Không đủ không gian lưu trữ", @@ -16,7 +16,7 @@ "Delete permanently" => "Xóa vĩnh vễn", "Delete" => "Xóa", "Rename" => "Sửa tên", -"Pending" => "Đang chờ", +"Pending" => "Chờ", "{new_name} already exists" => "{new_name} đã tồn tại", "replace" => "thay thế", "suggest name" => "tên gợi ý", @@ -25,14 +25,13 @@ "undo" => "lùi lại", "perform delete operation" => "thực hiện việc xóa", "1 file uploading" => "1 tệp tin đang được tải lên", -"files uploading" => "tệp tin đang được tải lên", "'.' is an invalid file name." => "'.' là một tên file không hợp lệ", "File name cannot be empty." => "Tên file không được rỗng", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Tên không hợp lệ, '\\', '/', '<', '>', ':', '\"', '|', '?' và '*' thì không được phép dùng.", "Your storage is full, files can not be updated or synced anymore!" => "Your storage is full, files can not be updated or synced anymore!", "Your storage is almost full ({usedSpacePercent}%)" => "Your storage is almost full ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "Your download is being prepared. This might take some time if the files are big.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên tập tin của bạn ,nó như là một thư mục hoặc có 0 byte", +"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 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.", @@ -61,8 +60,8 @@ "Deleted files" => "File đã bị xóa", "Cancel upload" => "Hủy upload", "Nothing in here. Upload something!" => "Không có gì ở đây .Hãy tải lên một cái gì đó !", -"Download" => "Tải về", -"Unshare" => "Bỏ chia sẻ", +"Download" => "Tải xuống", +"Unshare" => "Không chia sẽ", "Upload too large" => "Tập tin tải lên quá lớn", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn đang tải lên vượt quá kích thước tối đa cho phép trên máy chủ .", "Files are being scanned, please wait." => "Tập tin đang được quét ,vui lòng chờ.", diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php index f0de736e7a..33e21e544c 100644 --- a/apps/files/l10n/zh_CN.GB2312.php +++ b/apps/files/l10n/zh_CN.GB2312.php @@ -1,15 +1,15 @@ "没有上传文件。未知错误", -"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 选项", -"The uploaded file was only partially uploaded" => "文件部分上传", -"No file was uploaded" => "没有上传文件", -"Missing a temporary folder" => "缺失临时文件夹", +"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", +"The uploaded file was only partially uploaded" => "文件只有部分被上传", +"No file was uploaded" => "没有上传完成的文件", +"Missing a temporary folder" => "丢失了一个临时文件夹", "Failed to write to disk" => "写磁盘失败", "Files" => "文件", "Delete" => "删除", "Rename" => "重命名", -"Pending" => "等待中", +"Pending" => "Pending", "{new_name} already exists" => "{new_name} 已存在", "replace" => "替换", "suggest name" => "推荐名称", @@ -17,13 +17,12 @@ "replaced {new_name} with {old_name}" => "已用 {old_name} 替换 {new_name}", "undo" => "撤销", "1 file uploading" => "1 个文件正在上传", -"files uploading" => "个文件正在上传", -"Unable to upload your file as it is a directory or has 0 bytes" => "不能上传您的文件,由于它是文件夹或者为空文件", +"Unable to upload your file as it is a directory or has 0 bytes" => "不能上传你指定的文件,可能因为它是个文件夹或者大小为0", "Upload cancelled." => "上传取消了", "File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传。关闭页面会取消上传。", "URL cannot be empty." => "网址不能为空。", "Error" => "出错", -"Name" => "名称", +"Name" => "名字", "Size" => "大小", "Modified" => "修改日期", "1 folder" => "1 个文件夹", @@ -46,8 +45,8 @@ "Cancel upload" => "取消上传", "Nothing in here. Upload something!" => "这里没有东西.上传点什么!", "Download" => "下载", -"Unshare" => "取消分享", -"Upload too large" => "上传过大", +"Unshare" => "取消共享", +"Upload too large" => "上传的文件太大了", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "你正在试图上传的文件超过了此服务器支持的最大的文件大小.", "Files are being scanned, please wait." => "正在扫描文件,请稍候.", "Current scanning" => "正在扫描" diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index 3ba7a78007..8740298c62 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -3,11 +3,11 @@ "Could not move %s" => "无法移动 %s", "Unable to rename file" => "无法重命名文件", "No file was uploaded. Unknown error" => "没有文件被上传。未知错误", -"There is no error, the file uploaded with success" => "文件上传成功,没有错误发生", +"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所规定的值", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件长度超出了 HTML 表单中 MAX_FILE_SIZE 的限制", -"The uploaded file was only partially uploaded" => "已上传文件只上传了部分(不完整)", -"No file was uploaded" => "没有文件被上传", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件超过了在HTML 表单中指定的MAX_FILE_SIZE", +"The uploaded file was only partially uploaded" => "只上传了文件的一部分", +"No file was uploaded" => "文件没有上传", "Missing a temporary folder" => "缺少临时目录", "Failed to write to disk" => "写入磁盘失败", "Not enough storage available" => "没有足够的存储空间", @@ -16,7 +16,7 @@ "Delete permanently" => "永久删除", "Delete" => "删除", "Rename" => "重命名", -"Pending" => "等待", +"Pending" => "操作等待中", "{new_name} already exists" => "{new_name} 已存在", "replace" => "替换", "suggest name" => "建议名称", @@ -31,7 +31,7 @@ "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" => "无法上传您的文件,文件夹或者空文件", +"Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大小为 0 字节", "Not enough space available" => "没有足够可用空间", "Upload cancelled." => "上传已取消", "File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被取消。", @@ -63,7 +63,7 @@ "You don’t have write permissions here." => "您没有写权限", "Nothing in here. Upload something!" => "这里还什么都没有。上传些东西吧!", "Download" => "下载", -"Unshare" => "取消共享", +"Unshare" => "取消分享", "Upload too large" => "上传文件过大", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正尝试上传的文件超过了此服务器可以上传的最大容量限制", "Files are being scanned, please wait." => "文件正在被扫描,请稍候。", diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index b576253f4f..69fcb94e68 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -34,7 +34,7 @@ value="(max )"> - + @@ -46,6 +46,7 @@
diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e27054f0ec..25c2d091c4 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -45,12 +45,7 @@ class Hooks { $view = new \OC_FilesystemView( '/' ); - $userHome = \OC_User::getHome($params['uid']); - $dataDir = str_replace('/'.$params['uid'], '', $userHome); - - \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $dataDir .'/public-keys'), '/public-keys/' ); - - $util = new Util( $view, $params['uid'] ); + $util = new Util( $view, $params['uid'] ); // Check files_encryption infrastructure is ready for action if ( ! $util->ready() ) { diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index ce9fe38996..0c661353a7 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "L'encriptació de fitxers està activada.", "The following file types will not be encrypted:" => "Els tipus de fitxers següents no s'encriptaran:", "Exclude the following file types from encryption:" => "Exclou els tipus de fitxers següents de l'encriptatge:", -"None" => "cap" +"None" => "Cap" ); diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index bcf0ca5ad6..cdcd8a40b2 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Dateiverschlüsselung ist aktiviert", "The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:", "Exclude the following file types from encryption:" => "Schließe die folgenden Dateitypen von der Verschlüsselung aus:", -"None" => "Nichts" +"None" => "Keine" ); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index 71fd7d9671..4f08b98eb2 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Datei-Verschlüsselung ist aktiviert", "The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:", "Exclude the following file types from encryption:" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen:", -"None" => "Nichts" +"None" => "Keine" ); diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index 82a4c92ec2..0031a73194 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Η κρυπτογράφηση αρχείων είναι ενεργή.", "The following file types will not be encrypted:" => "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:", "Exclude the following file types from encryption:" => "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:", -"None" => "Τίποτα" +"None" => "Καμία" ); diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php index 7e3b7611ff..5a22b65728 100644 --- a/apps/files_encryption/l10n/eu.php +++ b/apps/files_encryption/l10n/eu.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Fitxategien enkriptazioa gaituta dago.", "The following file types will not be encrypted:" => "Hurrengo fitxategi motak ez dira enkriptatuko:", "Exclude the following file types from encryption:" => "Baztertu hurrengo fitxategi motak enkriptatzetik:", -"None" => "Ezer" +"None" => "Bat ere ez" ); diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index c717134526..9ab9bc492a 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "La cifratura dei file è abilitata.", "The following file types will not be encrypted:" => "I seguenti tipi di file non saranno cifrati:", "Exclude the following file types from encryption:" => "Escludi i seguenti tipi di file dalla cifratura:", -"None" => "Nessuno" +"None" => "Nessuna" ); diff --git a/apps/files_encryption/l10n/pl.php b/apps/files_encryption/l10n/pl.php index 836f545359..2fa86f454f 100644 --- a/apps/files_encryption/l10n/pl.php +++ b/apps/files_encryption/l10n/pl.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Szyfrowanie plików jest włączone", "The following file types will not be encrypted:" => "Poniższe typy plików nie będą szyfrowane:", "Exclude the following file types from encryption:" => "Wyłącz poniższe typy plików z szyfrowania:", -"None" => "Nic" +"None" => "Brak" ); diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index b41c6ed315..28807db72c 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "A criptografia de arquivos está ativada.", "The following file types will not be encrypted:" => "Os seguintes tipos de arquivo não serão criptografados:", "Exclude the following file types from encryption:" => "Excluir os seguintes tipos de arquivo da criptografia:", -"None" => "Nada" +"None" => "Nenhuma" ); diff --git a/apps/files_encryption/l10n/ru.php b/apps/files_encryption/l10n/ru.php index f07dec621d..22c1e3da37 100644 --- a/apps/files_encryption/l10n/ru.php +++ b/apps/files_encryption/l10n/ru.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Шифрование файла включено.", "The following file types will not be encrypted:" => "Следующие типы файлов не будут зашифрованы:", "Exclude the following file types from encryption:" => "Исключить следующие типы файлов из шифрованных:", -"None" => "Нет новостей" +"None" => "Ничего" ); diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index aaea9da21b..bebb623471 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Šifrovanie súborov nastavené.", "The following file types will not be encrypted:" => "Uvedené typy súborov nebudú šifrované:", "Exclude the following file types from encryption:" => "Nešifrovať uvedené typy súborov", -"None" => "Žiadny" +"None" => "Žiadne" ); diff --git a/apps/files_encryption/l10n/th_TH.php b/apps/files_encryption/l10n/th_TH.php index 30c0324a98..e46d249118 100644 --- a/apps/files_encryption/l10n/th_TH.php +++ b/apps/files_encryption/l10n/th_TH.php @@ -1,4 +1,4 @@ "การเข้ารหัส", -"None" => "ไม่มี" +"None" => "ไม่ต้อง" ); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index 40d4b1d0fe..0a88d1b2db 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -3,5 +3,5 @@ "File encryption is enabled." => "Mã hóa file đã mở", "The following file types will not be encrypted:" => "Loại file sau sẽ không được mã hóa", "Exclude the following file types from encryption:" => "Việc mã hóa không bao gồm loại file sau", -"None" => "Không gì cả" +"None" => "Không có gì hết" ); diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 4a85048ba4..7f9572f426 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -21,6 +21,7 @@ use OCA\Encryption; // This has to go here because otherwise session errors arise, and the private // encryption key needs to be saved in the session +\OC_User::login( 'admin', 'admin' ); /** * @note It would be better to use Mockery here for mocking out the session @@ -36,7 +37,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // reset backend \OC_User::useBackend('database'); - // set content for encrypting / decrypting in tests + // set content for encrypting / decrypting in tests $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); $this->dataShort = 'hats'; $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); @@ -59,17 +60,13 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init($this->userId, '/'); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); } function tearDown() { } - function testGenerateKey() { + function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 33ca29997b..81034be54b 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -19,7 +19,7 @@ use OCA\Encryption; // This has to go here because otherwise session errors arise, and the private // encryption key needs to be saved in the session -//\OC_User::login( 'admin', 'admin' ); +\OC_User::login( 'admin', 'admin' ); class Test_Keymanager extends \PHPUnit_Framework_TestCase { @@ -52,10 +52,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init( $this->userId, '/' ); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + } function tearDown(){ diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 633cc9e4fc..ba82ac80ea 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -1,4 +1,4 @@ - // * This file is licensed under the Affero General Public License version 3 or diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index e3ec0860fa..0659b468a3 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -24,6 +24,8 @@ $loader->register(); use \Mockery as m; use OCA\Encryption; +\OC_User::login( 'admin', 'admin' ); + class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function setUp() { @@ -60,10 +62,6 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::init( $this->userId, '/' ); \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); - $mockView = m::mock('OC_FilesystemView'); $this->util = new Encryption\Util( $mockView, $this->userId ); @@ -77,9 +75,6 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { /** * @brief test that paths set during User construction are correct - * - * - * */ function testKeyPaths() { diff --git a/apps/files_external/l10n/ar.php b/apps/files_external/l10n/ar.php index a53bfe48bc..06837d5085 100644 --- a/apps/files_external/l10n/ar.php +++ b/apps/files_external/l10n/ar.php @@ -1,5 +1,5 @@ "مجموعات", "Users" => "المستخدمين", -"Delete" => "إلغاء" +"Delete" => "حذف" ); diff --git a/apps/files_external/l10n/bn_BD.php b/apps/files_external/l10n/bn_BD.php index 0f032df9f0..07ccd50074 100644 --- a/apps/files_external/l10n/bn_BD.php +++ b/apps/files_external/l10n/bn_BD.php @@ -12,7 +12,7 @@ "All Users" => "সমস্ত ব্যবহারকারী", "Groups" => "গোষ্ঠীসমূহ", "Users" => "ব্যবহারকারী", -"Delete" => "মুছে", +"Delete" => "মুছে ফেল", "Enable User External Storage" => "ব্যবহারকারীর বাহ্যিক সংরক্ষণাগার সক্রিয় কর", "Allow users to mount their own external storage" => "ব্যবহারকারীদেরকে তাদের নিজস্ব বাহ্যিক সংরক্ষনাগার সাউন্ট করতে অনুমোদন দাও", "SSL root certificates" => "SSL রুট সনদপত্র", diff --git a/apps/files_external/l10n/ca.php b/apps/files_external/l10n/ca.php index e3b245babf..aa9304d330 100644 --- a/apps/files_external/l10n/ca.php +++ b/apps/files_external/l10n/ca.php @@ -17,7 +17,7 @@ "All Users" => "Tots els usuaris", "Groups" => "Grups", "Users" => "Usuaris", -"Delete" => "Esborra", +"Delete" => "Elimina", "Enable User External Storage" => "Habilita l'emmagatzemament extern d'usuari", "Allow users to mount their own external storage" => "Permet als usuaris muntar el seu emmagatzemament extern propi", "SSL root certificates" => "Certificats SSL root", diff --git a/apps/files_external/l10n/de.php b/apps/files_external/l10n/de.php index 8dfa0eafbb..2418377221 100644 --- a/apps/files_external/l10n/de.php +++ b/apps/files_external/l10n/de.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Fehler beim Einrichten von Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Warnung: \"smbclient\" ist nicht installiert. Das Einhängen von CIFS/SMB-Freigaben ist nicht möglich. Bitte Deinen System-Administrator, dies zu installieren.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Warnung:: Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Bitte wende Dich an Deinen Systemadministrator.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Warnung: Die Curl-Unterstützung in PHP ist nicht aktiviert oder installiert. Das Einbinden von ownCloud / WebDav der GoogleDrive-Freigaben ist nicht möglich. Bitte Deinen Systemadminstrator um die Installation. ", "External Storage" => "Externer Speicher", "Folder name" => "Ordnername", "External storage" => "Externer Speicher", diff --git a/apps/files_external/l10n/de_DE.php b/apps/files_external/l10n/de_DE.php index 8a8ae37ffd..d55c0c6909 100644 --- a/apps/files_external/l10n/de_DE.php +++ b/apps/files_external/l10n/de_DE.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Fehler beim Einrichten von Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Warnung: \"smbclient\" ist nicht installiert. Das Einhängen von CIFS/SMB-Freigaben ist nicht möglich. Bitten Sie Ihren Systemadministrator, dies zu installieren.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Warnung:: Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Bitte wenden Sie sich an Ihren Systemadministrator.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Achtung: Die Curl-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Laden von ownCloud / WebDAV oder GoogleDrive Freigaben ist nicht möglich. Bitte Sie Ihren Systemadministrator, das Modul zu installieren.", "External Storage" => "Externer Speicher", "Folder name" => "Ordnername", "External storage" => "Externer Speicher", diff --git a/apps/files_external/l10n/el.php b/apps/files_external/l10n/el.php index 62703b08fb..6c519a1b41 100644 --- a/apps/files_external/l10n/el.php +++ b/apps/files_external/l10n/el.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Σφάλμα ρυθμίζωντας αποθήκευση Google Drive ", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Προσοχή: Ο \"smbclient\" δεν εγκαταστάθηκε. Δεν είναι δυνατή η προσάρτηση CIFS/SMB. Παρακαλώ ενημερώστε τον διαχειριστή συστήματος να το εγκαταστήσει.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Προσοχή: Η υποστήριξη FTP στην PHP δεν ενεργοποιήθηκε ή εγκαταστάθηκε. Δεν είναι δυνατή η προσάρτηση FTP. Παρακαλώ ενημερώστε τον διαχειριστή συστήματος να το εγκαταστήσει.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "<Προειδοποίηση Η υποστήριξη του συστήματος Curl στο PHP δεν είναι ενεργοποιημένη ή εγκαταστημένη. Η αναπαραγωγή του ownCloud/WebDAV ή GoogleDrive δεν είναι δυνατή. Παρακαλώ ρωτήστε τον διαχειριστλη του συστήματος για την εγκατάσταση. ", "External Storage" => "Εξωτερικό Αποθηκευτικό Μέσο", "Folder name" => "Όνομα φακέλου", "External storage" => "Εξωτερική αποθήκευση", diff --git a/apps/files_external/l10n/es.php b/apps/files_external/l10n/es.php index 5c332690bf..da22f41032 100644 --- a/apps/files_external/l10n/es.php +++ b/apps/files_external/l10n/es.php @@ -17,7 +17,7 @@ "All Users" => "Todos los usuarios", "Groups" => "Grupos", "Users" => "Usuarios", -"Delete" => "Eliminar", +"Delete" => "Eliiminar", "Enable User External Storage" => "Habilitar almacenamiento de usuario externo", "Allow users to mount their own external storage" => "Permitir a los usuarios montar su propio almacenamiento externo", "SSL root certificates" => "Raíz de certificados SSL ", diff --git a/apps/files_external/l10n/et_EE.php b/apps/files_external/l10n/et_EE.php index 465201df4d..5d1eb0887b 100644 --- a/apps/files_external/l10n/et_EE.php +++ b/apps/files_external/l10n/et_EE.php @@ -5,8 +5,7 @@ "Please provide a valid Dropbox app key and secret." => "Palun sisesta korrektne Dropboxi rakenduse võti ja salasõna.", "Error configuring Google Drive storage" => "Viga Google Drive'i salvestusruumi seadistamisel", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Hoiatus: \"smbclient\" pole paigaldatud. Jagatud CIFS/SMB hoidlate ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata SAMBA tugi.", -"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Hoiatus: PHP-s puudub FTP tugi. Jagatud FTP hoidlate ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata FTP tugi.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Hoiatus: PHP-s puudub Curl tugi. Jagatud ownCloud / WebDAV või GoogleDrive ühendamine pole võimalik. Palu oma süsteemihalduril see paigaldada.", +"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Hoiatus: FTP tugi puudub PHP paigalduses. Jagatud FTP hoidlate ühendamine pole võimalik. Palu oma süsteemihalduril paigaldata FTP tugi.", "External Storage" => "Väline salvestuskoht", "Folder name" => "Kausta nimi", "External storage" => "Väline andmehoidla", diff --git a/apps/files_external/l10n/fr.php b/apps/files_external/l10n/fr.php index 5006133a7b..c42c89f857 100644 --- a/apps/files_external/l10n/fr.php +++ b/apps/files_external/l10n/fr.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Erreur lors de la configuration du support de stockage Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Attention : \"smbclient\" n'est pas installé. Le montage des partages CIFS/SMB n'est pas disponible. Contactez votre administrateur système pour l'installer.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Attention : Le support FTP de PHP n'est pas activé ou installé. Le montage des partages FTP n'est pas disponible. Contactez votre administrateur système pour l'installer.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Attention : Le support de Curl n'est pas activé ou installé dans PHP. Le montage de ownCloud / WebDAV ou GoogleDrive n'est pas possible. Contactez votre administrateur système pour l'installer.", "External Storage" => "Stockage externe", "Folder name" => "Nom du dossier", "External storage" => "Stockage externe", diff --git a/apps/files_external/l10n/lb.php b/apps/files_external/l10n/lb.php index 4e78227ec4..2a62cad3fe 100644 --- a/apps/files_external/l10n/lb.php +++ b/apps/files_external/l10n/lb.php @@ -1,6 +1,5 @@ "Dossiers Numm:", "Groups" => "Gruppen", -"Users" => "Benotzer", "Delete" => "Läschen" ); diff --git a/apps/files_external/l10n/nl.php b/apps/files_external/l10n/nl.php index ded5a861a8..ad3eda9747 100644 --- a/apps/files_external/l10n/nl.php +++ b/apps/files_external/l10n/nl.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Fout tijdens het configureren van Google Drive opslag", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Waarschuwing: \"smbclient\" is niet geïnstalleerd. Mounten van CIFS/SMB shares is niet mogelijk. Vraag uw beheerder om smbclient te installeren.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Waarschuwing: FTP ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van FTP shares is niet mogelijk. Vraag uw beheerder FTP ondersteuning te installeren.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Waarschuwing: Curl ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van ownCloud / WebDAV of GoogleDrive is niet mogelijk. Vraag uw systeembeheerder dit te installeren.", "External Storage" => "Externe opslag", "Folder name" => "Mapnaam", "External storage" => "Externe opslag", diff --git a/apps/files_external/l10n/pt_BR.php b/apps/files_external/l10n/pt_BR.php index bc3c356a51..a358d56913 100644 --- a/apps/files_external/l10n/pt_BR.php +++ b/apps/files_external/l10n/pt_BR.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Erro ao configurar armazenamento do Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Aviso: \"smbclient\" não está instalado. Impossível montar compartilhamentos de CIFS/SMB. Por favor, peça ao seu administrador do sistema para instalá-lo.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Aviso: O suporte para FTP do PHP não está ativado ou instalado. Impossível montar compartilhamentos FTP. Por favor, peça ao seu administrador do sistema para instalá-lo.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => " Aviso: O suport a Curl em PHP não está habilitado ou instalado. A montagem do ownCloud / WebDAV ou GoogleDrive não é possível. Por favor, solicite ao seu administrador do sistema instalá-lo.", "External Storage" => "Armazenamento Externo", "Folder name" => "Nome da pasta", "External storage" => "Armazenamento Externo", @@ -18,7 +17,7 @@ "All Users" => "Todos os Usuários", "Groups" => "Grupos", "Users" => "Usuários", -"Delete" => "Excluir", +"Delete" => "Remover", "Enable User External Storage" => "Habilitar Armazenamento Externo do Usuário", "Allow users to mount their own external storage" => "Permitir usuários a montar seus próprios armazenamentos externos", "SSL root certificates" => "Certificados SSL raíz", diff --git a/apps/files_external/l10n/ro.php b/apps/files_external/l10n/ro.php index ed23b4cca8..5747205dc0 100644 --- a/apps/files_external/l10n/ro.php +++ b/apps/files_external/l10n/ro.php @@ -6,14 +6,11 @@ "Error configuring Google Drive storage" => "Eroare la configurarea mediului de stocare Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Atenție: \"smbclient\" nu este instalat. Montarea mediilor CIFS/SMB partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleaze.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Atenție: 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.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Atentie: Suportul Curl nu este pornit / instalat in configuratia PHP! Montarea ownCloud / WebDAV / GoogleDrive nu este posibila! Intrebati administratorul sistemului despre aceasta problema!", "External Storage" => "Stocare externă", "Folder name" => "Denumire director", -"External storage" => "Stocare externă", "Configuration" => "Configurație", "Options" => "Opțiuni", "Applicable" => "Aplicabil", -"Add storage" => "Adauga stocare", "None set" => "Niciunul", "All Users" => "Toți utilizatorii", "Groups" => "Grupuri", diff --git a/apps/files_external/l10n/ru.php b/apps/files_external/l10n/ru.php index d2c5292bac..46b73a67f0 100644 --- a/apps/files_external/l10n/ru.php +++ b/apps/files_external/l10n/ru.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Ошибка при настройке хранилища Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Внимание: \"smbclient\" не установлен. Подключение по CIFS/SMB невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить его.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Внимание: Поддержка FTP не включена в PHP. Подключение по FTP невозможно. Пожалуйста, обратитесь к системному администратору, чтобы включить.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Внимание: Поддержка Curl в PHP не включена или не установлена. Подключение ownCloud / WebDAV или GoogleDrive невозможно. Попросите вашего системного администратора установить его.", "External Storage" => "Внешний носитель", "Folder name" => "Имя папки", "External storage" => "Внешний носитель данных", diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php index 33edcb9d4c..af6b7b4ae6 100644 --- a/apps/files_external/l10n/sk_SK.php +++ b/apps/files_external/l10n/sk_SK.php @@ -6,7 +6,6 @@ "Error configuring Google Drive storage" => "Chyba pri konfigurácii úložiska Google drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Upozornenie: \"smbclient\" nie je nainštalovaný. Nie je možné pripojenie oddielov CIFS/SMB. Požiadajte administrátora systému, nech ho nainštaluje.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Upozornenie: 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.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Varovanie: nie je nainštalovaná, alebo povolená, podpora Curl v PHP. Nie je možné pripojenie oddielov ownCloud, WebDAV, či GoogleDrive. Prosím požiadajte svojho administrátora systému, nech ju nainštaluje.", "External Storage" => "Externé úložisko", "Folder name" => "Meno priečinka", "External storage" => "Externé úložisko", @@ -18,7 +17,7 @@ "All Users" => "Všetci používatelia", "Groups" => "Skupiny", "Users" => "Používatelia", -"Delete" => "Zmazať", +"Delete" => "Odstrániť", "Enable User External Storage" => "Povoliť externé úložisko", "Allow users to mount their own external storage" => "Povoliť používateľom pripojiť ich vlastné externé úložisko", "SSL root certificates" => "Koreňové SSL certifikáty", diff --git a/apps/files_external/l10n/sl.php b/apps/files_external/l10n/sl.php index 09b91b913e..4ff2eed3bf 100644 --- a/apps/files_external/l10n/sl.php +++ b/apps/files_external/l10n/sl.php @@ -5,8 +5,7 @@ "Please provide a valid Dropbox app key and secret." => "Vpisati je treba veljaven ključ programa in kodo za Dropbox", "Error configuring Google Drive storage" => "Napaka nastavljanja shrambe Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Opozorilo: paket \"smbclient\" ni nameščen. Priklapljanje pogonov CIFS/SMB ne bo mogoče.", -"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Opozorilo: podpora FTP v PHP ni omogočena ali pa ni nameščena. Priklapljanje pogonov FTP zato ne bo mogoče.", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Opozorilo: podpora za Curl v PHP ni omogočena ali pa ni nameščena. Priklapljanje točke ownCloud / WebDAV ali GoogleDrive zato ne bo mogoče. Zahtevane pakete je treba pred uporabo namestiti.", +"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Opozorilo: podpora FTP v PHP ni omogočena ali pa ni nameščena. Priklapljanje pogonov FTP zato ni mogoče.", "External Storage" => "Zunanja podatkovna shramba", "Folder name" => "Ime mape", "External storage" => "Zunanja shramba", @@ -19,7 +18,7 @@ "Groups" => "Skupine", "Users" => "Uporabniki", "Delete" => "Izbriši", -"Enable User External Storage" => "Omogoči zunanjo uporabniško podatkovno shrambo", +"Enable User External Storage" => "Omogoči uporabniško zunanjo podatkovno shrambo", "Allow users to mount their own external storage" => "Dovoli uporabnikom priklop lastne zunanje podatkovne shrambe", "SSL root certificates" => "Korenska potrdila SSL", "Import Root Certificate" => "Uvozi korensko potrdilo" diff --git a/apps/files_external/l10n/zh_TW.php b/apps/files_external/l10n/zh_TW.php index a8314dcef0..873b555348 100644 --- a/apps/files_external/l10n/zh_TW.php +++ b/apps/files_external/l10n/zh_TW.php @@ -1,26 +1,16 @@ "允許存取", -"Error configuring Dropbox storage" => "設定 Dropbox 儲存時發生錯誤", -"Grant access" => "允許存取", -"Please provide a valid Dropbox app key and secret." => "請提供有效的 Dropbox app key 和 app secret 。", -"Error configuring Google Drive storage" => "設定 Google Drive 儲存時發生錯誤", -"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "警告:未安裝 \"smbclient\" ,因此無法掛載 CIFS/SMB 分享,請洽您的系統管理員將其安裝。", -"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "警告:PHP 並未啓用 FTP 的支援,因此無法掛載 FTP 分享,請洽您的系統管理員將其安裝並啓用。", -"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "警告:PHP 並未啓用 Curl 的支援,因此無法掛載 ownCloud/WebDAV 或 Google Drive 分享,請洽您的系統管理員將其安裝並啓用。", -"External Storage" => "外部儲存", +"Access granted" => "訪問權已被准許", +"Grant access" => "准許訪問權", +"External Storage" => "外部儲存裝置", "Folder name" => "資料夾名稱", -"External storage" => "外部儲存", +"External storage" => "外部儲存裝置", "Configuration" => "設定", "Options" => "選項", -"Applicable" => "可用的", -"Add storage" => "增加儲存區", +"Add storage" => "添加儲存區", "None set" => "尚未設定", "All Users" => "所有使用者", "Groups" => "群組", "Users" => "使用者", "Delete" => "刪除", -"Enable User External Storage" => "啓用使用者外部儲存", -"Allow users to mount their own external storage" => "允許使用者自行掛載他們的外部儲存", -"SSL root certificates" => "SSL 根憑證", "Import Root Certificate" => "匯入根憑證" ); diff --git a/apps/files_sharing/l10n/bn_BD.php b/apps/files_sharing/l10n/bn_BD.php index 5fdf6de50c..c3af434ee2 100644 --- a/apps/files_sharing/l10n/bn_BD.php +++ b/apps/files_sharing/l10n/bn_BD.php @@ -1,6 +1,6 @@ "কূটশব্দ", -"Submit" => "জমা দিন", +"Submit" => "জমা দাও", "%s shared the folder %s with you" => "%s আপনার সাথে %s ফোল্ডারটি ভাগাভাগি করেছেন", "%s shared the file %s with you" => "%s আপনার সাথে %s ফাইলটি ভাগাভাগি করেছেন", "Download" => "ডাউনলোড", diff --git a/apps/files_sharing/l10n/de_DE.php b/apps/files_sharing/l10n/de_DE.php index ab81589b0e..b92d6d478c 100644 --- a/apps/files_sharing/l10n/de_DE.php +++ b/apps/files_sharing/l10n/de_DE.php @@ -1,9 +1,9 @@ "Passwort", -"Submit" => "Bestätigen", +"Submit" => "Absenden", "%s shared the folder %s with you" => "%s hat den Ordner %s mit Ihnen geteilt", "%s shared the file %s with you" => "%s hat die Datei %s mit Ihnen geteilt", -"Download" => "Herunterladen", +"Download" => "Download", "No preview available for" => "Es ist keine Vorschau verfügbar für", "web services under your control" => "Web-Services unter Ihrer Kontrolle" ); diff --git a/apps/files_sharing/l10n/he.php b/apps/files_sharing/l10n/he.php index 2ea5ba76ab..ff7be88af8 100644 --- a/apps/files_sharing/l10n/he.php +++ b/apps/files_sharing/l10n/he.php @@ -1,5 +1,5 @@ "סיסמא", +"Password" => "ססמה", "Submit" => "שליחה", "%s shared the folder %s with you" => "%s שיתף עמך את התיקייה %s", "%s shared the file %s with you" => "%s שיתף עמך את הקובץ %s", diff --git a/apps/files_sharing/l10n/hi.php b/apps/files_sharing/l10n/hi.php deleted file mode 100644 index 560df54fc9..0000000000 --- a/apps/files_sharing/l10n/hi.php +++ /dev/null @@ -1,3 +0,0 @@ - "पासवर्ड" -); diff --git a/apps/files_sharing/l10n/hr.php b/apps/files_sharing/l10n/hr.php deleted file mode 100644 index b2dca866bb..0000000000 --- a/apps/files_sharing/l10n/hr.php +++ /dev/null @@ -1,6 +0,0 @@ - "Lozinka", -"Submit" => "Pošalji", -"Download" => "Preuzimanje", -"web services under your control" => "web usluge pod vašom kontrolom" -); diff --git a/apps/files_sharing/l10n/hy.php b/apps/files_sharing/l10n/hy.php deleted file mode 100644 index 438e8a7433..0000000000 --- a/apps/files_sharing/l10n/hy.php +++ /dev/null @@ -1,4 +0,0 @@ - "Հաստատել", -"Download" => "Բեռնել" -); diff --git a/apps/files_sharing/l10n/ia.php b/apps/files_sharing/l10n/ia.php deleted file mode 100644 index d229135a71..0000000000 --- a/apps/files_sharing/l10n/ia.php +++ /dev/null @@ -1,6 +0,0 @@ - "Contrasigno", -"Submit" => "Submitter", -"Download" => "Discargar", -"web services under your control" => "servicios web sub tu controlo" -); diff --git a/apps/files_sharing/l10n/ku_IQ.php b/apps/files_sharing/l10n/ku_IQ.php index 675fc372e1..f139b0a064 100644 --- a/apps/files_sharing/l10n/ku_IQ.php +++ b/apps/files_sharing/l10n/ku_IQ.php @@ -1,5 +1,5 @@ "وشەی تێپەربو", +"Password" => "تێپه‌ڕه‌وشه", "Submit" => "ناردن", "%s shared the folder %s with you" => "%s دابه‌شی کردووه‌ بوخچه‌ی %s له‌گه‌ڵ تۆ", "%s shared the file %s with you" => "%s دابه‌شی کردووه‌ په‌ڕگه‌یی %s له‌گه‌ڵ تۆ", diff --git a/apps/files_sharing/l10n/lb.php b/apps/files_sharing/l10n/lb.php index 630866ab4c..8aba5806aa 100644 --- a/apps/files_sharing/l10n/lb.php +++ b/apps/files_sharing/l10n/lb.php @@ -1,6 +1,3 @@ "Passwuert", -"Submit" => "Fortschécken", -"Download" => "Download", -"web services under your control" => "Web Servicer ënnert denger Kontroll" +"Password" => "Passwuert" ); diff --git a/apps/files_sharing/l10n/lt_LT.php b/apps/files_sharing/l10n/lt_LT.php index 96ab48cd2c..d21a3c14f4 100644 --- a/apps/files_sharing/l10n/lt_LT.php +++ b/apps/files_sharing/l10n/lt_LT.php @@ -1,6 +1,6 @@ "Slaptažodis", -"Submit" => "Išsaugoti", -"Download" => "Atsisiųsti", -"web services under your control" => "jūsų valdomos web paslaugos" +"Size" => "Dydis", +"Modified" => "Pakeista", +"Delete all" => "Ištrinti viską", +"Delete" => "Ištrinti" ); diff --git a/apps/files_sharing/l10n/lv.php b/apps/files_sharing/l10n/lv.php index 88faeaf9f1..0b22486708 100644 --- a/apps/files_sharing/l10n/lv.php +++ b/apps/files_sharing/l10n/lv.php @@ -5,5 +5,5 @@ "%s shared the file %s with you" => "%s ar jums dalījās ar datni %s", "Download" => "Lejupielādēt", "No preview available for" => "Nav pieejams priekšskatījums priekš", -"web services under your control" => "tīmekļa servisi tavā varā" +"web services under your control" => "jūsu vadībā esošie tīmekļa servisi" ); diff --git a/apps/files_sharing/l10n/ms_MY.php b/apps/files_sharing/l10n/ms_MY.php deleted file mode 100644 index 879524afce..0000000000 --- a/apps/files_sharing/l10n/ms_MY.php +++ /dev/null @@ -1,6 +0,0 @@ - "Kata laluan", -"Submit" => "Hantar", -"Download" => "Muat turun", -"web services under your control" => "Perkhidmatan web di bawah kawalan anda" -); diff --git a/apps/files_sharing/l10n/nn_NO.php b/apps/files_sharing/l10n/nn_NO.php deleted file mode 100644 index abd1ee394b..0000000000 --- a/apps/files_sharing/l10n/nn_NO.php +++ /dev/null @@ -1,6 +0,0 @@ - "Passord", -"Submit" => "Send", -"Download" => "Last ned", -"web services under your control" => "Vev tjenester under din kontroll" -); diff --git a/apps/files_sharing/l10n/oc.php b/apps/files_sharing/l10n/oc.php deleted file mode 100644 index 07bc26ecdd..0000000000 --- a/apps/files_sharing/l10n/oc.php +++ /dev/null @@ -1,6 +0,0 @@ - "Senhal", -"Submit" => "Sosmetre", -"Download" => "Avalcarga", -"web services under your control" => "Services web jos ton contraròtle" -); diff --git a/apps/files_sharing/l10n/pt_BR.php b/apps/files_sharing/l10n/pt_BR.php index ce4c28ddcb..4dde4bb5ad 100644 --- a/apps/files_sharing/l10n/pt_BR.php +++ b/apps/files_sharing/l10n/pt_BR.php @@ -5,5 +5,5 @@ "%s shared the file %s with you" => "%s compartilhou o arquivo %s com você", "Download" => "Baixar", "No preview available for" => "Nenhuma visualização disponível para", -"web services under your control" => "serviços web sob seu controle" +"web services under your control" => "web services sob seu controle" ); diff --git a/apps/files_sharing/l10n/si_LK.php b/apps/files_sharing/l10n/si_LK.php index 580f7b1990..1c69c60817 100644 --- a/apps/files_sharing/l10n/si_LK.php +++ b/apps/files_sharing/l10n/si_LK.php @@ -1,9 +1,9 @@ "මුර පදය", +"Password" => "මුරපදය", "Submit" => "යොමු කරන්න", "%s shared the folder %s with you" => "%s ඔබව %s ෆෝල්ඩරයට හවුල් කරගත්තේය", "%s shared the file %s with you" => "%s ඔබ සමඟ %s ගොනුව බෙදාහදාගත්තේය", -"Download" => "බාන්න", +"Download" => "භාගත කරන්න", "No preview available for" => "පූර්වදර්ශනයක් නොමැත", "web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්" ); diff --git a/apps/files_sharing/l10n/sk_SK.php b/apps/files_sharing/l10n/sk_SK.php index 14124eeb87..2e781f76f3 100644 --- a/apps/files_sharing/l10n/sk_SK.php +++ b/apps/files_sharing/l10n/sk_SK.php @@ -3,7 +3,7 @@ "Submit" => "Odoslať", "%s shared the folder %s with you" => "%s zdieľa s vami priečinok %s", "%s shared the file %s with you" => "%s zdieľa s vami súbor %s", -"Download" => "Sťahovanie", +"Download" => "Stiahnuť", "No preview available for" => "Žiaden náhľad k dispozícii pre", "web services under your control" => "webové služby pod Vašou kontrolou" ); diff --git a/apps/files_sharing/l10n/sr.php b/apps/files_sharing/l10n/sr.php index be24c06e46..6e277f6771 100644 --- a/apps/files_sharing/l10n/sr.php +++ b/apps/files_sharing/l10n/sr.php @@ -1,6 +1,5 @@ "Лозинка", "Submit" => "Пошаљи", -"Download" => "Преузми", -"web services under your control" => "веб сервиси под контролом" +"Download" => "Преузми" ); diff --git a/apps/files_sharing/l10n/sr@latin.php b/apps/files_sharing/l10n/sr@latin.php deleted file mode 100644 index cce6bd1f77..0000000000 --- a/apps/files_sharing/l10n/sr@latin.php +++ /dev/null @@ -1,5 +0,0 @@ - "Lozinka", -"Submit" => "Pošalji", -"Download" => "Preuzmi" -); diff --git a/apps/files_sharing/l10n/tr.php b/apps/files_sharing/l10n/tr.php index 42dfec8cc6..f2e6e5697d 100644 --- a/apps/files_sharing/l10n/tr.php +++ b/apps/files_sharing/l10n/tr.php @@ -1,5 +1,5 @@ "Parola", +"Password" => "Şifre", "Submit" => "Gönder", "%s shared the folder %s with you" => "%s sizinle paylaşılan %s klasör", "%s shared the file %s with you" => "%s sizinle paylaşılan %s klasör", diff --git a/apps/files_sharing/l10n/uk.php b/apps/files_sharing/l10n/uk.php index 8e1fa4bc98..cdc103ad46 100644 --- a/apps/files_sharing/l10n/uk.php +++ b/apps/files_sharing/l10n/uk.php @@ -1,6 +1,6 @@ "Пароль", -"Submit" => "Передати", +"Submit" => "Submit", "%s shared the folder %s with you" => "%s опублікував каталог %s для Вас", "%s shared the file %s with you" => "%s опублікував файл %s для Вас", "Download" => "Завантажити", diff --git a/apps/files_sharing/l10n/zh_TW.php b/apps/files_sharing/l10n/zh_TW.php index 14e4466ecb..f1d28731a7 100644 --- a/apps/files_sharing/l10n/zh_TW.php +++ b/apps/files_sharing/l10n/zh_TW.php @@ -1,9 +1,9 @@ "密碼", "Submit" => "送出", -"%s shared the folder %s with you" => "%s 和您分享了資料夾 %s ", -"%s shared the file %s with you" => "%s 和您分享了檔案 %s", +"%s shared the folder %s with you" => "%s 分享了資料夾 %s 給您", +"%s shared the file %s with you" => "%s 分享了檔案 %s 給您", "Download" => "下載", "No preview available for" => "無法預覽", -"web services under your control" => "由您控制的網路服務" +"web services under your control" => "在您掌控之下的網路服務" ); diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 733b783876..9fccd0b46f 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -44,7 +44,7 @@ class Shared_Cache extends Cache { $source = \OC_Share_Backend_File::getSource($target); if (isset($source['path']) && isset($source['fileOwner'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); - $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']); + $mount = \OC\Files\Mount::findByNumericId($source['storage']); if ($mount) { $fullPath = $mount->getMountPoint().$source['path']; list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($fullPath); diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 2facad0f7e..ffd4e5ced2 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -71,7 +71,7 @@ class Shared extends \OC\Files\Storage\Common { if ($source) { if (!isset($source['fullPath'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); - $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']); + $mount = \OC\Files\Mount::findByNumericId($source['storage']); if ($mount) { $this->files[$target]['fullPath'] = $mount->getMountPoint().$source['path']; } else { diff --git a/apps/files_trashbin/l10n/id.php b/apps/files_trashbin/l10n/id.php index 62a63d515a..e06c66784f 100644 --- a/apps/files_trashbin/l10n/id.php +++ b/apps/files_trashbin/l10n/id.php @@ -2,13 +2,13 @@ "Couldn't delete %s permanently" => "Tidak dapat menghapus permanen %s", "Couldn't restore %s" => "Tidak dapat memulihkan %s", "perform restore operation" => "jalankan operasi pemulihan", -"Error" => "Galat", +"Error" => "kesalahan", "delete file permanently" => "hapus berkas secara permanen", -"Delete permanently" => "Hapus secara permanen", +"Delete permanently" => "hapus secara permanen", "Name" => "Nama", "Deleted" => "Dihapus", -"1 folder" => "1 folder", -"{count} folders" => "{count} folder", +"1 folder" => "1 map", +"{count} folders" => "{count} map", "1 file" => "1 berkas", "{count} files" => "{count} berkas", "Nothing in here. Your trash bin is empty!" => "Tempat sampah anda kosong!", diff --git a/apps/files_trashbin/l10n/nn_NO.php b/apps/files_trashbin/l10n/nn_NO.php index 8166a024e5..14345ddcc4 100644 --- a/apps/files_trashbin/l10n/nn_NO.php +++ b/apps/files_trashbin/l10n/nn_NO.php @@ -1,10 +1,5 @@ "Feil", -"Delete permanently" => "Slett for godt", "Name" => "Namn", -"1 folder" => "1 mappe", -"{count} folders" => "{count} mapper", -"1 file" => "1 fil", -"{count} files" => "{count} filer", "Delete" => "Slett" ); diff --git a/apps/files_trashbin/l10n/pl.php b/apps/files_trashbin/l10n/pl.php index 5c9f558f11..7fd1ab21ec 100644 --- a/apps/files_trashbin/l10n/pl.php +++ b/apps/files_trashbin/l10n/pl.php @@ -8,9 +8,9 @@ "Name" => "Nazwa", "Deleted" => "Usunięte", "1 folder" => "1 folder", -"{count} folders" => "Ilość folderów: {count}", +"{count} folders" => "{count} foldery", "1 file" => "1 plik", -"{count} files" => "Ilość plików: {count}", +"{count} files" => "{count} pliki", "Nothing in here. Your trash bin is empty!" => "Nic tu nie ma. Twój kosz jest pusty!", "Restore" => "Przywróć", "Delete" => "Usuń", diff --git a/apps/files_trashbin/l10n/pt_PT.php b/apps/files_trashbin/l10n/pt_PT.php index ba85158b70..7dfe610466 100644 --- a/apps/files_trashbin/l10n/pt_PT.php +++ b/apps/files_trashbin/l10n/pt_PT.php @@ -13,6 +13,6 @@ "{count} files" => "{count} ficheiros", "Nothing in here. Your trash bin is empty!" => "Não hà ficheiros. O lixo está vazio!", "Restore" => "Restaurar", -"Delete" => "Eliminar", +"Delete" => "Apagar", "Deleted Files" => "Ficheiros Apagados" ); diff --git a/apps/files_trashbin/l10n/ro.php b/apps/files_trashbin/l10n/ro.php index 3af21b7e3f..c03ef600f3 100644 --- a/apps/files_trashbin/l10n/ro.php +++ b/apps/files_trashbin/l10n/ro.php @@ -1,6 +1,5 @@ "Eroare", -"Delete permanently" => "Stergere permanenta", "Name" => "Nume", "1 folder" => "1 folder", "{count} folders" => "{count} foldare", diff --git a/apps/files_trashbin/l10n/sk_SK.php b/apps/files_trashbin/l10n/sk_SK.php index 7cef36ef1c..7203f4c75f 100644 --- a/apps/files_trashbin/l10n/sk_SK.php +++ b/apps/files_trashbin/l10n/sk_SK.php @@ -5,7 +5,7 @@ "Error" => "Chyba", "delete file permanently" => "trvalo zmazať súbor", "Delete permanently" => "Zmazať trvalo", -"Name" => "Názov", +"Name" => "Meno", "Deleted" => "Zmazané", "1 folder" => "1 priečinok", "{count} folders" => "{count} priečinkov", diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 88c71a75ab..f0b56eef01 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -39,15 +39,14 @@ class Trashbin { $view = new \OC\Files\View('/'. $user); if (!$view->is_dir('files_trashbin')) { $view->mkdir('files_trashbin'); - $view->mkdir('files_trashbin/files'); - $view->mkdir('files_trashbin/versions'); - $view->mkdir('files_trashbin/keyfiles'); - $view->mkdir('files_trashbin/share-keys'); + $view->mkdir("files_trashbin/files"); + $view->mkdir("files_trashbin/versions"); + $view->mkdir("files_trashbin/keyfiles"); } $path_parts = pathinfo($file_path); - $filename = $path_parts['basename']; + $deleted = $path_parts['basename']; $location = $path_parts['dirname']; $timestamp = time(); $mime = $view->getMimeType('files'.$file_path); @@ -63,24 +62,45 @@ class Trashbin { $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); } - $sizeOfAddedFiles = self::copy_recursive($file_path, 'files_trashbin/files/'.$filename.'.d'.$timestamp, $view); - - if ( $view->file_exists('files_trashbin/files/'.$filename.'.d'.$timestamp) ) { + $sizeOfAddedFiles = self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view); + + if ( $view->file_exists('files_trashbin/files/'.$deleted.'.d'.$timestamp) ) { $trashbinSize += $sizeOfAddedFiles; $query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`type`,`mime`,`user`) VALUES (?,?,?,?,?,?)"); - $result = $query->execute(array($filename, $timestamp, $location, $type, $mime, $user)); + $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/files/'.$filename.'.d'.$timestamp); + $view->deleteAll('files_trashbin/files/'.$deleted.'.d'.$timestamp); \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR); return; } \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', array('filePath' => \OC\Files\Filesystem::normalizePath($file_path), - 'trashPath' => \OC\Files\Filesystem::normalizePath($filename.'.d'.$timestamp))); - - $trashbinSize += self::retainVersions($view, $file_path, $filename, $timestamp); - $trashbinSize += self::retainEncryptionKeys($view, $file_path, $filename, $timestamp); - + 'trashPath' => \OC\Files\Filesystem::normalizePath($deleted.'.d'.$timestamp))); + + // Take care of file versions + if ( \OCP\App::isEnabled('files_versions') ) { + if ( $view->is_dir('files_versions/'.$file_path) ) { + $trashbinSize += self::calculateSize(new \OC\Files\View('/'. $user.'/files_versions/'.$file_path)); + $view->rename('files_versions/'.$file_path, 'files_trashbin/versions'. $deleted.'.d'.$timestamp); + } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($user, $file_path) ) { + foreach ($versions as $v) { + $trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']); + $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'files_trashbin/versions/'. $deleted.'.v'.$v['version'].'.d'.$timestamp); + } + } + } + + // Take care of encryption keys + $keyfile = \OC\Files\Filesystem::normalizePath('files_encryption/keyfiles/'.$file_path); + if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile.'.key') ) { + if ( $view->is_dir('files'.$file_path) ) { + $trashbinSize += self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile)); + $view->rename($keyfile, 'files_trashbin/keyfiles/'. $deleted.'.d'.$timestamp); + } else { + $trashbinSize += $view->filesize($keyfile.'.key'); + $view->rename($keyfile.'.key', 'files_trashbin/keyfiles/'. $deleted.'.key.d'.$timestamp); + } + } } else { \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR); } @@ -91,134 +111,15 @@ class Trashbin { } - /** - * Move file versions to trash so that they can be restored later - * - * @param \OC\Files\View $view - * @param $file_path path to original file - * @param $filename of deleted file - * @param $timestamp when the file was deleted - * - * @return size of stored versions - */ - private static function retainVersions($view, $file_path, $filename, $timestamp) { - $size = 0; - if (\OCP\App::isEnabled('files_versions')) { - - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $user = \OCP\User::getUser(); - if ($view->is_dir('files_versions/' . $file_path)) { - $size += self::calculateSize(new \OC\Files\View('/' . $user . '/files_versions/' . $file_path)); - $view->rename('files_versions/' . $file_path, 'files_trashbin/versions/' . $filename . '.d' . $timestamp); - } else if ($versions = \OCA\Files_Versions\Storage::getVersions($user, $file_path)) { - foreach ($versions as $v) { - $size += $view->filesize('files_versions' . $v['path'] . '.v' . $v['version']); - $view->rename('files_versions' . $v['path'] . '.v' . $v['version'], 'files_trashbin/versions/' . $filename . '.v' . $v['version'] . '.d' . $timestamp); - } - } - - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - } - - return $size; - } - - /** - * Move encryption keys to trash so that they can be restored later - * - * @param \OC\Files\View $view - * @param $file_path path to original file - * @param $filename of deleted file - * @param $timestamp when the file was deleted - * - * @return size of encryption keys - */ - private static function retainEncryptionKeys($view, $file_path, $filename, $timestamp) { - $size = 0; - - if (\OCP\App::isEnabled('files_encryption')) { - - $user = \OCP\User::getUser(); - - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - // retain key files - $keyfile = \OC\Files\Filesystem::normalizePath('files_encryption/keyfiles/' . $file_path); - - if ($view->is_dir($keyfile) || $view->file_exists($keyfile . '.key')) { - $user = \OCP\User::getUser(); - // move keyfiles - if ($view->is_dir($keyfile)) { - $size += self::calculateSize(new \OC\Files\View('/' . $user . '/' . $keyfile)); - $view->rename($keyfile, 'files_trashbin/keyfiles/' . $filename . '.d' . $timestamp); - } else { - $size += $view->filesize($keyfile . '.key'); - $view->rename($keyfile . '.key', 'files_trashbin/keyfiles/' . $filename . '.key.d' . $timestamp); - } - } - - // retain share keys - $sharekeys = \OC\Files\Filesystem::normalizePath('files_encryption/share-keys/' . $file_path); - - if ($view->is_dir($sharekeys)) { - $size += self::calculateSize(new \OC\Files\View('/' . $user . '/' . $sharekeys)); - $view->rename($sharekeys, 'files_trashbin/share-keys/' . $filename . '.d' . $timestamp); - } else { - // get local path to share-keys - $localShareKeysPath = $view->getLocalFile($sharekeys); - - // handle share-keys - $matches = glob(preg_quote($localShareKeysPath).'*.shareKey'); - foreach ($matches as $src) { - // get source file parts - $pathinfo = pathinfo($src); - - // we only want to keep the owners key so we can access the private key - $ownerShareKey = $filename . '.' . $user. '.shareKey'; - - // if we found the share-key for the owner, we need to move it to files_trashbin - if($pathinfo['basename'] == $ownerShareKey) { - - // calculate size - $size += $view->filesize($sharekeys. '.' . $user. '.shareKey'); - - // move file - $view->rename($sharekeys. '.' . $user. '.shareKey', 'files_trashbin/share-keys/' . $ownerShareKey . '.d' . $timestamp); - } else { - - // calculate size - $size += filesize($src); - - // don't keep other share-keys - unlink($src); - } - } - - } - - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - } - return $size; - } /** * 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 - * - * @return bool - */ + */ public static function restore($file, $filename, $timestamp) { - - $user = \OCP\User::getUser(); + $user = \OCP\User::getUser(); $view = new \OC\Files\View('/'.$user); $trashbinSize = self::getTrashbinSize($user); @@ -256,17 +157,8 @@ class Trashbin { // we need a extension in case a file/dir with the same name already exists $ext = self::getUniqueExtension($location, $filename, $view); $mtime = $view->filemtime($source); - - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - // restore file - $restoreResult = $view->rename($source, $target.$ext); - - // handle the restore result - if( $restoreResult ) { - $view->touch($target.$ext, $mtime); + if( $view->rename($source, $target.$ext) ) { + $view->touch($target.$ext, $mtime); \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', array('filePath' => \OC\Files\Filesystem::normalizePath('/'.$location.'/'.$filename.$ext), 'trashPath' => \OC\Files\Filesystem::normalizePath($file))); @@ -275,183 +167,68 @@ class Trashbin { } else { $trashbinSize -= $view->filesize($target.$ext); } - - $trashbinSize -= self::restoreVersions($view, $file, $filename, $ext, $location, $timestamp); - $trashbinSize -= self::restoreEncryptionKeys($view, $file, $filename, $ext, $location, $timestamp); - + // if versioning app is enabled, copy versions from the trash bin back to the original location + if ( \OCP\App::isEnabled('files_versions') ) { + if ($timestamp ) { + $versionedFile = $filename; + } else { + $versionedFile = $file; + } + if ( $result[0]['type'] === 'dir' ) { + $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.'files_trashbin/versions/'. $file)); + $view->rename(\OC\Files\Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC\Files\Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext)); + } else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) { + foreach ($versions as $v) { + if ($timestamp ) { + $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp); + $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + } else { + $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v); + $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + } + } + } + } + + // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!) + $parts = pathinfo($file); + if ( $result[0]['type'] === 'dir' ) { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename); + } else { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename.'.key'); + } + if ($timestamp) { + $keyfile .= '.d'.$timestamp; + } + if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) { + if ( $result[0]['type'] === 'dir' ) { + $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile)); + $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename); + } else { + $trashbinSize -= $view->filesize($keyfile); + $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename.'.key'); + } + } + if ( $timestamp ) { $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=? AND `id`=? AND `timestamp`=?'); $query->execute(array($user,$filename,$timestamp)); } self::setTrashbinSize($user, $trashbinSize); - - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - + return true; + } else { + \OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename, \OC_log::ERROR); } - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - return false; } - /** - * @brief restore versions from trash bin - * - * @param \OC\Files\View $view file view - * @param $file complete path to file - * @param $filename name of file - * @param $ext file extension in case a file with the same $filename already exists - * @param $location location if file - * @param $timestamp deleteion time - * - * @return size of restored versions - */ - private static function restoreVersions($view, $file, $filename, $ext, $location, $timestamp) { - $size = 0; - if (\OCP\App::isEnabled('files_versions')) { - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $user = \OCP\User::getUser(); - if ($timestamp) { - $versionedFile = $filename; - } else { - $versionedFile = $file; - } - - if ($view->is_dir('/files_trashbin/versions/'.$file)) { - $size += self::calculateSize(new \OC\Files\View('/' . $user . '/' . 'files_trashbin/versions/' . $file)); - $view->rename(\OC\Files\Filesystem::normalizePath('files_trashbin/versions/' . $file), \OC\Files\Filesystem::normalizePath('files_versions/' . $location . '/' . $filename . $ext)); - } else if ($versions = self::getVersionsFromTrash($versionedFile, $timestamp)) { - foreach ($versions as $v) { - if ($timestamp) { - $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp); - $view->rename('files_trashbin/versions/' . $versionedFile . '.v' . $v . '.d' . $timestamp, 'files_versions/' . $location . '/' . $filename . $ext . '.v' . $v); - } else { - $size += $view->filesize('files_trashbin/versions/' . $versionedFile . '.v' . $v); - $view->rename('files_trashbin/versions/' . $versionedFile . '.v' . $v, 'files_versions/' . $location . '/' . $filename . $ext . '.v' . $v); - } - } - } - - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - } - return $size; - } - - - /** - * @brief restore encryption keys from trash bin - * - * @param \OC\Files\View $view - * @param $file complete path to file - * @param $filename name of file - * @param $ext file extension in case a file with the same $filename already exists - * @param $location location if file - * @param $timestamp deleteion time - * - * @return size of restored encrypted file - */ - private static function restoreEncryptionKeys($view, $file, $filename, $ext, $location, $timestamp) { - // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!) - $size = 0; - if (\OCP\App::isEnabled('files_encryption')) { - $user = \OCP\User::getUser(); - - $path_parts = pathinfo($file); - $source_location = $path_parts['dirname']; - - if ($view->is_dir('/files_trashbin/keyfiles/'.$file)) { - if($source_location != '.') { - $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/' . $source_location . '/' . $filename); - $sharekey = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $source_location . '/' . $filename); - } else { - $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/' . $filename); - $sharekey = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $filename); - } - } else { - $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/' . $source_location . '/' . $filename . '.key'); - } - - if ($timestamp) { - $keyfile .= '.d' . $timestamp; - } - - // disable proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - if ($view->file_exists($keyfile)) { - // handle directory - if ($view->is_dir($keyfile)) { - - // handle keyfiles - $size += self::calculateSize(new \OC\Files\View('/' . $user . '/' . $keyfile)); - $view->rename($keyfile, 'files_encryption/keyfiles/' . $location . '/' . $filename . $ext); - - // handle share-keys - if ($timestamp) { - $sharekey .= '.d' . $timestamp; - } - $view->rename($sharekey, 'files_encryption/share-keys/' . $location . '/' . $filename . $ext); - - } else { - // handle keyfiles - $size += $view->filesize($keyfile); - $view->rename($keyfile, 'files_encryption/keyfiles/' . $location . '/' . $filename . $ext . '.key'); - - // handle share-keys - $ownerShareKey = \OC\Files\Filesystem::normalizePath('files_trashbin/share-keys/' . $source_location . '/' . $filename . '.' . $user. '.shareKey'); - if ($timestamp) { - $ownerShareKey .= '.d' . $timestamp; - } - - $size += $view->filesize($ownerShareKey); - - // move only owners key - $view->rename($ownerShareKey, 'files_encryption/share-keys/' . $location . '/' . $filename . $ext . '.' . $user. '.shareKey'); - - // try to re-share if file is shared - $filesystemView = new \OC_FilesystemView('/'); - $session = new \OCA\Encryption\Session($filesystemView); - $util = new \OCA\Encryption\Util($filesystemView, $user); - - // fix the file size - $absolutePath = \OC\Files\Filesystem::normalizePath('/' . $user . '/files/'. $location. '/' .$filename); - $util->fixFileSize($absolutePath); - - // get current sharing state - $sharingEnabled = \OCP\Share::isEnabled(); - - // get the final filename - $target = \OC\Files\Filesystem::normalizePath($location.'/'.$filename); - - // get users sharing this file - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $target.$ext, $user); - - // Attempt to set shareKey - $util->setSharedFileKeyfiles($session, $usersSharing, $target.$ext); - } - } - - // enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - } - return $size; - } - /** - * @brief delete file from trash bin permanently - * + * delete file from trash bin permanently * @param $filename path to the file * @param $timestamp of deletion time - * * @return size of deleted files */ public static function delete($filename, $timestamp=null) { diff --git a/apps/files_versions/l10n/et_EE.php b/apps/files_versions/l10n/et_EE.php index c8d2f7cfac..930cfbc33a 100644 --- a/apps/files_versions/l10n/et_EE.php +++ b/apps/files_versions/l10n/et_EE.php @@ -7,5 +7,5 @@ "No old versions available" => "Vanu versioone pole saadaval", "No path specified" => "Asukohta pole määratud", "Versions" => "Versioonid", -"Revert a file to a previous version by clicking on its revert button" => "Taasta fail varasemale versioonile klikkides nupule \"Taasta\"" +"Revert a file to a previous version by clicking on its revert button" => "Taasta fail varasemale versioonile klikkides \"Revert\" nupule" ); diff --git a/apps/files_versions/l10n/he.php b/apps/files_versions/l10n/he.php index ad2e261d53..9eb4df6485 100644 --- a/apps/files_versions/l10n/he.php +++ b/apps/files_versions/l10n/he.php @@ -1,3 +1,5 @@ "גרסאות" +"History" => "היסטוריה", +"Files Versioning" => "שמירת הבדלי גרסאות של קבצים", +"Enable" => "הפעלה" ); diff --git a/apps/files_versions/l10n/ku_IQ.php b/apps/files_versions/l10n/ku_IQ.php index 9132caf75e..db5dbad49f 100644 --- a/apps/files_versions/l10n/ku_IQ.php +++ b/apps/files_versions/l10n/ku_IQ.php @@ -1,3 +1,5 @@ "وه‌شان" +"History" => "مێژوو", +"Files Versioning" => "وه‌شانی په‌ڕگه", +"Enable" => "چالاککردن" ); diff --git a/apps/files_versions/l10n/nb_NO.php b/apps/files_versions/l10n/nb_NO.php index df59dfe4c8..18c7250610 100644 --- a/apps/files_versions/l10n/nb_NO.php +++ b/apps/files_versions/l10n/nb_NO.php @@ -1,3 +1,5 @@ "Versjoner" +"History" => "Historie", +"Files Versioning" => "Fil versjonering", +"Enable" => "Aktiver" ); diff --git a/apps/files_versions/l10n/ro.php b/apps/files_versions/l10n/ro.php index cd9fc89dcc..7dfaee3672 100644 --- a/apps/files_versions/l10n/ro.php +++ b/apps/files_versions/l10n/ro.php @@ -1,11 +1,5 @@ "Nu a putut reveni: %s", -"success" => "success", -"File %s was reverted to version %s" => "Fisierul %s a revenit la versiunea %s", -"failure" => "eșec", -"File %s could not be reverted to version %s" => "Fisierele %s nu au putut reveni la versiunea %s", -"No old versions available" => "Versiunile vechi nu sunt disponibile", -"No path specified" => "Nici un dosar specificat", -"Versions" => "Versiuni", -"Revert a file to a previous version by clicking on its revert button" => "Readuceti un fișier la o versiune anterioară, făcând clic pe butonul revenire" +"History" => "Istoric", +"Files Versioning" => "Versionare fișiere", +"Enable" => "Activare" ); diff --git a/apps/files_versions/l10n/si_LK.php b/apps/files_versions/l10n/si_LK.php index c7ee63d8ef..37debf869b 100644 --- a/apps/files_versions/l10n/si_LK.php +++ b/apps/files_versions/l10n/si_LK.php @@ -1,3 +1,5 @@ "අනුවාද" +"History" => "ඉතිහාසය", +"Files Versioning" => "ගොනු අනුවාදයන්", +"Enable" => "සක්‍රිය කරන්න" ); diff --git a/apps/files_versions/l10n/ta_LK.php b/apps/files_versions/l10n/ta_LK.php index 61a47e42f0..aca76dcc26 100644 --- a/apps/files_versions/l10n/ta_LK.php +++ b/apps/files_versions/l10n/ta_LK.php @@ -1,3 +1,5 @@ "பதிப்புகள்" +"History" => "வரலாறு", +"Files Versioning" => "கோப்பு பதிப்புகள்", +"Enable" => "இயலுமைப்படுத்துக" ); diff --git a/apps/files_versions/l10n/th_TH.php b/apps/files_versions/l10n/th_TH.php index 2998f74838..e1e996903a 100644 --- a/apps/files_versions/l10n/th_TH.php +++ b/apps/files_versions/l10n/th_TH.php @@ -1,3 +1,5 @@ "รุ่น" +"History" => "ประวัติ", +"Files Versioning" => "การกำหนดเวอร์ชั่นของไฟล์", +"Enable" => "เปิดใช้งาน" ); diff --git a/apps/files_versions/l10n/vi.php b/apps/files_versions/l10n/vi.php index 33b045f2e3..f2499e7bf3 100644 --- a/apps/files_versions/l10n/vi.php +++ b/apps/files_versions/l10n/vi.php @@ -6,6 +6,5 @@ "File %s could not be reverted to version %s" => "File %s không thể khôi phục về phiên bản %s", "No old versions available" => "Không có phiên bản cũ nào", "No path specified" => "Không chỉ ra đường dẫn rõ ràng", -"Versions" => "Phiên bản", "Revert a file to a previous version by clicking on its revert button" => "Khôi phục một file về phiên bản trước đó bằng cách click vào nút Khôi phục tương ứng" ); diff --git a/apps/user_ldap/l10n/ca.php b/apps/user_ldap/l10n/ca.php index 8f2799b6e6..abdecb164e 100644 --- a/apps/user_ldap/l10n/ca.php +++ b/apps/user_ldap/l10n/ca.php @@ -15,7 +15,7 @@ "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Avís: El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", "Server configuration" => "Configuració del servidor", "Add Server Configuration" => "Afegeix la configuració del servidor", -"Host" => "Equip remot", +"Host" => "Màquina", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://", "Base DN" => "DN Base", "One Base DN per line" => "Una DN Base per línia", diff --git a/apps/user_ldap/l10n/fa.php b/apps/user_ldap/l10n/fa.php index 89fc40af4f..9a01a67703 100644 --- a/apps/user_ldap/l10n/fa.php +++ b/apps/user_ldap/l10n/fa.php @@ -10,7 +10,7 @@ "Server configuration" => "پیکربندی سرور", "Add Server Configuration" => "افزودن پیکربندی سرور", "Host" => "میزبانی", -"Password" => "گذرواژه", +"Password" => "رمز عبور", "Group Filter" => "فیلتر گروه", "Port" => "درگاه", "in bytes" => "در بایت", diff --git a/apps/user_ldap/l10n/gl.php b/apps/user_ldap/l10n/gl.php index 215d518e7a..deb6dbb555 100644 --- a/apps/user_ldap/l10n/gl.php +++ b/apps/user_ldap/l10n/gl.php @@ -3,7 +3,7 @@ "The configuration is valid and the connection could be established!" => "A configuración é correcta e pode estabelecerse a conexión.", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "A configuración é correcta, mais a ligazón non. Comprobe a configuración do servidor e as credenciais.", "The configuration is invalid. Please look in the ownCloud log for further details." => "A configuración non é correcta. Vexa o rexistro de ownCloud para máis detalles", -"Deletion failed" => "Produciuse un fallo ao eliminar", +"Deletion failed" => "Fallou o borrado", "Take over settings from recent server configuration?" => "Tomar os recentes axustes de configuración do servidor?", "Keep settings?" => "Manter os axustes?", "Cannot add server configuration" => "Non é posíbel engadir a configuración do servidor", diff --git a/apps/user_ldap/l10n/hi.php b/apps/user_ldap/l10n/hi.php index 45166eb0e3..60d4ea98e8 100644 --- a/apps/user_ldap/l10n/hi.php +++ b/apps/user_ldap/l10n/hi.php @@ -1,4 +1,3 @@ "पासवर्ड", "Help" => "सहयोग" ); diff --git a/apps/user_ldap/l10n/hr.php b/apps/user_ldap/l10n/hr.php index 005a76d4bb..9150331506 100644 --- a/apps/user_ldap/l10n/hr.php +++ b/apps/user_ldap/l10n/hr.php @@ -1,4 +1,3 @@ "Lozinka", "Help" => "Pomoć" ); diff --git a/apps/user_ldap/l10n/ia.php b/apps/user_ldap/l10n/ia.php index 38374abda7..3586bf5a2e 100644 --- a/apps/user_ldap/l10n/ia.php +++ b/apps/user_ldap/l10n/ia.php @@ -1,4 +1,3 @@ "Contrasigno", "Help" => "Adjuta" ); diff --git a/apps/user_ldap/l10n/id.php b/apps/user_ldap/l10n/id.php index 5f76d6b99f..1f6d8fcffe 100644 --- a/apps/user_ldap/l10n/id.php +++ b/apps/user_ldap/l10n/id.php @@ -3,7 +3,7 @@ "The configuration is valid and the connection could be established!" => "Konfigurasi valid dan koneksi dapat dilakukan!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurasi valid, tetapi Bind gagal. Silakan cek pengaturan server dan keamanan.", "The configuration is invalid. Please look in the ownCloud log for further details." => "Konfigurasi salah. Silakan lihat log ownCloud untuk lengkapnya.", -"Deletion failed" => "Penghapusan gagal", +"Deletion failed" => "penghapusan gagal", "Take over settings from recent server configuration?" => "Ambil alih pengaturan dari konfigurasi server saat ini?", "Keep settings?" => "Biarkan pengaturan?", "Cannot add server configuration" => "Gagal menambah konfigurasi server", @@ -15,14 +15,14 @@ "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Peringatan: Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.", "Server configuration" => "Konfigurasi server", "Add Server Configuration" => "Tambah Konfigurasi Server", -"Host" => "Host", +"Host" => "host", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol dapat tidak ditulis, kecuali anda menggunakan SSL. Lalu jalankan dengan ldaps://", "Base DN" => "Base DN", "One Base DN per line" => "Satu Base DN per baris", "You can specify Base DN for users and groups in the Advanced tab" => "Anda dapat menetapkan Base DN untuk pengguna dan grup dalam tab Lanjutan", "User DN" => "User 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 dari klien pengguna yang dengannya tautan akan diterapkan, mis. uid=agen,dc=contoh,dc=com. Untuk akses anonim, biarkan DN dan kata sandi kosong.", -"Password" => "Sandi", +"Password" => "kata kunci", "For anonymous access, leave DN and Password empty." => "Untuk akses anonim, biarkan DN dan Kata sandi kosong.", "User Login Filter" => "gunakan saringan login", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Definisikan filter untuk diterapkan, saat login dilakukan. %%uid menggantikan username saat login.", @@ -71,5 +71,5 @@ "User Home Folder Naming Rule" => "Aturan Penamaan Folder Home Pengguna", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", "Test Configuration" => "Uji Konfigurasi", -"Help" => "Bantuan" +"Help" => "bantuan" ); diff --git a/apps/user_ldap/l10n/ku_IQ.php b/apps/user_ldap/l10n/ku_IQ.php index f8f893834b..1ae808ddd9 100644 --- a/apps/user_ldap/l10n/ku_IQ.php +++ b/apps/user_ldap/l10n/ku_IQ.php @@ -1,4 +1,3 @@ "وشەی تێپەربو", "Help" => "یارمەتی" ); diff --git a/apps/user_ldap/l10n/ms_MY.php b/apps/user_ldap/l10n/ms_MY.php index 88ed18346c..17a6cbe2cb 100644 --- a/apps/user_ldap/l10n/ms_MY.php +++ b/apps/user_ldap/l10n/ms_MY.php @@ -1,5 +1,4 @@ "Pemadaman gagal", -"Password" => "Kata laluan", "Help" => "Bantuan" ); diff --git a/apps/user_ldap/l10n/nn_NO.php b/apps/user_ldap/l10n/nn_NO.php index 1adac1b102..54d1f158f6 100644 --- a/apps/user_ldap/l10n/nn_NO.php +++ b/apps/user_ldap/l10n/nn_NO.php @@ -1,4 +1,3 @@ "Passord", "Help" => "Hjelp" ); diff --git a/apps/user_ldap/l10n/oc.php b/apps/user_ldap/l10n/oc.php index 49b6c5970c..a128638172 100644 --- a/apps/user_ldap/l10n/oc.php +++ b/apps/user_ldap/l10n/oc.php @@ -1,5 +1,4 @@ "Fracàs d'escafatge", -"Password" => "Senhal", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/pl.php b/apps/user_ldap/l10n/pl.php index a5b620e48b..776aa445e4 100644 --- a/apps/user_ldap/l10n/pl.php +++ b/apps/user_ldap/l10n/pl.php @@ -3,7 +3,7 @@ "The configuration is valid and the connection could be established!" => "Konfiguracja jest prawidłowa i można ustanowić połączenie!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.", "The configuration is invalid. Please look in the ownCloud log for further details." => "Konfiguracja jest nieprawidłowa. Proszę przejrzeć logi dziennika ownCloud ", -"Deletion failed" => "Usunięcie nie powiodło się", +"Deletion failed" => "Skasowanie nie powiodło się", "Take over settings from recent server configuration?" => "Przejmij ustawienia z ostatnich konfiguracji serwera?", "Keep settings?" => "Zachować ustawienia?", "Cannot add server configuration" => "Nie można dodać konfiguracji serwera", diff --git a/apps/user_ldap/l10n/pt_PT.php b/apps/user_ldap/l10n/pt_PT.php index 02b03d5a75..3092d06143 100644 --- a/apps/user_ldap/l10n/pt_PT.php +++ b/apps/user_ldap/l10n/pt_PT.php @@ -22,7 +22,7 @@ "You can specify Base DN for users and groups in the Advanced tab" => "Pode especificar o ND Base para utilizadores e grupos no separador Avançado", "User DN" => "DN do utilizador", "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." => "O DN to cliente ", -"Password" => "Password", +"Password" => "Palavra-passe", "For anonymous access, leave DN and Password empty." => "Para acesso anónimo, deixe DN e a Palavra-passe vazios.", "User Login Filter" => "Filtro de login de utilizador", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define o filtro a aplicar, para aquando de uma tentativa de login. %%uid substitui o nome de utilizador utilizado.", diff --git a/apps/user_ldap/l10n/sr@latin.php b/apps/user_ldap/l10n/sr@latin.php index 005a76d4bb..9150331506 100644 --- a/apps/user_ldap/l10n/sr@latin.php +++ b/apps/user_ldap/l10n/sr@latin.php @@ -1,4 +1,3 @@ "Lozinka", "Help" => "Pomoć" ); diff --git a/apps/user_ldap/l10n/tr.php b/apps/user_ldap/l10n/tr.php index e6d450301e..7bcabb0448 100644 --- a/apps/user_ldap/l10n/tr.php +++ b/apps/user_ldap/l10n/tr.php @@ -1,49 +1,28 @@ "Uyunlama mantikli ve baglama yerlestirmek edebilmi.", -"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Uyunlama gecerli, fakat Baglama yapamadi. Lutfen kontrol yapmak, eger bu iyi yerlertirdi. ", -"The configuration is invalid. Please look in the ownCloud log for further details." => "Uyunma mantikli degil. Lutfen log daha kontrol yapmak. ", "Deletion failed" => "Silme başarısız oldu", -"Take over settings from recent server configuration?" => "Parametri sonadan uyunlama cikarmak mi?", "Keep settings?" => "Ayarları kalsınmı?", -"Cannot add server configuration" => "Sunucu uyunlama birlemek edemen. ", "Connection test succeeded" => "Bağlantı testi başarılı oldu", "Connection test failed" => "Bağlantı testi başarısız oldu", -"Do you really want to delete the current Server Configuration?" => "Hakikatten, Sonuncu Funksyon durmak istiyor mi?", "Confirm Deletion" => "Silmeyi onayla", -"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Uyari Apps kullanici_Idap ve user_webdavauth uyunmayan. Bu belki sik degil. Lutfen sistem yonetici sormak on aktif yapmaya. ", -"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Ihbar Modulu PHP LDAP yuklemdi degil, backend calismacak. Lutfen sistem yonetici sormak yuklemek icin.", "Host" => "Sunucu", -"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol atlamak edesin, sadece SSL istiyorsaniz. O zaman, idapsile baslamak. ", "Base DN" => "Ana DN", -"One Base DN per line" => "Bir Tabani DN herbir dizi. ", -"You can specify Base DN for users and groups in the Advanced tab" => "Base DN kullanicileri ve kaynaklari icin tablosu Advanced tayin etmek ederiz. ", "User DN" => "Kullanıcı 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 musterinin, kimle baglamaya yapacagiz,meselâ uid=agent.dc mesela, dc=com Gecinme adisiz ici, DN ve Parola bos birakmak. ", "Password" => "Parola", "For anonymous access, leave DN and Password empty." => "Anonim erişim için DN ve Parola alanlarını boş bırakın.", "User Login Filter" => "Kullanıcı Oturum Filtresi", -"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Filter uyunlamak icin tayin ediyor, ne zaman girişmek isteminiz. % % uid adi kullanici girismeye karsi koymacak. ", "use %%uid placeholder, e.g. \"uid=%%uid\"" => "%%uid yer tutucusunu kullanın, örneğin \"uid=%%uid\"", "User List Filter" => "Kullanıcı Liste Filtresi", -"Defines the filter to apply, when retrieving users." => "Filter uyunmak icin tayin ediyor, ne zaman adi kullanici geri aliyor. ", "without any placeholder, e.g. \"objectClass=person\"." => "bir yer tutucusu olmadan, örneğin \"objectClass=person\"", "Group Filter" => "Grup Süzgeci", -"Defines the filter to apply, when retrieving groups." => "Filter uyunmak icin tayin ediyor, ne zaman grubalari tekrar aliyor. ", -"without any placeholder, e.g. \"objectClass=posixGroup\"." => "siz bir yer tutucu, mes. 'objectClass=posixGroup ('posixGrubu''. ", "Connection Settings" => "Bağlantı ayarları", "Port" => "Port", "Disable Main Server" => "Ana sunucuyu devredışı birak", "Use TLS" => "TLS kullan", "Turn off SSL certificate validation." => "SSL sertifika doğrulamasını kapat.", -"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Bagladiginda, bunla secene sadece calisiyor, sunucu LDAP SSL sunucun ithal etemek, dneyme sizine sunucu ownClouden. ", "Not recommended, use for testing only." => "Önerilmez, sadece test için kullanın.", "in seconds. A change empties the cache." => "saniye cinsinden. Bir değişiklik önbelleği temizleyecektir.", -"User Display Name Field" => "Ekran Adi Kullanici, (Alan Adi Kullanici Ekrane)", "Base User Tree" => "Temel Kullanıcı Ağacı", -"Group Display Name Field" => "Grub Ekrane Alani Adi", -"The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP kullamayin grub adi ownCloud uremek icin. ", "Base Group Tree" => "Temel Grup Ağacı", -"One Group Base DN per line" => "Bir Grubu Tabani DN her dizgi. ", "Group-Member association" => "Grup-Üye işbirliği", "in bytes" => "byte cinsinden", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Kullanıcı adı bölümünü boş bırakın (varsayılan). ", diff --git a/core/css/styles.css b/core/css/styles.css index 93f2cecbfe..4dfa3f64a3 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -220,8 +220,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } } #login #databaseField .infield { padding-left:0; } #login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; } -#login form .errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } -#login .success { background:#d7fed7; border:1px solid #0f0; width: 35%; margin: 30px auto; padding:1em; text-align: center;} /* Show password toggle */ #show, #dbpassword { position:absolute; right:1em; top:.8em; float:right; } @@ -344,8 +342,8 @@ li.update, li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; bac .center { text-align:center; } #notification-container { position: fixed; top: 0px; width: 100%; text-align: center; z-index: 101; line-height: 1.2;} -#notification, #update-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, #update-notification span { cursor:pointer; font-weight:bold; margin-left:1em; } +#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: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; } diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js index e1737643b4..0f4678327a 100644 --- a/core/js/jquery-showpassword.js +++ b/core/js/jquery-showpassword.js @@ -35,8 +35,7 @@ 'style' : $element.attr('style'), 'size' : $element.attr('size'), 'name' : $element.attr('name')+'-clone', - 'tabindex' : $element.attr('tabindex'), - 'autocomplete' : 'off' + 'tabindex' : $element.attr('tabindex') }); return $clone; @@ -103,16 +102,7 @@ $clone.bind('blur', function() { $input.trigger('focusout'); }); setState( $checkbox, $input, $clone ); - - // set type of password field clone (type=text) to password right on submit - // to prevent browser save the value of this field - $clone.closest('form').submit(function(e) { - // .prop has to be used, because .attr throws - // an error while changing a type of an input - // element - $clone.prop('type', 'password'); - }); - + if( callback.fn ){ callback.fn( callback.args ); } diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 587e59695c..4d413715de 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -30,7 +30,7 @@ "October" => "تشرين الاول", "November" => "تشرين الثاني", "December" => "كانون الاول", -"Settings" => "إعدادات", +"Settings" => "تعديلات", "seconds ago" => "منذ ثواني", "1 minute ago" => "منذ دقيقة", "{minutes} minutes ago" => "{minutes} منذ دقائق", @@ -63,7 +63,7 @@ "Share with" => "شارك مع", "Share with link" => "شارك مع رابط", "Password protect" => "حماية كلمة السر", -"Password" => "كلمة المرور", +"Password" => "كلمة السر", "Email link to person" => "ارسل الرابط بالبريد الى صديق", "Send" => "أرسل", "Set expiration date" => "تعيين تاريخ إنتهاء الصلاحية", @@ -89,21 +89,23 @@ "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." => "سوف نرسل لك بريد يحتوي على وصلة لتجديد كلمة السر.", +"Reset email send." => "إعادة إرسال البريد الإلكتروني.", +"Request failed!" => "فشل الطلب", "Username" => "إسم المستخدم", "Request reset" => "طلب تعديل", "Your password was reset" => "لقد تم تعديل كلمة السر", "To login page" => "الى صفحة الدخول", -"New password" => "كلمات سر جديدة", +"New password" => "كلمة سر جديدة", "Reset password" => "تعديل كلمة السر", -"Personal" => "شخصي", -"Users" => "المستخدمين", +"Personal" => "خصوصيات", +"Users" => "المستخدم", "Apps" => "التطبيقات", -"Admin" => "المدير", +"Admin" => "مستخدم رئيسي", "Help" => "المساعدة", "Access forbidden" => "التوصّل محظور", "Cloud not found" => "لم يتم إيجاد", "Edit categories" => "عدل الفئات", -"Add" => "اضف", +"Add" => "أدخل", "Security Warning" => "تحذير أمان", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)", "Please update your PHP installation to use ownCloud securely." => "Please update your PHP installation to use ownCloud securely.", @@ -112,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.", "For information how to properly configure your server, please see the documentation." => "للحصول على معلومات عن كيفية اعداد الخادم الخاص بك , يرجى زيارة الرابط التالي documentation.", "Create an admin account" => "أضف مستخدم رئيسي ", -"Advanced" => "تعديلات متقدمه", +"Advanced" => "خيارات متقدمة", "Data folder" => "مجلد المعلومات", "Configure the database" => "أسس قاعدة البيانات", "will be used" => "سيتم استخدمه", @@ -122,7 +124,7 @@ "Database tablespace" => "مساحة جدول قاعدة البيانات", "Database host" => "خادم قاعدة البيانات", "Finish setup" => "انهاء التعديلات", -"web services under your control" => "خدمات الشبكة تحت سيطرتك", +"web services under your control" => "خدمات الوب تحت تصرفك", "Log out" => "الخروج", "Automatic logon rejected!" => "تم رفض تسجيل الدخول التلقائي!", "If you did not change your password recently, your account may be compromised!" => "قد يكون حسابك في خطر إن لم تقم بإعادة تعيين كلمة السر حديثاً", diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index 74e28bf290..dadb570d93 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -1,24 +1,4 @@ "Няма избрани категории за изтриване", -"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 минута", @@ -28,45 +8,16 @@ "last month" => "последният месец", "last year" => "последната година", "years ago" => "последните години", -"Ok" => "Добре", "Cancel" => "Отказ", -"Yes" => "Да", -"No" => "Не", "Error" => "Грешка", "Share" => "Споделяне", -"Share with" => "Споделено с", "Password" => "Парола", -"create" => "създаване", -"You will receive a link to reset your password via Email." => "Ще получите връзка за нулиране на паролата Ви.", -"Username" => "Потребител", -"Request reset" => "Нулиране на заявка", -"Your password was reset" => "Вашата парола е нулирана", "New password" => "Нова парола", -"Reset password" => "Нулиране на парола", "Personal" => "Лични", "Users" => "Потребители", "Apps" => "Приложения", "Admin" => "Админ", "Help" => "Помощ", -"Access forbidden" => "Достъпът е забранен", -"Cloud not found" => "облакът не намерен", -"Edit categories" => "Редактиране на категориите", "Add" => "Добавяне", -"Create an admin account" => "Създаване на админ профил", -"Advanced" => "Разширено", -"Data folder" => "Директория за данни", -"Configure the database" => "Конфигуриране на базата", -"will be used" => "ще се ползва", -"Database user" => "Потребител за базата", -"Database password" => "Парола за базата", -"Database name" => "Име на базата", -"Database host" => "Хост за базата", -"Finish setup" => "Завършване на настройките", -"web services under your control" => "уеб услуги под Ваш контрол", -"Log out" => "Изход", -"Lost your password?" => "Забравена парола?", -"remember" => "запомни", -"Log in" => "Вход", -"prev" => "пред.", -"next" => "следващо" +"web services under your control" => "уеб услуги под Ваш контрол" ); diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php index 63a80edad3..1b18b6ae3e 100644 --- a/core/l10n/bn_BD.php +++ b/core/l10n/bn_BD.php @@ -8,13 +8,13 @@ "Object type not provided." => "অবজেক্টের ধরণটি প্রদান করা হয় নি।", "%s ID not provided." => "%s ID প্রদান করা হয় নি।", "Error adding %s to favorites." => "প্রিয়তে %s যোগ করতে সমস্যা দেখা দিয়েছে।", -"No categories selected for deletion." => "মুছে ফেলার জন্য কনো ক্যাটেগরি নির্বাচন করা হয় নি।", +"No categories selected for deletion." => "মুছে ফেলার জন্য কোন ক্যাটেগরি নির্বাচন করা হয় নি ।", "Error removing %s from favorites." => "প্রিয় থেকে %s সরিয়ে ফেলতে সমস্যা দেখা দিয়েছে।", "Sunday" => "রবিবার", "Monday" => "সোমবার", "Tuesday" => "মঙ্গলবার", "Wednesday" => "বুধবার", -"Thursday" => "বৃহস্পতিবার", +"Thursday" => "বৃহষ্পতিবার", "Friday" => "শুক্রবার", "Saturday" => "শনিবার", "January" => "জানুয়ারি", @@ -31,14 +31,14 @@ "December" => "ডিসেম্বর", "Settings" => "নিয়ামকসমূহ", "seconds ago" => "সেকেন্ড পূর্বে", -"1 minute ago" => "১ মিনিট পূর্বে", +"1 minute ago" => "1 মিনিট পূর্বে", "{minutes} minutes ago" => "{minutes} মিনিট পূর্বে", "1 hour ago" => "1 ঘন্টা পূর্বে", "{hours} hours ago" => "{hours} ঘন্টা পূর্বে", "today" => "আজ", "yesterday" => "গতকাল", "{days} days ago" => "{days} দিন পূর্বে", -"last month" => "গত মাস", +"last month" => "গতমাস", "{months} months ago" => "{months} মাস পূর্বে", "months ago" => "মাস পূর্বে", "last year" => "গত বছর", @@ -71,7 +71,7 @@ "No people found" => "কোন ব্যক্তি খুঁজে পাওয়া গেল না", "Resharing is not allowed" => "পূনঃরায় ভাগাভাগি অনুমোদিত নয়", "Shared in {item} with {user}" => "{user} এর সাথে {item} ভাগাভাগি করা হয়েছে", -"Unshare" => "ভাগাভাগি বাতিল ", +"Unshare" => "ভাগাভাগি বাতিল কর", "can edit" => "সম্পাদনা করতে পারবেন", "access control" => "অধিগম্যতা নিয়ন্ত্রণ", "create" => "তৈরী করুন", @@ -86,6 +86,8 @@ "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." => "কূটশব্দ পূনঃনির্ধারণের জন্য একটি টূনঃনির্ধারণ লিংকটি আপনাকে ই-মেইলে পাঠানো হয়েছে ।", +"Reset email send." => "পূনঃনির্ধারণ ই-মেইল পাঠানো হয়েছে।", +"Request failed!" => "অনুরোধ ব্যর্থ !", "Username" => "ব্যবহারকারী", "Request reset" => "অনুরোধ পূনঃনির্ধারণ", "Your password was reset" => "আপনার কূটশব্দটি পূনঃনির্ধারণ করা হয়েছে", @@ -94,7 +96,7 @@ "Reset password" => "কূটশব্দ পূনঃনির্ধারণ কর", "Personal" => "ব্যক্তিগত", "Users" => "ব্যবহারকারী", -"Apps" => "অ্যাপ", +"Apps" => "অ্যাপস", "Admin" => "প্রশাসন", "Help" => "সহায়িকা", "Access forbidden" => "অধিগমনের অনুমতি নেই", @@ -113,7 +115,7 @@ "Database tablespace" => "ডাটাবেজ টেবলস্পেস", "Database host" => "ডাটাবেজ হোস্ট", "Finish setup" => "সেটআপ সুসম্পন্ন কর", -"web services under your control" => "ওয়েব সার্ভিস আপনার হাতের মুঠোয়", +"web services under your control" => "ওয়েব সার্ভিসের নিয়ন্ত্রণ আপনার হাতের মুঠোয়", "Log out" => "প্রস্থান", "Lost your password?" => "কূটশব্দ হারিয়েছেন?", "remember" => "মনে রাখ", diff --git a/core/l10n/ca.php b/core/l10n/ca.php index 818c5b20b9..91b51d1b31 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -30,7 +30,7 @@ "October" => "Octubre", "November" => "Novembre", "December" => "Desembre", -"Settings" => "Configuració", +"Settings" => "Arranjament", "seconds ago" => "segons enrere", "1 minute ago" => "fa 1 minut", "{minutes} minutes ago" => "fa {minutes} minuts", @@ -89,6 +89,8 @@ "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.", +"Reset email send." => "S'ha enviat el correu reinicialització", +"Request failed!" => "El requeriment ha fallat!", "Username" => "Nom d'usuari", "Request reset" => "Sol·licita reinicialització", "Your password was reset" => "La vostra contrasenya s'ha reinicialitzat", @@ -98,7 +100,7 @@ "Personal" => "Personal", "Users" => "Usuaris", "Apps" => "Aplicacions", -"Admin" => "Administració", +"Admin" => "Administrador", "Help" => "Ajuda", "Access forbidden" => "Accés prohibit", "Cloud not found" => "No s'ha trobat el núvol", diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index 47206be618..15c89106e5 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -88,9 +88,9 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Odkaz na obnovení hesla byl odeslán na vaši e-mailovou adresu.
Pokud jej v krátké době neobdržíte, zkontrolujte váš koš a složku spam.
Pokud jej nenaleznete, kontaktujte svého správce.", -"Request failed!
Did you make sure your email/username was right?" => "Požadavek selhal.
Ujistili jste se, že vaše uživatelské jméno a e-mail jsou správně?", "You will receive a link to reset your password via Email." => "Bude Vám e-mailem zaslán odkaz pro obnovu hesla.", +"Reset email send." => "Obnovovací e-mail odeslán.", +"Request failed!" => "Požadavek selhal.", "Username" => "Uživatelské jméno", "Request reset" => "Vyžádat obnovu", "Your password was reset" => "Vaše heslo bylo obnoveno", @@ -124,7 +124,7 @@ "Database tablespace" => "Tabulkový prostor databáze", "Database host" => "Hostitel databáze", "Finish setup" => "Dokončit nastavení", -"web services under your control" => "služby webu pod Vaší kontrolou", +"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.", "If you did not change your password recently, your account may be compromised!" => "V nedávné době jste nezměnili své heslo, Váš účet může být kompromitován.", diff --git a/core/l10n/cy_GB.php b/core/l10n/cy_GB.php index d614797eb6..4d28ae29a9 100644 --- a/core/l10n/cy_GB.php +++ b/core/l10n/cy_GB.php @@ -89,6 +89,8 @@ "ownCloud password reset" => "ailosod cyfrinair ownCloud", "Use the following link to reset your password: {link}" => "Defnyddiwch y ddolen hon i ailosod eich cyfrinair: {link}", "You will receive a link to reset your password via Email." => "Byddwch yn derbyn dolen drwy e-bost i ailosod eich cyfrinair.", +"Reset email send." => "Ailosod anfon e-bost.", +"Request failed!" => "Methodd y cais!", "Username" => "Enw defnyddiwr", "Request reset" => "Gwneud cais i ailosod", "Your password was reset" => "Ailosodwyd eich cyfrinair", diff --git a/core/l10n/da.php b/core/l10n/da.php index 43b2f4f840..286f524b67 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -45,7 +45,7 @@ "last year" => "sidste år", "years ago" => "år siden", "Ok" => "OK", -"Cancel" => "Annuller", +"Cancel" => "Fortryd", "Choose" => "Vælg", "Yes" => "Ja", "No" => "Nej", @@ -89,13 +89,15 @@ "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.", +"Reset email send." => "Reset-mail afsendt.", +"Request failed!" => "Anmodningen mislykkedes!", "Username" => "Brugernavn", "Request reset" => "Anmod om nulstilling", "Your password was reset" => "Dit kodeord blev nulstillet", "To login page" => "Til login-side", "New password" => "Nyt kodeord", "Reset password" => "Nulstil kodeord", -"Personal" => "Personligt", +"Personal" => "Personlig", "Users" => "Brugere", "Apps" => "Apps", "Admin" => "Admin", diff --git a/core/l10n/de.php b/core/l10n/de.php index c173e56c1f..3af653b9ac 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -88,9 +88,9 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Der Link zum Rücksetzen Deines Passwort ist an Deine E-Mail-Adresse geschickt worden.
Wenn Du ihn nicht innerhalb einer vernünftigen Zeit empfängst prüfe Deine Spam-Verzeichnisse.
Wenn er nicht dort ist frage Deinen lokalen Administrator.", -"Request failed!
Did you make sure your email/username was right?" => "Anfrage fehlgeschlagen!
Hast Du darauf geachtet, dass Deine E-Mail/Dein Benutzername korrekt war?", "You will receive a link to reset your password via Email." => "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.", +"Reset email send." => "Die E-Mail zum Zurücksetzen wurde versendet.", +"Request failed!" => "Die Anfrage schlug fehl!", "Username" => "Benutzername", "Request reset" => "Beantrage Zurücksetzung", "Your password was reset" => "Dein Passwort wurde zurückgesetzt.", @@ -99,8 +99,8 @@ "Reset password" => "Passwort zurücksetzen", "Personal" => "Persönlich", "Users" => "Benutzer", -"Apps" => "Apps", -"Admin" => "Administration", +"Apps" => "Anwendungen", +"Admin" => "Admin", "Help" => "Hilfe", "Access forbidden" => "Zugriff verboten", "Cloud not found" => "Cloud nicht gefunden", @@ -124,7 +124,7 @@ "Database tablespace" => "Datenbank-Tablespace", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"web services under your control" => "Web-Services unter Deiner Kontrolle", +"web services under your control" => "Web-Services unter Ihrer Kontrolle", "Log out" => "Abmelden", "Automatic logon rejected!" => "Automatischer Login zurückgewiesen!", "If you did not change your password recently, your account may be compromised!" => "Wenn Du Dein Passwort nicht vor kurzem geändert hast, könnte Dein\nAccount kompromittiert sein!", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index b69868e5e5..4065f2484f 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -43,7 +43,7 @@ "{months} months ago" => "Vor {months} Monaten", "months ago" => "Vor Monaten", "last year" => "Letztes Jahr", -"years ago" => "Vor Jahren", +"years ago" => "Vor Jahren", "Ok" => "OK", "Cancel" => "Abbrechen", "Choose" => "Auswählen", @@ -88,9 +88,9 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Der Link zum Rücksetzen Ihres Passworts ist an Ihre E-Mail-Adresse gesendet worde.
Wenn Sie ihn nicht innerhalb einer sinnvollen Zeitspanne erhalten prüfen Sie bitte Ihre Spam-Verzeichnisse.
Wenn er nicht dort ist fragen Sie Ihren lokalen Administrator.", -"Request failed!
Did you make sure your email/username was right?" => "Anfrage fehlgeschlagen!
Haben Sie darauf geachtet, dass E-Mail-Adresse/Nutzername korrekt waren?", "You will receive a link to reset your password via Email." => "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.", +"Reset email send." => "Eine E-Mail zum Zurücksetzen des Passworts wurde gesendet.", +"Request failed!" => "Die Anfrage schlug fehl!", "Username" => "Benutzername", "Request reset" => "Zurücksetzung beantragen", "Your password was reset" => "Ihr Passwort wurde zurückgesetzt.", @@ -99,12 +99,12 @@ "Reset password" => "Passwort zurücksetzen", "Personal" => "Persönlich", "Users" => "Benutzer", -"Apps" => "Apps", -"Admin" => "Administrator", +"Apps" => "Anwendungen", +"Admin" => "Admin", "Help" => "Hilfe", "Access forbidden" => "Zugriff verboten", "Cloud not found" => "Cloud wurde nicht gefunden", -"Edit categories" => "Kategorien ändern", +"Edit categories" => "Kategorien bearbeiten", "Add" => "Hinzufügen", "Security Warning" => "Sicherheitshinweis", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Ihre PHP Version ist durch die NULL Byte Attacke (CVE-2006-7243) angreifbar", diff --git a/core/l10n/el.php b/core/l10n/el.php index dbe0d0ee3d..4fc5b4aa86 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -88,10 +88,10 @@ "The update was successful. Redirecting you to ownCloud now." => "Η ενημέρωση ήταν επιτυχής. Μετάβαση στο ownCloud.", "ownCloud password reset" => "Επαναφορά συνθηματικού ownCloud", "Use the following link to reset your password: {link}" => "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επανεκδόσετε τον κωδικό: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Ο σύνδεσμος για να επανακτήσετε τον κωδικό σας έχει σταλεί στο email
αν δεν το λάβετε μέσα σε ορισμένο διάστημα, ελέγξετε τους φακελλους σας spam/junk
αν δεν είναι εκεί ρωτήστε τον τοπικό σας διαχειριστή ", -"Request failed!
Did you make sure your email/username was right?" => "Η αίτηση απέτυχε! Βεβαιωθηκατε ότι το email σας / username ειναι σωστο? ", "You will receive a link to reset your password via Email." => "Θα λάβετε ένα σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας μέσω ηλεκτρονικού ταχυδρομείου.", -"Username" => "Όνομα χρήστη", +"Reset email send." => "Η επαναφορά του email στάλθηκε.", +"Request failed!" => "Η αίτηση απέτυχε!", +"Username" => "Όνομα Χρήστη", "Request reset" => "Επαναφορά αίτησης", "Your password was reset" => "Ο κωδικός πρόσβασής σας επαναφέρθηκε", "To login page" => "Σελίδα εισόδου", @@ -124,7 +124,7 @@ "Database tablespace" => "Κενά Πινάκων Βάσης Δεδομένων", "Database host" => "Διακομιστής βάσης δεδομένων", "Finish setup" => "Ολοκλήρωση εγκατάστασης", -"web services under your control" => "υπηρεσίες δικτύου υπό τον έλεγχό σας", +"web services under your control" => "Υπηρεσίες web υπό τον έλεγχό σας", "Log out" => "Αποσύνδεση", "Automatic logon rejected!" => "Απορρίφθηκε η αυτόματη σύνδεση!", "If you did not change your password recently, your account may be compromised!" => "Εάν δεν αλλάξατε το συνθηματικό σας προσφάτως, ο λογαριασμός μπορεί να έχει διαρρεύσει!", diff --git a/core/l10n/eo.php b/core/l10n/eo.php index 1889de1ea2..5c8fe34031 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -85,6 +85,7 @@ "ownCloud password reset" => "La pasvorto de ownCloud restariĝis.", "Use the following link to reset your password: {link}" => "Uzu la jenan ligilon por restarigi vian pasvorton: {link}", "You will receive a link to reset your password via Email." => "Vi ricevos ligilon retpoŝte por rekomencigi vian pasvorton.", +"Request failed!" => "Peto malsukcesis!", "Username" => "Uzantonomo", "Request reset" => "Peti rekomencigon", "Your password was reset" => "Via pasvorto rekomencis", @@ -113,7 +114,7 @@ "Database tablespace" => "Datumbaza tabelospaco", "Database host" => "Datumbaza gastigo", "Finish setup" => "Fini la instalon", -"web services under your control" => "TTT-servoj regataj de vi", +"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!", "Please change your password to secure your account again." => "Bonvolu ŝanĝi vian pasvorton por sekurigi vian konton ree.", diff --git a/core/l10n/es.php b/core/l10n/es.php index 8a3ab44e85..543563bed1 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -50,7 +50,7 @@ "Yes" => "Sí", "No" => "No", "The object type is not specified." => "El tipo de objeto no se ha especificado.", -"Error" => "Error", +"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.", "Shared" => "Compartido", @@ -88,9 +88,9 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "El enlace para restablecer la contraseña ha sido enviada a su correo electrónico.
Si no lo recibe en un plazo razonable de tiempo, revise su spam / carpetas no deseados.
Si no está allí pregunte a su administrador local.", -"Request failed!
Did you make sure your email/username was right?" => "Petición ha fallado!
¿Usted asegúrese que su dirección de correo electrónico / nombre de usuario estaba justo?", "You will receive a link to reset your password via Email." => "Recibirás un enlace por correo electrónico para restablecer tu contraseña", +"Reset email send." => "Email de reconfiguración enviado.", +"Request failed!" => "Pedido fallado!", "Username" => "Nombre de usuario", "Request reset" => "Solicitar restablecimiento", "Your password was reset" => "Tu contraseña se ha restablecido", @@ -100,12 +100,12 @@ "Personal" => "Personal", "Users" => "Usuarios", "Apps" => "Aplicaciones", -"Admin" => "Administración", +"Admin" => "Administrador", "Help" => "Ayuda", "Access forbidden" => "Acceso denegado", "Cloud not found" => "No se ha encontrado la nube", "Edit categories" => "Editar categorías", -"Add" => "Agregar", +"Add" => "Añadir", "Security Warning" => "Advertencia de seguridad", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "La versión de PHP es vulnerable al ataque de Byte NULL (CVE-2006-7243)", "Please update your PHP installation to use ownCloud securely." => "Por favor, actualice su instalación de PHP para utilizar ownCloud en forma segura.", @@ -124,7 +124,7 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"web services under your control" => "Servicios web bajo su control", +"web services under your control" => "servicios web bajo tu control", "Log out" => "Salir", "Automatic logon rejected!" => "¡Inicio de sesión automático rechazado!", "If you did not change your password recently, your account may be compromised!" => "Si usted no ha cambiado su contraseña recientemente, ¡puede que su cuenta esté comprometida!", diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php index 8f77843708..748de3ddd1 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -9,7 +9,7 @@ "Object type not provided." => "Tipo de objeto no provisto. ", "%s ID not provided." => "%s ID no provista. ", "Error adding %s to favorites." => "Error al agregar %s a favoritos. ", -"No categories selected for deletion." => "No se seleccionaron categorías para borrar.", +"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", @@ -18,23 +18,23 @@ "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" => "Configuración", +"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", "{minutes} minutes ago" => "hace {minutes} minutos", -"1 hour ago" => "1 hora atrás", +"1 hour ago" => "Hace 1 hora", "{hours} hours ago" => "{hours} horas atrás", "today" => "hoy", "yesterday" => "ayer", @@ -72,7 +72,7 @@ "No people found" => "No se encontraron usuarios", "Resharing is not allowed" => "No se permite volver a compartir", "Shared in {item} with {user}" => "Compartido en {item} con {user}", -"Unshare" => "Dejar de compartir", +"Unshare" => "Remover compartir", "can edit" => "puede editar", "access control" => "control de acceso", "create" => "crear", @@ -89,16 +89,18 @@ "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", +"Reset email send." => "Reiniciar envío de email.", +"Request failed!" => "Error en el pedido!", "Username" => "Nombre de usuario", "Request reset" => "Solicitar restablecimiento", "Your password was reset" => "Tu contraseña fue restablecida", "To login page" => "A la página de inicio de sesión", -"New password" => "Nueva contraseña:", +"New password" => "Nueva contraseña", "Reset password" => "Restablecer contraseña", "Personal" => "Personal", "Users" => "Usuarios", "Apps" => "Aplicaciones", -"Admin" => "Administración", +"Admin" => "Administrador", "Help" => "Ayuda", "Access forbidden" => "Acceso denegado", "Cloud not found" => "No se encontró ownCloud", @@ -122,7 +124,7 @@ "Database tablespace" => "Espacio de tablas de la base de datos", "Database host" => "Host de la base de datos", "Finish setup" => "Completar la instalación", -"web services under your control" => "servicios web controlados por vos", +"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!", "If you did not change your password recently, your account may be compromised!" => "¡Si no cambiaste tu contraseña recientemente, puede ser que tu cuenta esté comprometida!", diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index aac3898fbb..b6b6d4c9d9 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -88,22 +88,23 @@ "The update was successful. Redirecting you to ownCloud now." => "Uuendus oli edukas. Kohe suunatakse Sind ownCloudi.", "ownCloud password reset" => "ownCloud parooli taastamine", "Use the following link to reset your password: {link}" => "Kasuta järgnevat linki oma parooli taastamiseks: {link}", -"Request failed!
Did you make sure your email/username was right?" => "Päring ebaõnnestus!
Oled sa veendunud, et e-post/kasutajanimi on õiged?", "You will receive a link to reset your password via Email." => "Sinu parooli taastamise link saadetakse sulle e-postile.", +"Reset email send." => "Taastamise e-kiri on saadetud.", +"Request failed!" => "Päring ebaõnnestus!", "Username" => "Kasutajanimi", "Request reset" => "Päringu taastamine", "Your password was reset" => "Sinu parool on taastatud", "To login page" => "Sisselogimise lehele", "New password" => "Uus parool", "Reset password" => "Nulli parool", -"Personal" => "Isiklik", +"Personal" => "isiklik", "Users" => "Kasutajad", -"Apps" => "Rakendused", +"Apps" => "Programmid", "Admin" => "Admin", "Help" => "Abiinfo", "Access forbidden" => "Ligipääs on keelatud", "Cloud not found" => "Pilve ei leitud", -"Edit categories" => "Muuda kategooriat", +"Edit categories" => "Muuda kategooriaid", "Add" => "Lisa", "Security Warning" => "Turvahoiatus", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Sinu PHP versioon on haavatav NULL Baidi (CVE-2006-7243) rünnakuga.", @@ -113,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Su andmete kataloog ja failid on tõenäoliselt internetist vabalt saadaval kuna .htaccess fail ei toimi.", "For information how to properly configure your server, please see the documentation." => "Serveri korrektseks seadistuseks palun tutvu dokumentatsiooniga.", "Create an admin account" => "Loo admini konto", -"Advanced" => "Täpsem", +"Advanced" => "Lisavalikud", "Data folder" => "Andmete kaust", "Configure the database" => "Seadista andmebaasi", "will be used" => "kasutatakse", @@ -123,7 +124,7 @@ "Database tablespace" => "Andmebaasi tabeliruum", "Database host" => "Andmebaasi host", "Finish setup" => "Lõpeta seadistamine", -"web services under your control" => "veebitenused sinu kontrolli all", +"web services under your control" => "veebiteenused sinu kontrolli all", "Log out" => "Logi välja", "Automatic logon rejected!" => "Automaatne sisselogimine lükati tagasi!", "If you did not change your password recently, your account may be compromised!" => "Kui sa ei muutnud oma parooli hiljut, siis võib su kasutajakonto olla ohustatud!", diff --git a/core/l10n/eu.php b/core/l10n/eu.php index 9c9d28133c..76e38a92d1 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -89,6 +89,8 @@ "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.", +"Reset email send." => "Berrezartzeko eposta bidali da.", +"Request failed!" => "Eskariak huts egin du!", "Username" => "Erabiltzaile izena", "Request reset" => "Eskaera berrezarri da", "Your password was reset" => "Zure pasahitza berrezarri da", @@ -98,7 +100,7 @@ "Personal" => "Pertsonala", "Users" => "Erabiltzaileak", "Apps" => "Aplikazioak", -"Admin" => "Admin", +"Admin" => "Kudeatzailea", "Help" => "Laguntza", "Access forbidden" => "Sarrera debekatuta", "Cloud not found" => "Ez da hodeia aurkitu", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index ff73e80448..e6f5aaac0c 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -54,7 +54,7 @@ "The app name is not specified." => "نام برنامه تعیین نشده است.", "The required file {file} is not installed!" => "پرونده { پرونده} درخواست شده نصب نشده است !", "Shared" => "اشتراک گذاشته شده", -"Share" => "اشتراک‌گذاری", +"Share" => "اشتراک‌گزاری", "Error while sharing" => "خطا درحال به اشتراک گذاشتن", "Error while unsharing" => "خطا درحال لغو اشتراک", "Error while changing permissions" => "خطا در حال تغییر مجوز", @@ -89,20 +89,22 @@ "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." => "شما یک نامه الکترونیکی حاوی یک لینک جهت بازسازی گذرواژه دریافت خواهید کرد.", -"Username" => "نام کاربری", +"Reset email send." => "تنظیم مجدد ایمیل را بفرستید.", +"Request failed!" => "درخواست رد شده است !", +"Username" => "شناسه", "Request reset" => "درخواست دوباره سازی", "Your password was reset" => "گذرواژه شما تغییرکرد", "To login page" => "به صفحه ورود", "New password" => "گذرواژه جدید", "Reset password" => "دوباره سازی گذرواژه", "Personal" => "شخصی", -"Users" => "کاربران", -"Apps" => " برنامه ها", +"Users" => "کاربر ها", +"Apps" => "برنامه", "Admin" => "مدیر", -"Help" => "راه‌نما", +"Help" => "کمک", "Access forbidden" => "اجازه دسترسی به مناطق ممنوعه را ندارید", "Cloud not found" => "پیدا نشد", -"Edit categories" => "ویرایش گروه", +"Edit categories" => "ویرایش گروه ها", "Add" => "افزودن", "Security Warning" => "اخطار امنیتی", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "نسخه ی PHP شما در برابر حملات NULL Byte آسیب پذیر است.(CVE-2006-7243)", @@ -112,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", "For information how to properly configure your server, please see the documentation." => "برای مطلع شدن از چگونگی تنظیم سرورتان،لطفا این را ببینید.", "Create an admin account" => "لطفا یک شناسه برای مدیر بسازید", -"Advanced" => "پیشرفته", +"Advanced" => "حرفه ای", "Data folder" => "پوشه اطلاعاتی", "Configure the database" => "پایگاه داده برنامه ریزی شدند", "will be used" => "استفاده خواهد شد", @@ -122,7 +124,7 @@ "Database tablespace" => "جدول پایگاه داده", "Database host" => "هاست پایگاه داده", "Finish setup" => "اتمام نصب", -"web services under your control" => "سرویس های تحت وب در کنترل شما", +"web services under your control" => "سرویس وب تحت کنترل شما", "Log out" => "خروج", "Automatic logon rejected!" => "ورود به سیستم اتوماتیک ردشد!", "If you did not change your password recently, your account may be compromised!" => "اگر شما اخیرا رمزعبور را تغییر نداده اید، حساب شما در معرض خطر می باشد !", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 3f50e81484..ec79d03122 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -9,25 +9,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", +"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", @@ -85,16 +85,18 @@ "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.", +"Reset email send." => "Salasanan nollausviesti lähetetty.", +"Request failed!" => "Pyyntö epäonnistui!", "Username" => "Käyttäjätunnus", "Request reset" => "Tilaus lähetetty", "Your password was reset" => "Salasanasi nollattiin", "To login page" => "Kirjautumissivulle", "New password" => "Uusi salasana", "Reset password" => "Palauta salasana", -"Personal" => "Henkilökohtainen", +"Personal" => "Henkilökohtaiset", "Users" => "Käyttäjät", "Apps" => "Sovellukset", -"Admin" => "Ylläpitäjä", +"Admin" => "Hallinta", "Help" => "Ohje", "Access forbidden" => "Pääsy estetty", "Cloud not found" => "Pilveä ei löydy", @@ -103,7 +105,6 @@ "Security Warning" => "Turvallisuusvaroitus", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "PHP-asennuksesi on haavoittuvainen NULL Byte -hyökkäykselle (CVE-2006-7243)", "Please update your PHP installation to use ownCloud securely." => "Päivitä PHP-asennuksesi käyttääksesi ownCloudia turvallisesti.", -"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Turvallista satunnaislukugeneraattoria ei ole käytettävissä, ota käyttöön PHP:n OpenSSL-laajennus", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Datakansiosi ja tiedostosi ovat mitä luultavimmin muiden saavutettavissa internetistä, koska .htaccess-tiedosto ei toimi.", "For information how to properly configure your server, please see the documentation." => "Katso palvelimen asetuksien määrittämiseen liittyvät ohjeet dokumentaatiosta.", "Create an admin account" => "Luo ylläpitäjän tunnus", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index c8f60a678f..3b89d69b3b 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -9,7 +9,7 @@ "Object type not provided." => "Type d'objet non spécifié.", "%s ID not provided." => "L'identifiant de %s n'est pas spécifié.", "Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.", -"No categories selected for deletion." => "Pas de catégorie sélectionnée pour la suppression.", +"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", @@ -88,23 +88,23 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Le lien permettant de réinitialiser votre mot de passe vous a été transmis.
Si vous ne le recevez pas dans un délai raisonnable, vérifier votre boîte de pourriels.
Au besoin, contactez votre administrateur local.", -"Request failed!
Did you make sure your email/username was right?" => "Requête en échec!
Avez-vous vérifié vos courriel/nom d'utilisateur?", "You will receive a link to reset your password via Email." => "Vous allez recevoir un e-mail contenant un lien pour réinitialiser votre mot de passe.", +"Reset email send." => "Mail de réinitialisation envoyé.", +"Request failed!" => "La requête a échoué !", "Username" => "Nom d'utilisateur", "Request reset" => "Demander la réinitialisation", "Your password was reset" => "Votre mot de passe a été réinitialisé", "To login page" => "Retour à la page d'authentification", "New password" => "Nouveau mot de passe", "Reset password" => "Réinitialiser le mot de passe", -"Personal" => "Personnel", +"Personal" => "Personnels", "Users" => "Utilisateurs", "Apps" => "Applications", "Admin" => "Administration", "Help" => "Aide", "Access forbidden" => "Accès interdit", "Cloud not found" => "Introuvable", -"Edit categories" => "Editer les catégories", +"Edit categories" => "Modifier les catégories", "Add" => "Ajouter", "Security Warning" => "Avertissement de sécurité", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Votre version de PHP est vulnérable à l'attaque par caractère NULL (CVE-2006-7243)", diff --git a/core/l10n/gl.php b/core/l10n/gl.php index f6c36d6ac6..fd237a39c8 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -9,7 +9,7 @@ "Object type not provided." => "Non se forneceu o tipo de obxecto.", "%s ID not provided." => "Non se forneceu o ID %s.", "Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.", -"No categories selected for deletion." => "Non se seleccionaron categorías para eliminación.", +"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", @@ -30,11 +30,11 @@ "October" => "outubro", "November" => "novembro", "December" => "decembro", -"Settings" => "Axustes", +"Settings" => "Configuracións", "seconds ago" => "segundos atrás", "1 minute ago" => "hai 1 minuto", "{minutes} minutes ago" => "hai {minutes} minutos", -"1 hour ago" => "Vai 1 hora", +"1 hour ago" => "hai 1 hora", "{hours} hours ago" => "hai {hours} horas", "today" => "hoxe", "yesterday" => "onte", @@ -88,9 +88,9 @@ "The update was successful. Redirecting you to ownCloud now." => "A actualización realizouse correctamente. Redirixíndoo agora á ownCloud.", "ownCloud password reset" => "Restabelecer o contrasinal de ownCloud", "Use the following link to reset your password: {link}" => "Usa a seguinte ligazón para restabelecer o contrasinal: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Envióuselle ao seu correo unha ligazón para restabelecer o seu contrasinal.
Se non o recibe nun prazo razoábel de tempo, revise o seu cartafol de correo lixo ou de non desexados.
Se non o atopa aí pregúntelle ao seu administrador local..", -"Request failed!
Did you make sure your email/username was right?" => "Non foi posíbel facer a petición!
Asegúrese de que o seu enderezo de correo ou nome de usuario é correcto.", "You will receive a link to reset your password via Email." => "Recibirá unha ligazón por correo para restabelecer o contrasinal", +"Reset email send." => "Restabelecer o envío por correo.", +"Request failed!" => "Non foi posíbel facer a petición", "Username" => "Nome de usuario", "Request reset" => "Petición de restabelecemento", "Your password was reset" => "O contrasinal foi restabelecido", @@ -100,11 +100,11 @@ "Personal" => "Persoal", "Users" => "Usuarios", "Apps" => "Aplicativos", -"Admin" => "Administración", +"Admin" => "Admin", "Help" => "Axuda", "Access forbidden" => "Acceso denegado", "Cloud not found" => "Nube non atopada", -"Edit categories" => "Editar as categorías", +"Edit categories" => "Editar categorías", "Add" => "Engadir", "Security Warning" => "Aviso de seguranza", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "A súa versión de PHP é vulnerábel a un ataque de byte nulo (CVE-2006-7243)", diff --git a/core/l10n/he.php b/core/l10n/he.php index f161c356ca..56f273e95d 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -63,7 +63,7 @@ "Share with" => "שיתוף עם", "Share with link" => "שיתוף עם קישור", "Password protect" => "הגנה בססמה", -"Password" => "סיסמא", +"Password" => "ססמה", "Email link to person" => "שליחת קישור בדוא״ל למשתמש", "Send" => "שליחה", "Set expiration date" => "הגדרת תאריך תפוגה", @@ -89,6 +89,8 @@ "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." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", +"Reset email send." => "איפוס שליחת דוא״ל.", +"Request failed!" => "הבקשה נכשלה!", "Username" => "שם משתמש", "Request reset" => "בקשת איפוס", "Your password was reset" => "הססמה שלך אופסה", @@ -102,7 +104,7 @@ "Help" => "עזרה", "Access forbidden" => "הגישה נחסמה", "Cloud not found" => "ענן לא נמצא", -"Edit categories" => "ערוך קטגוריות", +"Edit categories" => "עריכת הקטגוריות", "Add" => "הוספה", "Security Warning" => "אזהרת אבטחה", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.", @@ -120,7 +122,7 @@ "Database tablespace" => "מרחב הכתובות של מסד הנתונים", "Database host" => "שרת בסיס נתונים", "Finish setup" => "סיום התקנה", -"web services under your control" => "שירותי רשת תחת השליטה שלך", +"web services under your control" => "שירותי רשת בשליטתך", "Log out" => "התנתקות", "Automatic logon rejected!" => "בקשת הכניסה האוטומטית נדחתה!", "If you did not change your password recently, your account may be compromised!" => "אם לא שינית את ססמתך לאחרונה, יתכן שחשבונך נפגע!", diff --git a/core/l10n/hr.php b/core/l10n/hr.php index e79e71d4b2..d32d8d4b22 100644 --- a/core/l10n/hr.php +++ b/core/l10n/hr.php @@ -1,6 +1,6 @@ "Nemate kategorija koje možete dodati?", -"No categories selected for deletion." => "Niti jedna kategorija nije odabrana za brisanje.", +"No categories selected for deletion." => "Nema odabranih kategorija za brisanje.", "Sunday" => "nedelja", "Monday" => "ponedeljak", "Tuesday" => "utorak", @@ -33,7 +33,7 @@ "Choose" => "Izaberi", "Yes" => "Da", "No" => "Ne", -"Error" => "Greška", +"Error" => "Pogreška", "Share" => "Podijeli", "Error while sharing" => "Greška prilikom djeljenja", "Error while unsharing" => "Greška prilikom isključivanja djeljenja", @@ -76,7 +76,7 @@ "Edit categories" => "Uredi kategorije", "Add" => "Dodaj", "Create an admin account" => "Stvori administratorski račun", -"Advanced" => "Napredno", +"Advanced" => "Dodatno", "Data folder" => "Mapa baze podataka", "Configure the database" => "Konfiguriraj bazu podataka", "will be used" => "će se koristiti", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 013d68dff5..eb0a3d1a91 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -45,7 +45,7 @@ "last year" => "tavaly", "years ago" => "több éve", "Ok" => "Ok", -"Cancel" => "Mégsem", +"Cancel" => "Mégse", "Choose" => "Válasszon", "Yes" => "Igen", "No" => "Nem", @@ -89,16 +89,18 @@ "ownCloud password reset" => "ownCloud jelszó-visszaállítás", "Use the following link to reset your password: {link}" => "Használja ezt a linket a jelszó ismételt beállításához: {link}", "You will receive a link to reset your password via Email." => "Egy emailben fog értesítést kapni a jelszóbeállítás módjáról.", +"Reset email send." => "Elküldtük az emailt a jelszó ismételt beállításához.", +"Request failed!" => "Nem sikerült a kérést teljesíteni!", "Username" => "Felhasználónév", "Request reset" => "Visszaállítás igénylése", "Your password was reset" => "Jelszó megváltoztatva", "To login page" => "A bejelentkező ablakhoz", -"New password" => "Az új jelszó", +"New password" => "Új jelszó", "Reset password" => "Jelszó-visszaállítás", "Personal" => "Személyes", "Users" => "Felhasználók", "Apps" => "Alkalmazások", -"Admin" => "Adminsztráció", +"Admin" => "Adminisztráció", "Help" => "Súgó", "Access forbidden" => "A hozzáférés nem engedélyezett", "Cloud not found" => "A felhő nem található", diff --git a/core/l10n/hy.php b/core/l10n/hy.php deleted file mode 100644 index de0c725c73..0000000000 --- a/core/l10n/hy.php +++ /dev/null @@ -1,21 +0,0 @@ - "Կիրակի", -"Monday" => "Երկուշաբթի", -"Tuesday" => "Երեքշաբթի", -"Wednesday" => "Չորեքշաբթի", -"Thursday" => "Հինգշաբթի", -"Friday" => "Ուրբաթ", -"Saturday" => "Շաբաթ", -"January" => "Հունվար", -"February" => "Փետրվար", -"March" => "Մարտ", -"April" => "Ապրիլ", -"May" => "Մայիս", -"June" => "Հունիս", -"July" => "Հուլիս", -"August" => "Օգոստոս", -"September" => "Սեպտեմբեր", -"October" => "Հոկտեմբեր", -"November" => "Նոյեմբեր", -"December" => "Դեկտեմբեր" -); diff --git a/core/l10n/id.php b/core/l10n/id.php index 984822af1e..9eeaba3454 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -45,7 +45,7 @@ "last year" => "tahun kemarin", "years ago" => "beberapa tahun lalu", "Ok" => "Oke", -"Cancel" => "Batal", +"Cancel" => "Batalkan", "Choose" => "Pilih", "Yes" => "Ya", "No" => "Tidak", @@ -89,7 +89,9 @@ "ownCloud password reset" => "Setel ulang sandi ownCloud", "Use the following link to reset your password: {link}" => "Gunakan tautan berikut untuk menyetel ulang sandi Anda: {link}", "You will receive a link to reset your password via Email." => "Anda akan menerima tautan penyetelan ulang sandi lewat Email.", -"Username" => "Nama pengguna", +"Reset email send." => "Email penyetelan ulang dikirim.", +"Request failed!" => "Permintaan gagal!", +"Username" => "Nama Pengguna", "Request reset" => "Ajukan penyetelan ulang", "Your password was reset" => "Sandi Anda telah disetel ulang", "To login page" => "Ke halaman masuk", @@ -103,7 +105,7 @@ "Access forbidden" => "Akses ditolak", "Cloud not found" => "Cloud tidak ditemukan", "Edit categories" => "Edit kategori", -"Add" => "Tambah", +"Add" => "Tambahkan", "Security Warning" => "Peringatan Keamanan", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Versi PHP Anda rentan terhadap serangan NULL Byte (CVE-2006-7243)", "Please update your PHP installation to use ownCloud securely." => "Silakan perbarui instalasi PHP untuk dapat menggunakan ownCloud secara aman.", @@ -112,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Kemungkinan direktori data dan berkas Anda dapat diakses dari internet karena berkas .htaccess tidak berfungsi.", "For information how to properly configure your server, please see the documentation." => "Untuk informasi lebih lanjut tentang pengaturan server yang benar, silakan lihat dokumentasi.", "Create an admin account" => "Buat sebuah akun admin", -"Advanced" => "Lanjutan", +"Advanced" => "Tingkat Lanjut", "Data folder" => "Folder data", "Configure the database" => "Konfigurasikan basis data", "will be used" => "akan digunakan", diff --git a/core/l10n/is.php b/core/l10n/is.php index d30d8bca11..c6b7a6df32 100644 --- a/core/l10n/is.php +++ b/core/l10n/is.php @@ -30,8 +30,8 @@ "November" => "Nóvember", "December" => "Desember", "Settings" => "Stillingar", -"seconds ago" => "sek.", -"1 minute ago" => "Fyrir 1 mínútu", +"seconds ago" => "sek síðan", +"1 minute ago" => "1 min síðan", "{minutes} minutes ago" => "{minutes} min síðan", "1 hour ago" => "Fyrir 1 klst.", "{hours} hours ago" => "fyrir {hours} klst.", @@ -42,7 +42,7 @@ "{months} months ago" => "fyrir {months} mánuðum", "months ago" => "mánuðir síðan", "last year" => "síðasta ári", -"years ago" => "einhverjum árum", +"years ago" => "árum síðan", "Ok" => "Í lagi", "Cancel" => "Hætta við", "Choose" => "Veldu", @@ -85,21 +85,23 @@ "ownCloud password reset" => "endursetja ownCloud lykilorð", "Use the following link to reset your password: {link}" => "Notað eftirfarandi veftengil til að endursetja lykilorðið þitt: {link}", "You will receive a link to reset your password via Email." => "Þú munt fá veftengil í tölvupósti til að endursetja lykilorðið.", +"Reset email send." => "Beiðni um endursetningu send.", +"Request failed!" => "Beiðni mistókst!", "Username" => "Notendanafn", "Request reset" => "Endursetja lykilorð", "Your password was reset" => "Lykilorðið þitt hefur verið endursett.", "To login page" => "Fara á innskráningarsíðu", "New password" => "Nýtt lykilorð", "Reset password" => "Endursetja lykilorð", -"Personal" => "Um mig", +"Personal" => "Persónustillingar", "Users" => "Notendur", "Apps" => "Forrit", -"Admin" => "Stjórnun", +"Admin" => "Vefstjórn", "Help" => "Hjálp", "Access forbidden" => "Aðgangur bannaður", "Cloud not found" => "Ský finnst ekki", "Edit categories" => "Breyta flokkum", -"Add" => "Bæta við", +"Add" => "Bæta", "Security Warning" => "Öryggis aðvörun", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Enginn traustur slembitölugjafi í boði, vinsamlegast virkjaðu PHP OpenSSL viðbótina.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Án öruggs slembitölugjafa er mögulegt að sjá fyrir öryggis auðkenni til að endursetja lykilorð og komast inn á aðganginn þinn.", diff --git a/core/l10n/it.php b/core/l10n/it.php index d450f90b1d..d24c3330bf 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -77,8 +77,8 @@ "access control" => "controllo d'accesso", "create" => "creare", "update" => "aggiornare", -"delete" => "elimina", -"share" => "condividi", +"delete" => "eliminare", +"share" => "condividere", "Password protected" => "Protetta da password", "Error unsetting expiration date" => "Errore durante la rimozione della data di scadenza", "Error setting expiration date" => "Errore durante l'impostazione della data di scadenza", @@ -88,9 +88,9 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Il collegamento per ripristinare la password è stato inviato al tuo indirizzo di posta.
Se non lo ricevi in tempi ragionevoli, controlla le cartelle della posta indesiderata.
Se non dovesse essere nemmeno lì, contatta il tuo amministratore locale.", -"Request failed!
Did you make sure your email/username was right?" => "Richiesta non riuscita!
Sei sicuro che l'indirizzo di posta/nome utente fosse corretto?", "You will receive a link to reset your password via Email." => "Riceverai un collegamento per ripristinare la tua password via email", +"Reset email send." => "Email di ripristino inviata.", +"Request failed!" => "Richiesta non riuscita!", "Username" => "Nome utente", "Request reset" => "Richiesta di ripristino", "Your password was reset" => "La password è stata ripristinata", @@ -104,7 +104,7 @@ "Help" => "Aiuto", "Access forbidden" => "Accesso negato", "Cloud not found" => "Nuvola non trovata", -"Edit categories" => "Modifica categorie", +"Edit categories" => "Modifica le categorie", "Add" => "Aggiungi", "Security Warning" => "Avviso di sicurezza", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "La tua versione di PHP è vulnerabile all'attacco NULL Byte (CVE-2006-7243)", @@ -114,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona.", "For information how to properly configure your server, please see the documentation." => "Per informazioni su come configurare correttamente il server, vedi la documentazione.", "Create an admin account" => "Crea un account amministratore", -"Advanced" => "Avanzat", +"Advanced" => "Avanzate", "Data folder" => "Cartella dati", "Configure the database" => "Configura il database", "will be used" => "sarà utilizzato", diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 056c67e8da..200e494d8c 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -89,16 +89,18 @@ "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." => "メールでパスワードをリセットするリンクが届きます。", -"Username" => "ユーザー名", +"Reset email send." => "リセットメールを送信します。", +"Request failed!" => "リクエスト失敗!", +"Username" => "ユーザ名", "Request reset" => "リセットを要求します。", "Your password was reset" => "あなたのパスワードはリセットされました。", "To login page" => "ログインページへ戻る", "New password" => "新しいパスワードを入力", "Reset password" => "パスワードをリセット", -"Personal" => "個人", +"Personal" => "個人設定", "Users" => "ユーザ", "Apps" => "アプリ", -"Admin" => "管理", +"Admin" => "管理者", "Help" => "ヘルプ", "Access forbidden" => "アクセスが禁止されています", "Cloud not found" => "見つかりません", @@ -122,7 +124,7 @@ "Database tablespace" => "データベースの表領域", "Database host" => "データベースのホスト名", "Finish setup" => "セットアップを完了します", -"web services under your control" => "管理下のウェブサービス", +"web services under your control" => "管理下にあるウェブサービス", "Log out" => "ログアウト", "Automatic logon rejected!" => "自動ログインは拒否されました!", "If you did not change your password recently, your account may be compromised!" => "最近パスワードを変更していない場合、あなたのアカウントは危険にさらされているかもしれません。", diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php index fd2e512654..190a2f5eab 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -60,7 +60,7 @@ "Error while changing permissions" => "შეცდომა დაშვების ცვლილების დროს", "Shared with you and the group {group} by {owner}" => "გაზიარდა თქვენთვის და ჯგუფისთვის {group}, {owner}–ის მიერ", "Shared with you by {owner}" => "გაზიარდა თქვენთვის {owner}–ის მიერ", -"Share with" => "გააზიარე შემდეგით:", +"Share with" => "გაუზიარე", "Share with link" => "გაუზიარე ლინკით", "Password protect" => "პაროლით დაცვა", "Password" => "პაროლი", @@ -72,7 +72,7 @@ "No people found" => "მომხმარებელი არ არის ნაპოვნი", "Resharing is not allowed" => "მეორეჯერ გაზიარება არ არის დაშვებული", "Shared in {item} with {user}" => "გაზიარდა {item}–ში {user}–ის მიერ", -"Unshare" => "გაუზიარებადი", +"Unshare" => "გაზიარების მოხსნა", "can edit" => "შეგიძლია შეცვლა", "access control" => "დაშვების კონტროლი", "create" => "შექმნა", @@ -89,16 +89,18 @@ "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." => "თქვენ მოგივათ პაროლის შესაცვლელი ლინკი მეილზე", -"Username" => "მომხმარებლის სახელი", +"Reset email send." => "რესეტის მეილი გაიგზავნა", +"Request failed!" => "მოთხოვნა შეწყდა!", +"Username" => "მომხმარებელი", "Request reset" => "პაროლის შეცვლის მოთხოვნა", "Your password was reset" => "თქვენი პაროლი შეცვლილია", "To login page" => "შესვლის გვერდზე", "New password" => "ახალი პაროლი", "Reset password" => "პაროლის შეცვლა", "Personal" => "პირადი", -"Users" => "მომხმარებელი", +"Users" => "მომხმარებლები", "Apps" => "აპლიკაციები", -"Admin" => "ადმინისტრატორი", +"Admin" => "ადმინი", "Help" => "დახმარება", "Access forbidden" => "წვდომა აკრძალულია", "Cloud not found" => "ღრუბელი არ არსებობს", @@ -122,7 +124,7 @@ "Database tablespace" => "ბაზის ცხრილის ზომა", "Database host" => "მონაცემთა ბაზის ჰოსტი", "Finish setup" => "კონფიგურაციის დასრულება", -"web services under your control" => "web services under your control", +"web services under your control" => "თქვენი კონტროლის ქვეშ მყოფი ვებ სერვისები", "Log out" => "გამოსვლა", "Automatic logon rejected!" => "ავტომატური შესვლა უარყოფილია!", "If you did not change your password recently, your account may be compromised!" => "თუ თქვენ არ შეცვლით პაროლს, თქვენი ანგარიში შეიძლება იყოს დაშვებადი სხვებისთვის", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index 08713edaee..2a75ce9c4f 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -5,11 +5,10 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s 님이 폴더 \"%s\"을(를) 공유하였습니다. 여기에서 다운로드할 수 있습니다: %s", "Category type not provided." => "분류 형식이 제공되지 않았습니다.", "No category to add?" => "추가할 분류가 없습니까?", -"This category already exists: %s" => "분류가 이미 존재합니다: %s", "Object type not provided." => "객체 형식이 제공되지 않았습니다.", "%s ID not provided." => "%s ID가 제공되지 않았습니다.", "Error adding %s to favorites." => "책갈피에 %s을(를) 추가할 수 없었습니다.", -"No categories selected for deletion." => "삭제할 분류를 선택하지 않았습니다. ", +"No categories selected for deletion." => "삭제할 분류를 선택하지 않았습니다.", "Error removing %s from favorites." => "책갈피에서 %s을(를) 삭제할 수 없었습니다.", "Sunday" => "일요일", "Monday" => "월요일", @@ -75,7 +74,7 @@ "Unshare" => "공유 해제", "can edit" => "편집 가능", "access control" => "접근 제어", -"create" => "생성", +"create" => "만들기", "update" => "업데이트", "delete" => "삭제", "share" => "공유", @@ -89,6 +88,8 @@ "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." => "이메일로 암호 재설정 링크를 보냈습니다.", +"Reset email send." => "초기화 이메일을 보냈습니다.", +"Request failed!" => "요청이 실패했습니다!", "Username" => "사용자 이름", "Request reset" => "요청 초기화", "Your password was reset" => "암호가 재설정되었습니다", @@ -102,15 +103,11 @@ "Help" => "도움말", "Access forbidden" => "접근 금지됨", "Cloud not found" => "클라우드를 찾을 수 없습니다", -"Edit categories" => "분류 수정", +"Edit categories" => "분류 편집", "Add" => "추가", "Security Warning" => "보안 경고", -"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "사용 중인 PHP 버전이 NULL 바이트 공격에 취약합니다 (CVE-2006-7243)", -"Please update your PHP installation to use ownCloud securely." => "ownCloud의 보안을 위하여 PHP 버전을 업데이트하십시오.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "안전한 난수 생성기를 사용할 수 없습니다. PHP의 OpenSSL 확장을 활성화해 주십시오.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "안전한 난수 생성기를 사용하지 않으면 공격자가 암호 초기화 토큰을 추측하여 계정을 탈취할 수 있습니다.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => ".htaccess 파일이 처리되지 않아서 데이터 디렉터리와 파일을 인터넷에서 접근할 수 없을 수도 있습니다.", -"For information how to properly configure your server, please see the documentation." => "서버를 올바르게 설정하는 방법을 알아보려면 문서를 참고하십시오..", "Create an admin account" => "관리자 계정 만들기", "Advanced" => "고급", "Data folder" => "데이터 폴더", @@ -130,7 +127,6 @@ "Lost your password?" => "암호를 잊으셨습니까?", "remember" => "기억하기", "Log in" => "로그인", -"Alternative Logins" => "대체 ", "prev" => "이전", "next" => "다음", "Updating ownCloud to version %s, this may take a while." => "ownCloud를 버전 %s(으)로 업데이트합니다. 잠시 기다려 주십시오." diff --git a/core/l10n/lb.php b/core/l10n/lb.php index f2277445f9..79258b8e97 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -57,7 +57,7 @@ "Access forbidden" => "Access net erlaabt", "Cloud not found" => "Cloud net fonnt", "Edit categories" => "Kategorien editéieren", -"Add" => "Dobäisetzen", +"Add" => "Bäisetzen", "Security Warning" => "Sécherheets Warnung", "Create an admin account" => "En Admin Account uleeën", "Advanced" => "Avancéiert", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 05ae35cc3d..0f55c341e5 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -53,7 +53,7 @@ "No people found" => "Žmonių nerasta", "Resharing is not allowed" => "Dalijinasis išnaujo negalimas", "Shared in {item} with {user}" => "Pasidalino {item} su {user}", -"Unshare" => "Nebesidalinti", +"Unshare" => "Nesidalinti", "can edit" => "gali redaguoti", "access control" => "priėjimo kontrolė", "create" => "sukurti", diff --git a/core/l10n/lv.php b/core/l10n/lv.php index 18af82e4e3..76188662fb 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -9,7 +9,7 @@ "Object type not provided." => "Objekta tips nav norādīts.", "%s ID not provided." => "%s ID nav norādīts.", "Error adding %s to favorites." => "Kļūda, pievienojot %s izlasei.", -"No categories selected for deletion." => "Neviena kategorija nav izvēlēta dzēšanai.", +"No categories selected for deletion." => "Neviena kategorija nav izvēlēta dzēšanai", "Error removing %s from favorites." => "Kļūda, izņemot %s no izlases.", "Sunday" => "Svētdiena", "Monday" => "Pirmdiena", @@ -72,7 +72,7 @@ "No people found" => "Nav atrastu cilvēku", "Resharing is not allowed" => "Atkārtota dalīšanās nav atļauta", "Shared in {item} with {user}" => "Dalījās ar {item} ar {user}", -"Unshare" => "Pārtraukt dalīšanos", +"Unshare" => "Beigt dalīties", "can edit" => "var rediģēt", "access control" => "piekļuves vadība", "create" => "izveidot", @@ -89,6 +89,8 @@ "ownCloud password reset" => "ownCloud paroles maiņa", "Use the following link to reset your password: {link}" => "Izmantojiet šo saiti, lai mainītu paroli: {link}", "You will receive a link to reset your password via Email." => "Jūs savā epastā saņemsiet interneta saiti, caur kuru varēsiet atjaunot paroli.", +"Reset email send." => "Atstatīt e-pasta sūtīšanu.", +"Request failed!" => "Pieprasījums neizdevās!", "Username" => "Lietotājvārds", "Request reset" => "Pieprasīt paroles maiņu", "Your password was reset" => "Jūsu parole tika nomainīta", @@ -98,7 +100,7 @@ "Personal" => "Personīgi", "Users" => "Lietotāji", "Apps" => "Lietotnes", -"Admin" => "Administratori", +"Admin" => "Administrators", "Help" => "Palīdzība", "Access forbidden" => "Pieeja ir liegta", "Cloud not found" => "Mākonis netika atrasts", diff --git a/core/l10n/mk.php b/core/l10n/mk.php index a6c06e4780..9743d8b299 100644 --- a/core/l10n/mk.php +++ b/core/l10n/mk.php @@ -29,7 +29,7 @@ "October" => "Октомври", "November" => "Ноември", "December" => "Декември", -"Settings" => "Подесувања", +"Settings" => "Поставки", "seconds ago" => "пред секунди", "1 minute ago" => "пред 1 минута", "{minutes} minutes ago" => "пред {minutes} минути", @@ -85,6 +85,8 @@ "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." => "Ќе добиете врска по е-пошта за да може да ја ресетирате Вашата лозинка.", +"Reset email send." => "Порката за ресетирање на лозинка пратена.", +"Request failed!" => "Барањето не успеа!", "Username" => "Корисничко име", "Request reset" => "Побарајте ресетирање", "Your password was reset" => "Вашата лозинка беше ресетирана", @@ -93,7 +95,7 @@ "Reset password" => "Ресетирај лозинка", "Personal" => "Лично", "Users" => "Корисници", -"Apps" => "Аппликации", +"Apps" => "Апликации", "Admin" => "Админ", "Help" => "Помош", "Access forbidden" => "Забранет пристап", diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php index 70581ff769..d8a2cf8836 100644 --- a/core/l10n/ms_MY.php +++ b/core/l10n/ms_MY.php @@ -1,6 +1,6 @@ "Tiada kategori untuk di tambah?", -"No categories selected for deletion." => "Tiada kategori dipilih untuk dibuang.", +"No categories selected for deletion." => "tiada kategori dipilih untuk penghapusan", "Sunday" => "Ahad", "Monday" => "Isnin", "Tuesday" => "Selasa", @@ -44,7 +44,7 @@ "Help" => "Bantuan", "Access forbidden" => "Larangan akses", "Cloud not found" => "Awan tidak dijumpai", -"Edit categories" => "Ubah kategori", +"Edit categories" => "Edit kategori", "Add" => "Tambah", "Security Warning" => "Amaran keselamatan", "Create an admin account" => "buat akaun admin", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index 6efb31a7de..4e1ee45eec 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -92,7 +92,7 @@ "Database tablespace" => "Database tabellområde", "Database host" => "Databasevert", "Finish setup" => "Fullfør oppsetting", -"web services under your control" => "web tjenester du kontrollerer", +"web services under your control" => "nettjenester under din kontroll", "Log out" => "Logg ut", "Automatic logon rejected!" => "Automatisk pålogging avvist!", "If you did not change your password recently, your account may be compromised!" => "Hvis du ikke har endret passordet ditt nylig kan kontoen din være kompromitert", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 83d1e82dc3..5e050c33be 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -45,7 +45,7 @@ "last year" => "vorig jaar", "years ago" => "jaar geleden", "Ok" => "Ok", -"Cancel" => "Annuleer", +"Cancel" => "Annuleren", "Choose" => "Kies", "Yes" => "Ja", "No" => "Nee", @@ -75,7 +75,7 @@ "Unshare" => "Stop met delen", "can edit" => "kan wijzigen", "access control" => "toegangscontrole", -"create" => "creëer", +"create" => "maak", "update" => "bijwerken", "delete" => "verwijderen", "share" => "deel", @@ -88,14 +88,14 @@ "The update was successful. Redirecting you to ownCloud now." => "De update is geslaagd. U wordt teruggeleid naar uw eigen ownCloud.", "ownCloud password reset" => "ownCloud wachtwoord herstellen", "Use the following link to reset your password: {link}" => "Gebruik de volgende link om je wachtwoord te resetten: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "De link voor het resetten van uw wachtwoord is verzonden naar uw e-mailadres.
Als u dat bericht niet snel ontvangen hebt, controleer dan uw spambakje.
Als het daar ook niet is, vraag dan uw beheerder om te helpen.", -"Request failed!
Did you make sure your email/username was right?" => "Aanvraag mislukt!
Weet u zeker dat uw gebruikersnaam en/of wachtwoord goed waren?", "You will receive a link to reset your password via Email." => "U ontvangt een link om uw wachtwoord opnieuw in te stellen via e-mail.", +"Reset email send." => "Reset e-mail verstuurd.", +"Request failed!" => "Verzoek mislukt!", "Username" => "Gebruikersnaam", "Request reset" => "Resetaanvraag", "Your password was reset" => "Je wachtwoord is gewijzigd", "To login page" => "Naar de login-pagina", -"New password" => "Nieuw", +"New password" => "Nieuw wachtwoord", "Reset password" => "Reset wachtwoord", "Personal" => "Persoonlijk", "Users" => "Gebruikers", @@ -104,7 +104,7 @@ "Help" => "Help", "Access forbidden" => "Toegang verboden", "Cloud not found" => "Cloud niet gevonden", -"Edit categories" => "Wijzig categorieën", +"Edit categories" => "Wijzigen categorieën", "Add" => "Toevoegen", "Security Warning" => "Beveiligingswaarschuwing", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Uw PHP versie is kwetsbaar voor de NULL byte aanval (CVE-2006-7243)", diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php index f62897ed27..61b2baffbf 100644 --- a/core/l10n/nn_NO.php +++ b/core/l10n/nn_NO.php @@ -1,16 +1,4 @@ "Brukaren %s delte ei fil med deg", -"User %s shared a folder with you" => "Brukaren %s delte ei mappe med deg", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Brukaren %s delte fila «%s» med deg. Du kan lasta ho ned her: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Brukaren %s delte mappa «%s» med deg. Du kan lasta ho ned her: %s", -"Category type not provided." => "Ingen kategoritype.", -"No category to add?" => "Ingen kategori å leggja til?", -"This category already exists: %s" => "Denne kategorien finst alt: %s", -"Object type not provided." => "Ingen objekttype.", -"%s ID not provided." => "Ingen %s-ID.", -"Error adding %s to favorites." => "Klarte ikkje å leggja til %s i favorittar.", -"No categories selected for deletion." => "Ingen kategoriar valt for sletting.", -"Error removing %s from favorites." => "Klarte ikkje å fjerna %s frå favorittar.", "Sunday" => "Søndag", "Monday" => "Måndag", "Tuesday" => "Tysdag", @@ -31,88 +19,24 @@ "November" => "November", "December" => "Desember", "Settings" => "Innstillingar", -"seconds ago" => "sekund sidan", -"1 minute ago" => "1 minutt sidan", -"{minutes} minutes ago" => "{minutes} minutt sidan", -"1 hour ago" => "1 time sidan", -"{hours} hours ago" => "{hours} timar sidan", -"today" => "i dag", -"yesterday" => "i går", -"{days} days ago" => "{days} dagar sidan", -"last month" => "førre månad", -"{months} months ago" => "{months) månader sidan", -"months ago" => "månader sidan", -"last year" => "i fjor", -"years ago" => "år sidan", -"Ok" => "Greitt", -"Cancel" => "Avbryt", -"Choose" => "Vel", -"Yes" => "Ja", -"No" => "Nei", -"The object type is not specified." => "Objekttypen er ikkje spesifisert.", +"Cancel" => "Kanseller", "Error" => "Feil", -"The app name is not specified." => "App-namnet er ikkje spesifisert.", -"The required file {file} is not installed!" => "Den kravde fila {file} er ikkje installert!", -"Shared" => "Delt", -"Share" => "Del", -"Error while sharing" => "Feil ved deling", -"Error while unsharing" => "Feil ved udeling", -"Error while changing permissions" => "Feil ved endring av tillatingar", -"Shared with you and the group {group} by {owner}" => "Delt med deg og gruppa {group} av {owner}", -"Shared with you by {owner}" => "Delt med deg av {owner}", -"Share with" => "Del med", -"Share with link" => "Del med lenkje", -"Password protect" => "Passordvern", "Password" => "Passord", -"Email link to person" => "Send lenkja over e-post", -"Send" => "Send", -"Set expiration date" => "Set utlaupsdato", -"Expiration date" => "Utlaupsdato", -"Share via email:" => "Del over e-post:", -"No people found" => "Fann ingen personar", -"Resharing is not allowed" => "Vidaredeling er ikkje tillate", -"Shared in {item} with {user}" => "Delt i {item} med {brukar}", -"Unshare" => "Udel", -"can edit" => "kan endra", -"access control" => "tilgangskontroll", -"create" => "lag", -"update" => "oppdater", -"delete" => "slett", -"share" => "del", -"Password protected" => "Passordverna", -"Error unsetting expiration date" => "Klarte ikkje å fjerna utlaupsdato", -"Error setting expiration date" => "Klarte ikkje å setja utlaupsdato", -"Sending ..." => "Sender …", -"Email sent" => "E-post sendt", -"The update was unsuccessful. Please report this issue to the ownCloud community." => "Oppdateringa feila. Ver venleg og rapporter feilen til ownCloud-fellesskapet.", -"The update was successful. Redirecting you to ownCloud now." => "Oppdateringa er fullført. Sender deg vidare til ownCloud no.", -"ownCloud password reset" => "Nullstilling av ownCloud-passord", -"Use the following link to reset your password: {link}" => "Klikk følgjande lenkje til å nullstilla passordet ditt: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Lenkja til å nullstilla passordet med er sendt til e-posten din.
Sjå i spam-/søppelmappa di viss du ikkje ser e-posten innan rimeleg tid.
Spør din lokale administrator viss han ikkje er der heller.", -"Request failed!
Did you make sure your email/username was right?" => "Førespurnaden feila!
Er du viss på at du skreiv inn rett e-post/brukarnamn?", -"You will receive a link to reset your password via Email." => "Du vil få ein e-post med ei lenkje for å nullstilla passordet.", +"Use the following link to reset your password: {link}" => "Bruk føljane link til å tilbakestille passordet ditt: {link}", +"You will receive a link to reset your password via Email." => "Du vil få ei lenkje for å nullstilla passordet via epost.", "Username" => "Brukarnamn", "Request reset" => "Be om nullstilling", "Your password was reset" => "Passordet ditt er nullstilt", -"To login page" => "Til innloggingssida", +"To login page" => "Til innloggings sida", "New password" => "Nytt passord", "Reset password" => "Nullstill passord", "Personal" => "Personleg", "Users" => "Brukarar", "Apps" => "Applikasjonar", -"Admin" => "Admin", +"Admin" => "Administrer", "Help" => "Hjelp", -"Access forbidden" => "Tilgang forbudt", "Cloud not found" => "Fann ikkje skyen", -"Edit categories" => "Endra kategoriar", "Add" => "Legg til", -"Security Warning" => "Tryggleiksåtvaring", -"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "PHP-utgåva di er sårbar for NULL-byteåtaket (CVE-2006-7243)", -"Please update your PHP installation to use ownCloud securely." => "Ver venleg og oppdater PHP-installasjonen din så han køyrer ownCloud på ein trygg måte.", -"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ingen tilgjengeleg tilfeldig nummer-generator, ver venleg og aktiver OpenSSL-utvidinga i PHP.", -"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Utan ein trygg tilfeldig nummer-generator er det enklare for ein åtakar å gjetta seg fram til passordnullstillingskodar og dimed ta over kontoen din.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Datamappa og filene dine er sannsynlegvis tilgjengelege frå Internett sidan .htaccess-fila ikkje fungerer.", -"For information how to properly configure your server, please see the documentation." => "Ver venleg og les dokumentasjonen for å læra korleis du set opp tenaren din på rett måte.", "Create an admin account" => "Lag ein admin-konto", "Advanced" => "Avansert", "Data folder" => "Datamappe", @@ -121,19 +45,13 @@ "Database user" => "Databasebrukar", "Database password" => "Databasepassord", "Database name" => "Databasenamn", -"Database tablespace" => "Tabellnamnrom for database", "Database host" => "Databasetenar", "Finish setup" => "Fullfør oppsettet", -"web services under your control" => "Vevtenester under din kontroll", +"web services under your control" => "Vev tjenester under din kontroll", "Log out" => "Logg ut", -"Automatic logon rejected!" => "Automatisk innlogging avvist!", -"If you did not change your password recently, your account may be compromised!" => "Viss du ikkje endra passordet ditt nyleg, så kan kontoen din vera kompromittert!", -"Please change your password to secure your account again." => "Ver venleg og endra passordet for å gjera kontoen din trygg igjen.", "Lost your password?" => "Gløymt passordet?", "remember" => "hugs", "Log in" => "Logg inn", -"Alternative Logins" => "Alternative innloggingar", "prev" => "førre", -"next" => "neste", -"Updating ownCloud to version %s, this may take a while." => "Oppdaterer ownCloud til utgåve %s, dette kan ta ei stund." +"next" => "neste" ); diff --git a/core/l10n/oc.php b/core/l10n/oc.php index a384b0315b..ec432d495a 100644 --- a/core/l10n/oc.php +++ b/core/l10n/oc.php @@ -8,16 +8,16 @@ "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", +"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", @@ -30,7 +30,7 @@ "last year" => "an passat", "years ago" => "ans a", "Ok" => "D'accòrdi", -"Cancel" => "Annula", +"Cancel" => "Anulla", "Choose" => "Causís", "Yes" => "Òc", "No" => "Non", @@ -48,7 +48,7 @@ "Share via email:" => "Parteja tras corrièl :", "No people found" => "Deguns trobat", "Resharing is not allowed" => "Tornar partejar es pas permis", -"Unshare" => "Pas partejador", +"Unshare" => "Non parteje", "can edit" => "pòt modificar", "access control" => "Contraròtle d'acces", "create" => "crea", @@ -61,11 +61,11 @@ "ownCloud password reset" => "senhal d'ownCloud tornat botar", "Use the following link to reset your password: {link}" => "Utiliza lo ligam seguent per tornar botar lo senhal : {link}", "You will receive a link to reset your password via Email." => "Reçaupràs un ligam per tornar botar ton senhal via corrièl.", -"Username" => "Non d'usancièr", +"Username" => "Nom d'usancièr", "Request reset" => "Tornar botar requesit", "Your password was reset" => "Ton senhal es estat tornat botar", "To login page" => "Pagina cap al login", -"New password" => "Senhal novèl", +"New password" => "Senhal nòu", "Reset password" => "Senhal tornat botar", "Personal" => "Personal", "Users" => "Usancièrs", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 22cc24cd51..2821bf77ee 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -89,6 +89,8 @@ "ownCloud password reset" => "restart hasła ownCloud", "Use the following link to reset your password: {link}" => "Użyj tego odnośnika by zresetować hasło: {link}", "You will receive a link to reset your password via Email." => "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", +"Reset email send." => "Wysłano e-mail resetujący.", +"Request failed!" => "Żądanie nieudane!", "Username" => "Nazwa użytkownika", "Request reset" => "Żądanie resetowania", "Your password was reset" => "Zresetowano hasło", @@ -122,7 +124,7 @@ "Database tablespace" => "Obszar tabel bazy danych", "Database host" => "Komputer bazy danych", "Finish setup" => "Zakończ konfigurowanie", -"web services under your control" => "Kontrolowane serwisy", +"web services under your control" => "usługi internetowe pod kontrolą", "Log out" => "Wyloguj", "Automatic logon rejected!" => "Automatyczne logowanie odrzucone!", "If you did not change your password recently, your account may be compromised!" => "Jeśli hasło było dawno niezmieniane, twoje konto może być zagrożone!", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index ee1ac44d02..e5acd4da8f 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -9,7 +9,7 @@ "Object type not provided." => "tipo de objeto não fornecido.", "%s ID not provided." => "%s ID não fornecido(s).", "Error adding %s to favorites." => "Erro ao adicionar %s aos favoritos.", -"No categories selected for deletion." => "Nenhuma categoria selecionada para remoção.", +"No categories selected for deletion." => "Nenhuma categoria selecionada para excluir.", "Error removing %s from favorites." => "Erro ao remover %s dos favoritos.", "Sunday" => "Domingo", "Monday" => "Segunda-feira", @@ -30,7 +30,7 @@ "October" => "outubro", "November" => "novembro", "December" => "dezembro", -"Settings" => "Ajustes", +"Settings" => "Configurações", "seconds ago" => "segundos atrás", "1 minute ago" => "1 minuto atrás", "{minutes} minutes ago" => "{minutes} minutos atrás", @@ -88,10 +88,10 @@ "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "O link para redefinir sua senha foi enviada para o seu e-mail.
Se você não recebê-lo dentro de um período razoável de tempo, verifique o spam/lixo.
Se ele não estiver lá perguntar ao seu administrador local.", -"Request failed!
Did you make sure your email/username was right?" => "O pedido falhou!
Certifique-se que seu e-mail/username estavam corretos?", "You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha por e-mail.", -"Username" => "Nome de usuário", +"Reset email send." => "Email de redefinição de senha enviado.", +"Request failed!" => "A requisição falhou!", +"Username" => "Nome de Usuário", "Request reset" => "Pedir redefinição", "Your password was reset" => "Sua senha foi redefinida", "To login page" => "Para a página de login", @@ -99,7 +99,7 @@ "Reset password" => "Redefinir senha", "Personal" => "Pessoal", "Users" => "Usuários", -"Apps" => "Aplicações", +"Apps" => "Apps", "Admin" => "Admin", "Help" => "Ajuda", "Access forbidden" => "Acesso proibido", diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 0b2af90d1d..67d43e372a 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -9,7 +9,7 @@ "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 seleccionada 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", @@ -30,11 +30,11 @@ "October" => "Outubro", "November" => "Novembro", "December" => "Dezembro", -"Settings" => "Configurações", +"Settings" => "Definições", "seconds ago" => "Minutos atrás", "1 minute ago" => "Há 1 minuto", "{minutes} minutes ago" => "{minutes} minutos atrás", -"1 hour ago" => "Há 1 horas", +"1 hour ago" => "Há 1 hora", "{hours} hours ago" => "Há {hours} horas atrás", "today" => "hoje", "yesterday" => "ontem", @@ -63,7 +63,7 @@ "Share with" => "Partilhar com", "Share with link" => "Partilhar com link", "Password protect" => "Proteger com palavra-passe", -"Password" => "Password", +"Password" => "Palavra chave", "Email link to person" => "Enviar o link por e-mail", "Send" => "Enviar", "Set expiration date" => "Especificar data de expiração", @@ -89,11 +89,13 @@ "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", -"Username" => "Nome de utilizador", +"Reset email send." => "E-mail de reinicialização enviado.", +"Request failed!" => "O pedido falhou!", +"Username" => "Utilizador", "Request reset" => "Pedir reposição", "Your password was reset" => "A sua password foi reposta", "To login page" => "Para a página de entrada", -"New password" => "Nova palavra-chave", +"New password" => "Nova password", "Reset password" => "Repor password", "Personal" => "Pessoal", "Users" => "Utilizadores", diff --git a/core/l10n/ro.php b/core/l10n/ro.php index 36ee8ab4b6..51c1523d7e 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -5,7 +5,6 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Utilizatorul %s a partajat dosarul \"%s\" cu tine. Îl poți descărca de aici: %s ", "Category type not provided." => "Tipul de categorie nu este prevazut", "No category to add?" => "Nici o categorie de adăugat?", -"This category already exists: %s" => "Această categorie deja există: %s", "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", @@ -30,7 +29,7 @@ "October" => "Octombrie", "November" => "Noiembrie", "December" => "Decembrie", -"Settings" => "Setări", +"Settings" => "Configurări", "seconds ago" => "secunde în urmă", "1 minute ago" => "1 minut în urmă", "{minutes} minutes ago" => "{minutes} minute in urma", @@ -53,7 +52,6 @@ "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!", -"Shared" => "Partajat", "Share" => "Partajează", "Error while sharing" => "Eroare la partajare", "Error while unsharing" => "Eroare la anularea partajării", @@ -63,7 +61,7 @@ "Share with" => "Partajat cu", "Share with link" => "Partajare cu legătură", "Password protect" => "Protejare cu parolă", -"Password" => "Parolă", +"Password" => "Parola", "Email link to person" => "Expediază legătura prin poșta electronică", "Send" => "Expediază", "Set expiration date" => "Specifică data expirării", @@ -84,14 +82,12 @@ "Error setting expiration date" => "Eroare la specificarea datei de expirare", "Sending ..." => "Se expediază...", "Email sent" => "Mesajul a fost expediat", -"The update was unsuccessful. Please report this issue to the ownCloud community." => "Modernizarea a eșuat! Te rugam sa raportezi problema aici..", -"The update was successful. Redirecting you to ownCloud now." => "Modernizare reusita! Vei fii redirectionat!", "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Linkul pentru resetarea parolei tale a fost trimis pe email.
Daca nu ai primit email-ul intr-un timp rezonabil, verifica folderul spam/junk.
Daca nu sunt acolo intreaba administratorul local.", -"Request failed!
Did you make sure your email/username was right?" => "Cerere esuata!
Esti sigur ca email-ul/numele de utilizator sunt corecte?", "You will receive a link to reset your password via Email." => "Vei primi un mesaj prin care vei putea reseta parola via email", -"Username" => "Nume utilizator", +"Reset email send." => "Resetarea emailu-lui trimisa.", +"Request failed!" => "Solicitarea nu a reusit", +"Username" => "Utilizator", "Request reset" => "Cerere trimisă", "Your password was reset" => "Parola a fost resetată", "To login page" => "Spre pagina de autentificare", @@ -100,19 +96,15 @@ "Personal" => "Personal", "Users" => "Utilizatori", "Apps" => "Aplicații", -"Admin" => "Admin", +"Admin" => "Administrator", "Help" => "Ajutor", "Access forbidden" => "Acces interzis", "Cloud not found" => "Nu s-a găsit", -"Edit categories" => "Editează categorii", +"Edit categories" => "Editează categoriile", "Add" => "Adaugă", "Security Warning" => "Avertisment de securitate", -"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Versiunea dvs. PHP este vulnerabil la acest atac un octet null (CVE-2006-7243)", -"Please update your PHP installation to use ownCloud securely." => "Vă rugăm să actualizați instalarea dvs. PHP pentru a utiliza ownCloud in siguranță.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Generatorul de numere pentru securitate nu este disponibil, va rog activati extensia PHP OpenSSL", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Fara generatorul pentru numere de securitate , un atacator poate afla parola si reseta contul tau", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Directorul de date și fișiere sunt, probabil, accesibile de pe Internet, deoarece .htaccess nu funcționează.", -"For information how to properly configure your server, please see the documentation." => "Pentru informatii despre configurarea corecta a serverului accesati pagina Documentare.", "Create an admin account" => "Crează un cont de administrator", "Advanced" => "Avansat", "Data folder" => "Director date", @@ -132,7 +124,6 @@ "Lost your password?" => "Ai uitat parola?", "remember" => "amintește", "Log in" => "Autentificare", -"Alternative Logins" => "Conectări alternative", "prev" => "precedentul", "next" => "următorul", "Updating ownCloud to version %s, this may take a while." => "Actualizăm ownCloud la versiunea %s, aceasta poate dura câteva momente." diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 54a0b94ec9..0625a5d11d 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -30,7 +30,7 @@ "October" => "Октябрь", "November" => "Ноябрь", "December" => "Декабрь", -"Settings" => "Конфигурация", +"Settings" => "Настройки", "seconds ago" => "несколько секунд назад", "1 minute ago" => "1 минуту назад", "{minutes} minutes ago" => "{minutes} минут назад", @@ -45,7 +45,7 @@ "last year" => "в прошлом году", "years ago" => "несколько лет назад", "Ok" => "Ок", -"Cancel" => "Отменить", +"Cancel" => "Отмена", "Choose" => "Выбрать", "Yes" => "Да", "No" => "Нет", @@ -88,9 +88,9 @@ "The update was successful. Redirecting you to ownCloud now." => "Обновление прошло успешно. Перенаправляемся в Ваш ownCloud...", "ownCloud password reset" => "Сброс пароля ", "Use the following link to reset your password: {link}" => "Используйте следующую ссылку чтобы сбросить пароль: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Ссылка для сброса пароля была отправлена ​​по электронной почте.
Если вы не получите его в пределах одной двух минут, проверьте папку спам.
Если это не возможно, обратитесь к Вашему администратору.", -"Request failed!
Did you make sure your email/username was right?" => "Что-то не так. Вы уверены что Email / Имя пользователя указаны верно?", "You will receive a link to reset your password via Email." => "На ваш адрес Email выслана ссылка для сброса пароля.", +"Reset email send." => "Отправка письма с информацией для сброса.", +"Request failed!" => "Запрос не удался!", "Username" => "Имя пользователя", "Request reset" => "Запросить сброс", "Your password was reset" => "Ваш пароль был сброшен", @@ -100,11 +100,11 @@ "Personal" => "Личное", "Users" => "Пользователи", "Apps" => "Приложения", -"Admin" => "Admin", +"Admin" => "Администратор", "Help" => "Помощь", "Access forbidden" => "Доступ запрещён", "Cloud not found" => "Облако не найдено", -"Edit categories" => "Редактировать категрии", +"Edit categories" => "Редактировать категории", "Add" => "Добавить", "Security Warning" => "Предупреждение безопасности", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Ваша версия PHP уязвима к атаке NULL Byte (CVE-2006-7243)", @@ -124,7 +124,7 @@ "Database tablespace" => "Табличое пространство базы данных", "Database host" => "Хост базы данных", "Finish setup" => "Завершить установку", -"web services under your control" => "веб-сервисы под вашим управлением", +"web services under your control" => "Сетевые службы под твоим контролем", "Log out" => "Выйти", "Automatic logon rejected!" => "Автоматический вход в систему отключен!", "If you did not change your password recently, your account may be compromised!" => "Если Вы недавно не меняли свой пароль, то Ваша учетная запись может быть скомпрометирована!", diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php index 8fb568aee7..1afb9e20c9 100644 --- a/core/l10n/ru_RU.php +++ b/core/l10n/ru_RU.php @@ -1,3 +1,137 @@ "Настройки" +"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: %s" => "Эта категория уже существует: %s", +"Object type not provided." => "Тип объекта не предоставлен.", +"%s ID not provided." => "%s ID не предоставлен.", +"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" => "лет назад", +"Ok" => "Да", +"Cancel" => "Отмена", +"Choose" => "Выбрать", +"Yes" => "Да", +"No" => "Нет", +"The object type is not specified." => "Тип объекта не указан.", +"Error" => "Ошибка", +"The app name is not specified." => "Имя приложения не указано.", +"The required file {file} is not installed!" => "Требуемый файл {файл} не установлен!", +"Shared" => "Опубликовано", +"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" => "Ссылка на адрес электронной почты", +"Send" => "Отправить", +"Set expiration date" => "Установить срок действия", +"Expiration date" => "Дата истечения срока действия", +"Share via email:" => "Сделать общедоступным посредством 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" => "Ошибка при установке даты истечения срока действия", +"Sending ..." => "Отправка ...", +"Email sent" => "Письмо отправлено", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "Обновление прошло неудачно. Пожалуйста, сообщите об этом результате в ownCloud community.", +"The update was successful. Redirecting you to ownCloud now." => "Обновление прошло успешно. Немедленное перенаправление Вас на ownCloud.", +"ownCloud password reset" => "Переназначение пароля", +"Use the following link to reset your password: {link}" => "Воспользуйтесь следующей ссылкой для переназначения пароля: {link}", +"You will receive a link to reset your password via Email." => "Вы получите ссылку для восстановления пароля по электронной почте.", +"Reset email send." => "Сброс отправки email.", +"Request failed!" => "Не удалось выполнить запрос!", +"Username" => "Имя пользователя", +"Request reset" => "Сброс запроса", +"Your password was reset" => "Ваш пароль был переустановлен", +"To login page" => "На страницу входа", +"New password" => "Новый пароль", +"Reset password" => "Переназначение пароля", +"Personal" => "Персональный", +"Users" => "Пользователи", +"Apps" => "Приложения", +"Admin" => "Администратор", +"Help" => "Помощь", +"Access forbidden" => "Доступ запрещен", +"Cloud not found" => "Облако не найдено", +"Edit categories" => "Редактирование категорий", +"Add" => "Добавить", +"Security Warning" => "Предупреждение системы безопасности", +"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Нет доступного защищенного генератора случайных чисел, пожалуйста, включите расширение PHP OpenSSL.", +"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Без защищенного генератора случайных чисел злоумышленник может спрогнозировать пароль, сбросить учетные данные и завладеть Вашим аккаунтом.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает.", +"For information how to properly configure your server, please see the documentation." => "Для информации как правильно настроить Ваш сервер, пожалйста загляните в документацию.", +"Create an admin account" => "Создать admin account", +"Advanced" => "Расширенный", +"Data folder" => "Папка данных", +"Configure the database" => "Настроить базу данных", +"will be used" => "будет использоваться", +"Database user" => "Пользователь базы данных", +"Database password" => "Пароль базы данных", +"Database name" => "Имя базы данных", +"Database tablespace" => "Табличная область базы данных", +"Database host" => "Сервер базы данных", +"Finish setup" => "Завершение настройки", +"web services under your control" => "веб-сервисы под Вашим контролем", +"Log out" => "Выйти", +"Automatic logon rejected!" => "Автоматический вход в систему отклонен!", +"If you did not change your password recently, your account may be compromised!" => "Если Вы недавно не меняли пароль, Ваш аккаунт может быть подвергнут опасности!", +"Please change your password to secure your account again." => "Пожалуйста, измените пароль, чтобы защитить ваш аккаунт еще раз.", +"Lost your password?" => "Забыли пароль?", +"remember" => "запомнить", +"Log in" => "Войти", +"Alternative Logins" => "Альтернативные Имена", +"prev" => "предыдущий", +"next" => "следующий", +"Updating ownCloud to version %s, this may take a while." => "Обновление ownCloud до версии %s, это может занять некоторое время." ); diff --git a/core/l10n/si_LK.php b/core/l10n/si_LK.php index c1e8ba37ed..dc9801139a 100644 --- a/core/l10n/si_LK.php +++ b/core/l10n/si_LK.php @@ -16,10 +16,10 @@ "July" => "ජූලි", "August" => "අගෝස්තු", "September" => "සැප්තැම්බර්", -"October" => "ඔක්තෝබර", +"October" => "ඔක්තෝබර්", "November" => "නොවැම්බර්", "December" => "දෙසැම්බර්", -"Settings" => "සිටුවම්", +"Settings" => "සැකසුම්", "seconds ago" => "තත්පරයන්ට පෙර", "1 minute ago" => "1 මිනිත්තුවකට පෙර", "today" => "අද", @@ -32,13 +32,13 @@ "Cancel" => "එපා", "Choose" => "තෝරන්න", "Yes" => "ඔව්", -"No" => "එපා", +"No" => "නැහැ", "Error" => "දෝෂයක්", "Share" => "බෙදා හදා ගන්න", "Share with" => "බෙදාගන්න", "Share with link" => "යොමුවක් මඟින් බෙදාගන්න", "Password protect" => "මුර පදයකින් ආරක්ශාකරන්න", -"Password" => "මුර පදය", +"Password" => "මුර පදය ", "Set expiration date" => "කල් ඉකුත් විමේ දිනය දමන්න", "Expiration date" => "කල් ඉකුත් විමේ දිනය", "Share via email:" => "විද්‍යුත් තැපෑල මඟින් බෙදාගන්න: ", @@ -54,10 +54,11 @@ "Error setting expiration date" => "කල් ඉකුත් දිනය ස්ථාපනය කිරීමේ දෝෂයක්", "ownCloud password reset" => "ownCloud මුරපදය ප්‍රත්‍යාරම්භ කරන්න", "You will receive a link to reset your password via Email." => "ඔබගේ මුරපදය ප්‍රත්‍යාරම්භ කිරීම සඳහා යොමුව විද්‍යුත් තැපෑලෙන් ලැබෙනු ඇත", +"Request failed!" => "ඉල්ලීම අසාර්ථකයි!", "Username" => "පරිශීලක නම", "Your password was reset" => "ඔබේ මුරපදය ප්‍රත්‍යාරම්භ කරන ලදී", "To login page" => "පිවිසුම් පිටුවට", -"New password" => "නව මුරපදය", +"New password" => "නව මුර පදයක්", "Reset password" => "මුරපදය ප්‍රත්‍යාරම්භ කරන්න", "Personal" => "පෞද්ගලික", "Users" => "පරිශීලකයන්", @@ -67,7 +68,7 @@ "Access forbidden" => "ඇතුල් වීම තහනම්", "Cloud not found" => "සොයා ගත නොහැක", "Edit categories" => "ප්‍රභේදයන් සංස්කරණය", -"Add" => "එකතු කරන්න", +"Add" => "එක් කරන්න", "Security Warning" => "ආරක්ෂක නිවේදනයක්", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ආරක්ෂිත අහඹු සංඛ්‍යා උත්පාදකයක් නොමැති නම් ඔබගේ ගිණුමට පහරදෙන අයකුට එහි මුරපද යළි පිහිටුවීමට අවශ්‍ය ටෝකන පහසුවෙන් සොයාගෙන ඔබගේ ගිණුම පැහැරගත හැක.", "Advanced" => "දියුණු/උසස්", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index d9f124b2b4..b52c8b03c4 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -34,7 +34,7 @@ "seconds ago" => "pred sekundami", "1 minute ago" => "pred minútou", "{minutes} minutes ago" => "pred {minutes} minútami", -"1 hour ago" => "Pred 1 hodinou", +"1 hour ago" => "Pred 1 hodinou.", "{hours} hours ago" => "Pred {hours} hodinami.", "today" => "dnes", "yesterday" => "včera", @@ -88,10 +88,10 @@ "The update was successful. Redirecting you to ownCloud now." => "Aktualizácia bola úspešná. Presmerovávam na prihlasovaciu stránku.", "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}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Odkaz na obnovenie hesla bol odoslaný na Vašu emailovú adresu.
Ak ho v krátkej dobe neobdržíte, skontrolujte si Váš kôš a priečinok spam.
Ak ho ani tam nenájdete, kontaktujte svojho administrátora.", -"Request failed!
Did you make sure your email/username was right?" => "Požiadavka zlyhala.
Uistili ste sa, že Vaše používateľské meno a email sú správne?", "You will receive a link to reset your password via Email." => "Odkaz pre obnovenie hesla obdržíte e-mailom.", -"Username" => "Meno používateľa", +"Reset email send." => "Obnovovací email bol odoslaný.", +"Request failed!" => "Požiadavka zlyhala!", +"Username" => "Prihlasovacie meno", "Request reset" => "Požiadať o obnovenie", "Your password was reset" => "Vaše heslo bolo obnovené", "To login page" => "Na prihlasovaciu stránku", @@ -100,11 +100,11 @@ "Personal" => "Osobné", "Users" => "Používatelia", "Apps" => "Aplikácie", -"Admin" => "Administrátor", +"Admin" => "Administrácia", "Help" => "Pomoc", "Access forbidden" => "Prístup odmietnutý", "Cloud not found" => "Nenájdené", -"Edit categories" => "Upraviť kategórie", +"Edit categories" => "Úprava kategórií", "Add" => "Pridať", "Security Warning" => "Bezpečnostné varovanie", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Verzia Vášho PHP je napadnuteľná pomocou techniky \"NULL Byte\" (CVE-2006-7243)", @@ -124,7 +124,7 @@ "Database tablespace" => "Tabuľkový priestor databázy", "Database host" => "Server databázy", "Finish setup" => "Dokončiť inštaláciu", -"web services under your control" => "webové služby pod Vašou kontrolou", +"web services under your control" => "webové služby pod vašou kontrolou", "Log out" => "Odhlásiť", "Automatic logon rejected!" => "Automatické prihlásenie bolo zamietnuté!", "If you did not change your password recently, your account may be compromised!" => "V nedávnej dobe ste nezmenili svoje heslo, Váš účet môže byť kompromitovaný.", diff --git a/core/l10n/sl.php b/core/l10n/sl.php index db5583c610..b3cd5c353c 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -34,7 +34,7 @@ "seconds ago" => "pred nekaj sekundami", "1 minute ago" => "pred minuto", "{minutes} minutes ago" => "pred {minutes} minutami", -"1 hour ago" => "Pred 1 uro", +"1 hour ago" => "pred 1 uro", "{hours} hours ago" => "pred {hours} urami", "today" => "danes", "yesterday" => "včeraj", @@ -72,7 +72,7 @@ "No people found" => "Ni najdenih uporabnikov", "Resharing is not allowed" => "Nadaljnja souporaba ni dovoljena", "Shared in {item} with {user}" => "V souporabi v {item} z {user}", -"Unshare" => "Prekliči souporabo", +"Unshare" => "Odstrani souporabo", "can edit" => "lahko ureja", "access control" => "nadzor dostopa", "create" => "ustvari", @@ -88,10 +88,10 @@ "The update was successful. Redirecting you to ownCloud now." => "Posodobitev je uspešno končana. Stran bo preusmerjena na oblak ownCloud.", "ownCloud password reset" => "Ponastavitev gesla za oblak ownCloud", "Use the following link to reset your password: {link}" => "Za ponastavitev gesla uporabite povezavo: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Povezava za ponastavitev gesla je bila poslana na elektronski naslov.
V kolikor sporočila ne prejmete v doglednem času, preverite tudi mape vsiljene pošte.
Če ne bo niti tam, stopite v stik s skrbnikom.", -"Request failed!
Did you make sure your email/username was right?" => "Zahteva je spodletela!
Ali sta elektronski naslov oziroma uporabniško ime navedena pravilno?", "You will receive a link to reset your password via Email." => "Na elektronski naslov boste prejeli povezavo za ponovno nastavitev gesla.", -"Username" => "Uporabniško ime", +"Reset email send." => "Sporočilo z navodili za ponastavitev gesla je poslana na vaš elektronski naslov.", +"Request failed!" => "Zahteva je spodletela!", +"Username" => "Uporabniško Ime", "Request reset" => "Zahtevaj ponovno nastavitev", "Your password was reset" => "Geslo je ponovno nastavljeno", "To login page" => "Na prijavno stran", diff --git a/core/l10n/sq.php b/core/l10n/sq.php index 8769a833e1..6881d0105c 100644 --- a/core/l10n/sq.php +++ b/core/l10n/sq.php @@ -30,7 +30,7 @@ "October" => "Tetor", "November" => "Nëntor", "December" => "Dhjetor", -"Settings" => "Parametra", +"Settings" => "Parametrat", "seconds ago" => "sekonda më parë", "1 minute ago" => "1 minutë më parë", "{minutes} minutes ago" => "{minutes} minuta më parë", @@ -88,9 +88,9 @@ "The update was successful. Redirecting you to ownCloud now." => "Azhurnimi u krye. Tani do t'ju kaloj tek ownCloud-i.", "ownCloud password reset" => "Rivendosja e kodit të ownCloud-it", "Use the following link to reset your password: {link}" => "Përdorni lidhjen në vijim për të rivendosur kodin: {link}", -"The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator ." => "Lidhja për rivendosjen e kodit tuaj u dërgua tek email-i juaj.
Nëqoftëse nuk e merrni brenda një kohe të arsyeshme, kontrolloni dosjet e postës së padëshirueshme (spam).
Nëqoftëse nuk është as aty, pyesni administratorin tuaj lokal.", -"Request failed!
Did you make sure your email/username was right?" => "Kërkesa dështoi!
A u siguruat që email-i/përdoruesi juaj ishte i saktë?", "You will receive a link to reset your password via Email." => "Do t'iu vijë një email që përmban një lidhje për ta rivendosur kodin.", +"Reset email send." => "Emaili i rivendosjes u dërgua.", +"Request failed!" => "Kërkesa dështoi!", "Username" => "Përdoruesi", "Request reset" => "Bëj kërkesë për rivendosjen", "Your password was reset" => "Kodi yt u rivendos", diff --git a/core/l10n/sr.php b/core/l10n/sr.php index 2329dc49b1..b71d8cdd94 100644 --- a/core/l10n/sr.php +++ b/core/l10n/sr.php @@ -27,7 +27,7 @@ "October" => "Октобар", "November" => "Новембар", "December" => "Децембар", -"Settings" => "Поставке", +"Settings" => "Подешавања", "seconds ago" => "пре неколико секунди", "1 minute ago" => "пре 1 минут", "{minutes} minutes ago" => "пре {minutes} минута", @@ -50,7 +50,7 @@ "Error" => "Грешка", "The app name is not specified." => "Име програма није унето.", "The required file {file} is not installed!" => "Потребна датотека {file} није инсталирана.", -"Share" => "Дели", +"Share" => "Дељење", "Error while sharing" => "Грешка у дељењу", "Error while unsharing" => "Грешка код искључења дељења", "Error while changing permissions" => "Грешка код промене дозвола", @@ -67,7 +67,7 @@ "No people found" => "Особе нису пронађене.", "Resharing is not allowed" => "Поновно дељење није дозвољено", "Shared in {item} with {user}" => "Подељено унутар {item} са {user}", -"Unshare" => "Укини дељење", +"Unshare" => "Не дели", "can edit" => "може да мења", "access control" => "права приступа", "create" => "направи", @@ -82,16 +82,18 @@ "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." => "Добићете везу за ресетовање лозинке путем е-поште.", +"Reset email send." => "Захтев је послат поштом.", +"Request failed!" => "Захтев одбијен!", "Username" => "Корисничко име", "Request reset" => "Захтевај ресетовање", "Your password was reset" => "Ваша лозинка је ресетована", "To login page" => "На страницу за пријаву", "New password" => "Нова лозинка", "Reset password" => "Ресетуј лозинку", -"Personal" => "Лично", +"Personal" => "Лична", "Users" => "Корисници", -"Apps" => "Апликације", -"Admin" => "Администратор", +"Apps" => "Програми", +"Admin" => "Аднинистрација", "Help" => "Помоћ", "Access forbidden" => "Забрањен приступ", "Cloud not found" => "Облак није нађен", diff --git a/core/l10n/sr@latin.php b/core/l10n/sr@latin.php index 238843aa17..ec3eab34e2 100644 --- a/core/l10n/sr@latin.php +++ b/core/l10n/sr@latin.php @@ -27,7 +27,7 @@ "Your password was reset" => "Vaša lozinka je resetovana", "New password" => "Nova lozinka", "Reset password" => "Resetuj lozinku", -"Personal" => "Lično", +"Personal" => "Lična", "Users" => "Korisnici", "Apps" => "Programi", "Admin" => "Adninistracija", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index 26bcebdf6c..553afea5f7 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -89,6 +89,8 @@ "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.", +"Reset email send." => "Återställ skickad e-post.", +"Request failed!" => "Begäran misslyckades!", "Username" => "Användarnamn", "Request reset" => "Begär återställning", "Your password was reset" => "Ditt lösenord har återställts", @@ -102,7 +104,7 @@ "Help" => "Hjälp", "Access forbidden" => "Åtkomst förbjuden", "Cloud not found" => "Hittade inget moln", -"Edit categories" => "Editera kategorier", +"Edit categories" => "Redigera kategorier", "Add" => "Lägg till", "Security Warning" => "Säkerhetsvarning", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Din version av PHP är sårbar för NULL byte attack (CVE-2006-7243)", @@ -112,7 +114,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", "For information how to properly configure your server, please see the documentation." => "För information hur man korrekt konfigurera servern, var god se documentation.", "Create an admin account" => "Skapa ett administratörskonto", -"Advanced" => "Avancerad", +"Advanced" => "Avancerat", "Data folder" => "Datamapp", "Configure the database" => "Konfigurera databasen", "will be used" => "kommer att användas", diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php index b01f8df945..b45f38627a 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -64,10 +64,10 @@ "No people found" => "நபர்கள் யாரும் இல்லை", "Resharing is not allowed" => "மீள்பகிர்வதற்கு அனுமதி இல்லை ", "Shared in {item} with {user}" => "{பயனாளர்} உடன் {உருப்படி} பகிரப்பட்டுள்ளது", -"Unshare" => "பகிரப்படாதது", +"Unshare" => "பகிரமுடியாது", "can edit" => "தொகுக்க முடியும்", "access control" => "கட்டுப்பாடான அணுகல்", -"create" => "உருவவாக்கல்", +"create" => "படைத்தல்", "update" => "இற்றைப்படுத்தல்", "delete" => "நீக்குக", "share" => "பகிர்தல்", @@ -77,6 +77,8 @@ "ownCloud password reset" => "ownCloud இன் கடவுச்சொல் மீளமைப்பு", "Use the following link to reset your password: {link}" => "உங்கள் கடவுச்சொல்லை மீளமைக்க பின்வரும் இணைப்பை பயன்படுத்தவும் : {இணைப்பு}", "You will receive a link to reset your password via Email." => "நீங்கள் மின்னஞ்சல் மூலம் உங்களுடைய கடவுச்சொல்லை மீளமைப்பதற்கான இணைப்பை பெறுவீர்கள். ", +"Reset email send." => "மின்னுஞ்சல் அனுப்புதலை மீளமைக்குக", +"Request failed!" => "வேண்டுகோள் தோல்வியுற்றது!", "Username" => "பயனாளர் பெயர்", "Request reset" => "கோரிக்கை மீளமைப்பு", "Your password was reset" => "உங்களுடைய கடவுச்சொல் மீளமைக்கப்பட்டது", @@ -84,9 +86,9 @@ "New password" => "புதிய கடவுச்சொல்", "Reset password" => "மீளமைத்த கடவுச்சொல்", "Personal" => "தனிப்பட்ட", -"Users" => "பயனாளர்", -"Apps" => "செயலிகள்", -"Admin" => "நிர்வாகம்", +"Users" => "பயனாளர்கள்", +"Apps" => "பயன்பாடுகள்", +"Admin" => "நிர்வாகி", "Help" => "உதவி", "Access forbidden" => "அணுக தடை", "Cloud not found" => "Cloud காணப்படவில்லை", @@ -96,7 +98,7 @@ "No secure random number generator is available, please enable the PHP OpenSSL extension." => "குறிப்பிட்ட எண்ணிக்கை பாதுகாப்பான புறப்பாக்கி / உண்டாக்கிகள் இல்லை, தயவுசெய்து PHP OpenSSL நீட்சியை இயலுமைப்படுத்துக. ", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "பாதுகாப்பான சீரற்ற எண்ணிக்கையான புறப்பாக்கி இல்லையெனின், தாக்குனரால் கடவுச்சொல் மீளமைப்பு அடையாளவில்லைகள் முன்மொழியப்பட்டு உங்களுடைய கணக்கை கைப்பற்றலாம்.", "Create an admin account" => " நிர்வாக கணக்கொன்றை உருவாக்குக", -"Advanced" => "உயர்ந்த", +"Advanced" => "மேம்பட்ட", "Data folder" => "தரவு கோப்புறை", "Configure the database" => "தரவுத்தளத்தை தகவமைக்க", "will be used" => "பயன்படுத்தப்படும்", @@ -106,7 +108,7 @@ "Database tablespace" => "தரவுத்தள அட்டவணை", "Database host" => "தரவுத்தள ஓம்புனர்", "Finish setup" => "அமைப்பை முடிக்க", -"web services under your control" => "வலைய சேவைகள் உங்களுடைய கட்டுப்பாட்டின் கீழ் உள்ளது", +"web services under your control" => "உங்கள் கட்டுப்பாட்டின் கீழ் இணைய சேவைகள்", "Log out" => "விடுபதிகை செய்க", "Automatic logon rejected!" => "தன்னிச்சையான புகுபதிகை நிராகரிப்பட்டது!", "If you did not change your password recently, your account may be compromised!" => "உங்களுடைய கடவுச்சொல்லை அண்மையில் மாற்றவில்லையின், உங்களுடைய கணக்கு சமரசமாகிவிடும்!", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index 1114726434..47d4b87b17 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -49,7 +49,7 @@ "Yes" => "ตกลง", "No" => "ไม่ตกลง", "The object type is not specified." => "ชนิดของวัตถุยังไม่ได้รับการระบุ", -"Error" => "ข้อผิดพลาด", +"Error" => "พบข้อผิดพลาด", "The app name is not specified." => "ชื่อของแอปยังไม่ได้รับการระบุชื่อ", "The required file {file} is not installed!" => "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้องได้รับการติดตั้งไว้ก่อน ยังไม่ได้ถูกติดตั้ง", "Shared" => "แชร์แล้ว", @@ -88,6 +88,8 @@ "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." => "คุณจะได้รับลิงค์เพื่อกำหนดรหัสผ่านใหม่ทางอีเมล์", +"Reset email send." => "รีเซ็ตค่าการส่งอีเมล", +"Request failed!" => "คำร้องขอล้มเหลว!", "Username" => "ชื่อผู้ใช้งาน", "Request reset" => "ขอเปลี่ยนรหัสใหม่", "Your password was reset" => "รหัสผ่านของคุณถูกเปลี่ยนเรียบร้อยแล้ว", @@ -96,8 +98,8 @@ "Reset password" => "เปลี่ยนรหัสผ่าน", "Personal" => "ส่วนตัว", "Users" => "ผู้ใช้งาน", -"Apps" => "แอปฯ", -"Admin" => "ผู้ดูแล", +"Apps" => "Apps", +"Admin" => "ผู้ดูแลระบบ", "Help" => "ช่วยเหลือ", "Access forbidden" => "การเข้าถึงถูกหวงห้าม", "Cloud not found" => "ไม่พบ Cloud", @@ -117,7 +119,7 @@ "Database tablespace" => "พื้นที่ตารางในฐานข้อมูล", "Database host" => "Database host", "Finish setup" => "ติดตั้งเรียบร้อยแล้ว", -"web services under your control" => "เว็บเซอร์วิสที่คุณควบคุมการใช้งานได้", +"web services under your control" => "web services under your control", "Log out" => "ออกจากระบบ", "Automatic logon rejected!" => "การเข้าสู่ระบบอัตโนมัติถูกปฏิเสธแล้ว", "If you did not change your password recently, your account may be compromised!" => "หากคุณยังไม่ได้เปลี่ยนรหัสผ่านของคุณเมื่อเร็วๆนี้, บัญชีของคุณอาจถูกบุกรุกโดยผู้อื่น", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 4b858e82e4..d6b25b4093 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -89,7 +89,9 @@ "ownCloud password reset" => "ownCloud parola sıfırlama", "Use the following link to reset your password: {link}" => "Bu bağlantıyı kullanarak parolanızı sıfırlayın: {link}", "You will receive a link to reset your password via Email." => "Parolanızı sıfırlamak için bir bağlantı Eposta olarak gönderilecek.", -"Username" => "Kullanıcı Adı", +"Reset email send." => "Sıfırlama epostası gönderildi.", +"Request failed!" => "İstek reddedildi!", +"Username" => "Kullanıcı adı", "Request reset" => "Sıfırlama iste", "Your password was reset" => "Parolanız sıfırlandı", "To login page" => "Giriş sayfasına git", @@ -122,7 +124,7 @@ "Database tablespace" => "Veritabanı tablo alanı", "Database host" => "Veritabanı sunucusu", "Finish setup" => "Kurulumu tamamla", -"web services under your control" => "Bilgileriniz güvenli ve şifreli", +"web services under your control" => "kontrolünüzdeki web servisleri", "Log out" => "Çıkış yap", "Automatic logon rejected!" => "Otomatik oturum açma reddedildi!", "If you did not change your password recently, your account may be compromised!" => "Yakın zamanda parolanızı değiştirmedi iseniz hesabınız riske girebilir.", diff --git a/core/l10n/uk.php b/core/l10n/uk.php index a9e4117a61..1e86ed7d36 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -72,7 +72,7 @@ "No people found" => "Жодної людини не знайдено", "Resharing is not allowed" => "Пере-публікація не дозволяється", "Shared in {item} with {user}" => "Опубліковано {item} для {user}", -"Unshare" => "Закрити доступ", +"Unshare" => "Заборонити доступ", "can edit" => "може редагувати", "access control" => "контроль доступу", "create" => "створити", @@ -89,6 +89,8 @@ "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." => "Ви отримаєте посилання для скидання вашого паролю на Ел. пошту.", +"Reset email send." => "Лист скидання відправлено.", +"Request failed!" => "Невдалий запит!", "Username" => "Ім'я користувача", "Request reset" => "Запит скидання", "Your password was reset" => "Ваш пароль був скинутий", @@ -98,7 +100,7 @@ "Personal" => "Особисте", "Users" => "Користувачі", "Apps" => "Додатки", -"Admin" => "Адмін", +"Admin" => "Адміністратор", "Help" => "Допомога", "Access forbidden" => "Доступ заборонено", "Cloud not found" => "Cloud не знайдено", @@ -122,7 +124,7 @@ "Database tablespace" => "Таблиця бази даних", "Database host" => "Хост бази даних", "Finish setup" => "Завершити налаштування", -"web services under your control" => "підконтрольні Вам веб-сервіси", +"web services under your control" => "веб-сервіс під вашим контролем", "Log out" => "Вихід", "Automatic logon rejected!" => "Автоматичний вхід в систему відхилений!", "If you did not change your password recently, your account may be compromised!" => "Якщо Ви не міняли пароль останнім часом, Ваш обліковий запис може бути скомпрометованим!", diff --git a/core/l10n/vi.php b/core/l10n/vi.php index 0b45fa6931..709a874308 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -9,7 +9,7 @@ "Object type not provided." => "Loại đối tượng không được cung cấp.", "%s ID not provided." => "%s ID không được cung cấp.", "Error adding %s to favorites." => "Lỗi thêm %s vào mục yêu thích.", -"No categories selected for deletion." => "Bạn chưa chọn mục để xóa", +"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", @@ -72,7 +72,7 @@ "No people found" => "Không tìm thấy người nào", "Resharing is not allowed" => "Chia sẻ lại không được cho phép", "Shared in {item} with {user}" => "Đã được chia sẽ trong {item} với {user}", -"Unshare" => "Bỏ chia sẻ", +"Unshare" => "Gỡ bỏ chia sẻ", "can edit" => "có thể chỉnh sửa", "access control" => "quản lý truy cập", "create" => "tạo", @@ -89,20 +89,22 @@ "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.", -"Username" => "Tên đăng nhập", +"Reset email send." => "Thiết lập lại email gởi.", +"Request failed!" => "Yêu cầu của bạn không thành công !", +"Username" => "Tên người dùng", "Request reset" => "Yêu cầu thiết lập lại ", "Your password was reset" => "Mật khẩu của bạn đã được khôi phục", "To login page" => "Trang đăng nhập", "New password" => "Mật khẩu mới", "Reset password" => "Khôi phục mật khẩu", "Personal" => "Cá nhân", -"Users" => "Người dùng", +"Users" => "Người sử dụng", "Apps" => "Ứng dụng", "Admin" => "Quản trị", "Help" => "Giúp đỡ", "Access forbidden" => "Truy cập bị cấm", "Cloud not found" => "Không tìm thấy Clound", -"Edit categories" => "Sửa chuyên mục", +"Edit categories" => "Sửa thể loại", "Add" => "Thêm", "Security Warning" => "Cảnh bảo bảo mật", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Không an toàn ! chức năng random number generator đã có sẵn ,vui lòng bật PHP OpenSSL extension.", @@ -120,7 +122,7 @@ "Database tablespace" => "Cơ sở dữ liệu tablespace", "Database host" => "Database host", "Finish setup" => "Cài đặt hoàn tất", -"web services under your control" => "dịch vụ web dưới sự kiểm soát của bạn", +"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 !", "If you did not change your password recently, your account may be compromised!" => "Nếu bạn không thay đổi mật khẩu gần đây của bạn, tài khoản của bạn có thể gặp nguy hiểm!", diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php index 7e98d69b64..9fbfac2eec 100644 --- a/core/l10n/zh_CN.GB2312.php +++ b/core/l10n/zh_CN.GB2312.php @@ -7,7 +7,7 @@ "No category to add?" => "没有分类添加了?", "This category already exists: %s" => "此分类已存在:%s", "Object type not provided." => "未选择对象类型。", -"No categories selected for deletion." => "没有选中要删除的分类。", +"No categories selected for deletion." => "没有选者要删除的分类.", "Sunday" => "星期天", "Monday" => "星期一", "Tuesday" => "星期二", @@ -47,7 +47,7 @@ "Yes" => "是", "No" => "否", "The object type is not specified." => "未指定对象类型。", -"Error" => "出错", +"Error" => "错误", "The app name is not specified." => "未指定应用名称。", "The required file {file} is not installed!" => "未安装所需要的文件 {file} !", "Shared" => "已分享", @@ -86,16 +86,18 @@ "ownCloud password reset" => "私有云密码重置", "Use the following link to reset your password: {link}" => "使用下面的链接来重置你的密码:{link}", "You will receive a link to reset your password via Email." => "你将会收到一个重置密码的链接", +"Reset email send." => "重置邮件已发送。", +"Request failed!" => "请求失败!", "Username" => "用户名", "Request reset" => "要求重置", "Your password was reset" => "你的密码已经被重置了", "To login page" => "转至登陆页面", "New password" => "新密码", "Reset password" => "重置密码", -"Personal" => "私人", +"Personal" => "个人的", "Users" => "用户", -"Apps" => "程序", -"Admin" => "管理员", +"Apps" => "应用程序", +"Admin" => "管理", "Help" => "帮助", "Access forbidden" => "禁止访问", "Cloud not found" => "云 没有被找到", @@ -118,7 +120,7 @@ "Database tablespace" => "数据库表格空间", "Database host" => "数据库主机", "Finish setup" => "完成安装", -"web services under your control" => "您控制的网络服务", +"web services under your control" => "你控制下的网络服务", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒绝!", "If you did not change your password recently, your account may be compromised!" => "如果您最近没有修改您的密码,那您的帐号可能被攻击了!", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 49cd1e2ebf..926d4691ed 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -54,13 +54,13 @@ "The app name is not specified." => "未指定App名称。", "The required file {file} is not installed!" => "所需文件{file}未安装!", "Shared" => "已共享", -"Share" => "分享", +"Share" => "共享", "Error while sharing" => "共享时出错", "Error while unsharing" => "取消共享时出错", "Error while changing permissions" => "修改权限时出错", "Shared with you and the group {group} by {owner}" => "{owner}共享给您及{group}组", "Shared with you by {owner}" => " {owner}与您共享", -"Share with" => "分享之", +"Share with" => "共享", "Share with link" => "共享链接", "Password protect" => "密码保护", "Password" => "密码", @@ -89,6 +89,8 @@ "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." => "您将会收到包含可以重置密码链接的邮件。", +"Reset email send." => "重置邮件已发送。", +"Request failed!" => "请求失败!", "Username" => "用户名", "Request reset" => "请求重置", "Your password was reset" => "您的密码已重置", @@ -98,12 +100,12 @@ "Personal" => "个人", "Users" => "用户", "Apps" => "应用", -"Admin" => "管理", +"Admin" => "管理员", "Help" => "帮助", "Access forbidden" => "访问禁止", "Cloud not found" => "未找到云", "Edit categories" => "编辑分类", -"Add" => "增加", +"Add" => "添加", "Security Warning" => "安全警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "随机数生成器无效,请启用PHP的OpenSSL扩展", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "没有安全随机码生成器,攻击者可能会猜测密码重置信息从而窃取您的账户", @@ -120,7 +122,7 @@ "Database tablespace" => "数据库表空间", "Database host" => "数据库主机", "Finish setup" => "安装完成", -"web services under your control" => "您控制的web服务", +"web services under your control" => "由您掌控的网络服务", "Log out" => "注销", "Automatic logon rejected!" => "自动登录被拒绝!", "If you did not change your password recently, your account may be compromised!" => "如果您没有最近修改您的密码,您的帐户可能会受到影响!", diff --git a/core/l10n/zh_HK.php b/core/l10n/zh_HK.php index c4f4009517..178ab88e5e 100644 --- a/core/l10n/zh_HK.php +++ b/core/l10n/zh_HK.php @@ -55,6 +55,8 @@ "The update was successful. Redirecting you to ownCloud now." => "更新成功, 正", "Use the following link to reset your password: {link}" => "請用以下連結重設你的密碼: {link}", "You will receive a link to reset your password via Email." => "你將收到一封電郵", +"Reset email send." => "重設密碼郵件已傳", +"Request failed!" => "請求失敗", "Username" => "用戶名稱", "Request reset" => "重設", "Your password was reset" => "你的密碼已被重設", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index cfc3a9fe33..3199688be3 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -34,7 +34,7 @@ "seconds ago" => "幾秒前", "1 minute ago" => "1 分鐘前", "{minutes} minutes ago" => "{minutes} 分鐘前", -"1 hour ago" => "1 小時之前", +"1 hour ago" => "1 個小時前", "{hours} hours ago" => "{hours} 小時前", "today" => "今天", "yesterday" => "昨天", @@ -89,6 +89,8 @@ "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." => "重設密碼的連結將會寄到你的電子郵件信箱。", +"Reset email send." => "重設郵件已送出。", +"Request failed!" => "請求失敗!", "Username" => "使用者名稱", "Request reset" => "請求重設", "Your password was reset" => "您的密碼已重設", @@ -98,8 +100,8 @@ "Personal" => "個人", "Users" => "使用者", "Apps" => "應用程式", -"Admin" => "管理", -"Help" => "說明", +"Admin" => "管理者", +"Help" => "幫助", "Access forbidden" => "存取被拒", "Cloud not found" => "未發現雲端", "Edit categories" => "編輯分類", diff --git a/core/lostpassword/templates/lostpassword.php b/core/lostpassword/templates/lostpassword.php index c19c6893f1..dc9f0bc8ad 100644 --- a/core/lostpassword/templates/lostpassword.php +++ b/core/lostpassword/templates/lostpassword.php @@ -1,24 +1,17 @@ - -

- t('The link to reset your password has been sent to your email.
If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator .')); - ?> -

- -
-
+ +
+ t('You will receive a link to reset your password via Email.'); ?> + + t('Reset email send.'); ?> + -

- t('Request failed!
Did you make sure your email/username was right?')); ?> -

+ t('Request failed!'); ?> - t('You will receive a link to reset your password via Email.')); ?>

+ - -

- -
- - + + +
+ diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 4dc4a2c759..cfe0a55194 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -32,9 +32,6 @@
\ No newline at end of file diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c21b9d69f6..0633a81a05 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -69,43 +69,52 @@ class Hooks { $session = new Session( $view ); $session->setPrivateKey( $privateKey, $params['uid'] ); - - //FIXME: disabled because it gets called each time a user do an operation on iPhone - //FIXME: we need a better place doing this and maybe only one time or by user - /*$view1 = new \OC_FilesystemView( '/' . $params['uid'] ); - // Set legacy encryption key if it exists, to support - // depreciated encryption system - if ( - $view1->file_exists( 'encryption.key' ) - && $encLegacyKey = $view1->file_get_contents( 'encryption.key' ) - ) { + // Check if first-run file migration has already been performed + $migrationCompleted = $util->getMigrationStatus(); - $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); + // If migration not yet done + if ( ! $migrationCompleted ) { + + $view1 = new \OC_FilesystemView( '/' . $params['uid'] ); - $session->setLegacyKey( $plainLegacyKey ); + // Set legacy encryption key if it exists, to support + // depreciated encryption system + if ( + $view1->file_exists( 'encryption.key' ) + && $encLegacyKey = $view1->file_get_contents( 'encryption.key' ) + ) { + + $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); + + $session->setLegacyKey( $plainLegacyKey ); + + } + + \OC_FileProxy::$enabled = false; + + $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); + + \OC_FileProxy::$enabled = false; + + // Encrypt existing user files: + // This serves to upgrade old versions of the encryption + // app (see appinfo/spec.txt) + if ( + $util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) + ) { + + \OC_Log::write( + 'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" completed' + , \OC_Log::INFO + ); + + } + + // Register successful migration in DB + $util->setMigrationStatus( 1 ); } - - \OC_FileProxy::$enabled = false; - - $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); - - \OC_FileProxy::$enabled = false;*/ - - // Encrypt existing user files: - // This serves to upgrade old versions of the encryption - // app (see appinfo/spec.txt) - /*if ( - $util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) - ) { - - \OC_Log::write( - 'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" started at login' - , \OC_Log::INFO - ); - - }*/ return true; diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index 48b5598d52..8e9c8c2230 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -19,14 +19,24 @@ $(document).ready(function(){ function() { var recoveryStatus = $( this ).val(); + var recoveryPassword = $( '#recoveryPassword' ).val(); - $.post( - OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) - , { adminEnableRecovery: recoveryStatus, recoveryPassword: 'password' } - , function( data ) { - alert( data ); - } - ); + if ( '' == recoveryPassword ) { + + // FIXME: add proper OC notification + alert( 'You must set a recovery account password first' ); + + } else { + + $.post( + OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) + , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword } + , function( data ) { + alert( data ); + } + ); + + } } ); diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 0e6bb96605..22453131db 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -57,23 +57,23 @@ class Session { // our app.php is being executed 18 times per page load // , causing 18 new keypairs and huge performance hit. - $keypair = Crypt::createKeypair(); - - \OC_FileProxy::$enabled = false; - - // Save public key - - if (!$view->is_dir('/public-keys')) { - $view->mkdir('/public-keys'); - } - - $this->view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); - - // Encrypt private key empthy passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); - - // Save private key - $this->view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); +// $keypair = Crypt::createKeypair(); +// +// \OC_FileProxy::$enabled = false; +// +// // Save public key +// +// if (!$view->is_dir('/public-keys')) { +// $view->mkdir('/public-keys'); +// } +// +// $this->view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); +// +// // Encrypt private key empthy passphrase +// $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); +// +// // Save private key +// $this->view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f442a89f6f..91502af4a3 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -859,8 +859,6 @@ class Util { // Make sure users are capable of sharing $filteredUids = $this->filterShareReadyUsers( $users ); -// trigger_error( print_r($filteredUids, 1) ); - if ( ! empty( $filteredUids['unready'] ) ) { // Notify user of unready userDir @@ -913,10 +911,21 @@ class Util { public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { // Check if key recovery is enabled - $recoveryEnabled = $this->recoveryEnabledForUser(); + if ( + \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) + && $this->recoveryEnabledForUser() + ) { + + $recoveryEnabled = true; + + } else { + + $recoveryEnabled = false; + + } // Make sure that a share key is generated for the owner too - list($owner, $ownerPath) = $this->getUidAndFilename($filePath); + list( $owner, $ownerPath ) = $this->getUidAndFilename( $filePath ); if ( $sharingEnabled ) { @@ -928,18 +937,21 @@ class Util { // If recovery is enabled, add the // Admin UID to list of users to share to if ( $recoveryEnabled ) { - - // FIXME: Create a separate admin user purely for recovery, and create method in util for fetching this id from DB? - $adminUid = 'recoveryAdmin'; - - $userIds[] = $adminUid; + + // Find recoveryAdmin user ID + $recoveryAdminUid = \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminUid' ); + + // Add recoveryAdmin to list of users sharing + $userIds[] = $recoveryAdminUid; } - // add current user if given - if($currentUserId != false) { - $userIds[] = $currentUserId; - } + // add current user if given + if ( $currentUserId != false ) { + + $userIds[] = $currentUserId; + + } // Remove duplicate UIDs $uniqueUserIds = array_unique ( $userIds ); @@ -947,6 +959,77 @@ class Util { return $uniqueUserIds; } + + /** + * @brief Set file migration status for user + */ + public function setMigrationStatus( $status ) { + + $sql = 'UPDATE + *PREFIX*encryption + SET + migrationStatus = ? + WHERE + uid = ?'; + + $args = array( $status, $this->userId ); + + $query = \OCP\DB::prepare( $sql ); + + if ( $query->execute( $args ) ) { + + return true; + + } else { + + return false; + + } + + } + + /** + * @brief Check whether pwd recovery is enabled for a given user + * @return 1 = yes, 0 = no, false = no record + * @note If records are not being returned, check for a hidden space + * at the start of the uid in db + */ + public function getMigrationStatus() { + + $sql = 'SELECT + migrationStatus + FROM + `*PREFIX*encryption` + WHERE + uid = ?'; + + $args = array( $this->userId ); + + $query = \OCP\DB::prepare( $sql ); + + $result = $query->execute( $args ); + + $migrationStatus = array(); + + while( $row = $result->fetchRow() ) { + + $migrationStatus[] = $row['migrationStatus']; + + } + + // If no record is found + if ( empty( $migrationStatus ) ) { + + return false; + + // If a record is found + } else { + + return $migrationStatus[0]; + + } + + } /** * @brief get uid of the owners of the file and the path to the file diff --git a/apps/files_encryption/settings-admin.php b/apps/files_encryption/settings-admin.php index b09515f0c3..ae9a85643e 100644 --- a/apps/files_encryption/settings-admin.php +++ b/apps/files_encryption/settings-admin.php @@ -21,6 +21,7 @@ $recoveryAdminUid = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminUi $tmpl->assign( 'blacklist', $blackList ); $tmpl->assign( 'encryption_mode', \OC_Appconfig::getValue( 'files_encryption', 'mode', 'none' ) ); $tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); +$tmpl->assign( 'recoveryAdminUid', $recoveryAdminUid ); \OCP\Util::addscript( 'files_encryption', 'settings-admin' ); \OCP\Util::addscript( 'core', 'multiselect' ); diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index f7ebc42512..c6d9d80f0b 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -25,11 +25,13 @@ $user = \OCP\USER::getUser(); $view = new \OC_FilesystemView( '/' ); $util = new \OCA\Encryption\Util( $view, $user ); +$recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); $recoveryEnabledForUser = $util->recoveryEnabledForUser(); \OCP\Util::addscript( 'files_encryption', 'settings-personal' ); -$tmpl->assign( 'recoveryEnabled', $recoveryEnabledForUser ); +$tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); +$tmpl->assign( 'recoveryEnabledForUser', $recoveryEnabledForUser ); $tmpl->assign( 'blacklist', $blackList ); return $tmpl->fetchPage(); diff --git a/apps/files_encryption/templates/settings-admin.php b/apps/files_encryption/templates/settings-admin.php index 6499d0c8e8..863f1dfa9a 100644 --- a/apps/files_encryption/templates/settings-admin.php +++ b/apps/files_encryption/templates/settings-admin.php @@ -18,8 +18,17 @@

- t( "Enable encryption passwords recovery account (allow sharing to recovery account):" )); ?> + + t( "Enable encryption passwords recovery account (allow sharing to recovery account):" )); ?>
+
+ t( "To perform a recovery log in using the 'recoveryAdmin' account and the specified password" )); ?> +
+ + + +
+ -

- t( "Enable password recovery by sharing all files with administrator:" )); ?> -
- /> - t( "Enabled" )); ?> -
- - /> - t( "Disabled" )); ?> -

+ +

+ t( "Enable password recovery by sharing all files with administrator:" )); ?> +
+ /> + t( "Enabled" )); ?> +
+ + /> + t( "Disabled" )); ?> +

+ From ee083c20e68ce3101c5dd1b69f94eabcc54c89d6 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 5 May 2013 23:41:04 +0200 Subject: [PATCH 149/575] improved pre_unshare and post_unshare hook --- lib/public/share.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/public/share.php b/lib/public/share.php index e0aedf3569..fee906d187 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -514,6 +514,7 @@ class Share { 'fileSource' => $item['file_source'], 'shareType' => $shareType, 'shareWith' => $shareWith, + 'itemParent' => $item['parent'], )); self::delete($item['id']); \OC_Hook::emit('OCP\Share', 'post_unshare', array( @@ -521,6 +522,7 @@ class Share { 'itemSource' => $itemSource, 'shareType' => $shareType, 'shareWith' => $shareWith, + 'itemParent' => $item['parent'], )); return true; } From 5610429a02352df36e2e64f25e0a8af474915268 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 5 May 2013 23:41:42 +0200 Subject: [PATCH 150/575] handling for re-share and re-unshare should work now --- apps/files_encryption/hooks/hooks.php | 132 +++++++++++++++----------- apps/files_encryption/lib/util.php | 48 +++++++++- 2 files changed, 120 insertions(+), 60 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 0633a81a05..a72d339277 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -23,10 +23,11 @@ namespace OCA\Encryption; +use OC\Files\Filesystem; + /** * Class for hook specific logic */ - class Hooks { // TODO: use passphrase for encrypting private key that is separate to @@ -253,10 +254,9 @@ class Hooks { } else { // prefix path with Shared - $path = '/Shared'.$parent['file_target']; + $path = '/Shared'.$parent['file_target'].$params['fileTarget']; } } - } $sharingEnabled = \OCP\Share::isEnabled(); @@ -282,10 +282,8 @@ class Hooks { // If no attempts to set keyfiles failed if (empty($failed)) { - return true; } else { - return false; } } @@ -294,73 +292,91 @@ class Hooks { /** * @brief */ - public static function postUnshare( $params ) { - - // NOTE: $params has keys: - // [itemType] => file - // [itemSource] => 13 - // [shareType] => 0 - // [shareWith] => test1 - - if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { - - $view = new \OC_FilesystemView( '/' ); - $session = new Session($view); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $path = $util->fileIdToPath( $params['itemSource'] ); + public static function postUnshare($params) + { - // for group shares get a list of the group members - if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { - $userIds = \OC_Group::usersInGroup($params['shareWith']); - } else { - $userIds = array($params['shareWith']); - } + // NOTE: $params has keys: + // [itemType] => file + // [itemSource] => 13 + // [shareType] => 0 + // [shareWith] => test1 + // [itemParent] => - // if we unshare a folder we need a list of all (sub-)files - if ($params['itemType'] === 'folder') { - $allFiles = $util->getAllFiles($path); - } else { - $allFiles = array($path); - } + if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { + $view = new \OC_FilesystemView('/'); + $userId = \OCP\User::getUser(); + $util = new Util($view, $userId); + $path = $util->fileIdToPath($params['itemSource']); - foreach ( $allFiles as $path ) { + // check if this is a re-share + if ($params['itemParent']) { - // check if the user still has access to the file, otherwise delete share key - $sharingUsers = $util->getSharingUsersArray(true, $path); + // get the parent from current share + $parent = $util->getShareParent($params['itemParent']); + + // get target path + $targetPath = $util->fileIdToPath($params['itemSource']); + $targetPathSplit = array_reverse(explode('/', $targetPath)); + + // init values + $path = ''; + $sharedPart = ltrim($parent['file_target'], '/'); + + // rebuild path + foreach ($targetPathSplit as $pathPart) { + if ($pathPart !== $sharedPart) { + $path = '/' . $pathPart . $path; + } else { + break; + } + } + + // prefix path with Shared + $path = '/Shared' . $parent['file_target'] . $path; + } + + // for group shares get a list of the group members + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { + $userIds = \OC_Group::usersInGroup($params['shareWith']); + } else { + $userIds = array($params['shareWith']); + } + + // if we unshare a folder we need a list of all (sub-)files + if ($params['itemType'] === 'folder') { + $allFiles = $util->getAllFiles($path); + } else { + $allFiles = array($path); + } + + foreach ($allFiles as $path) { + + // check if the user still has access to the file, otherwise delete share key + $sharingUsers = $util->getSharingUsersArray(true, $path); // Unshare every user who no longer has access to the file - //TODO: does not work properly atm - $delUsers = array_diff($userIds, $sharingUsers); - if ( ! Keymanager::delShareKey( $view, $delUsers, $path ) ) { - - $failed[] = $path; - - } - - } - - // If no attempts to set keyfiles failed - if ( empty( $failed ) ) { - - return true; - - } else { - - return false; - - } + $delUsers = array_diff($userIds, $sharingUsers); + if (!Keymanager::delShareKey($view, $delUsers, $path)) { + $failed[] = $path; + } - } + } - } + // If no attempts to set keyfiles failed + if (empty($failed)) { + return true; + } else { + return false; + } + } + } /** * @brief */ public static function postUnshareAll( $params ) { - + // NOTE: It appears that this is never called for files, so // we may not need to implement it diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 91502af4a3..2e8e2af683 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1102,10 +1102,26 @@ class Util { } foreach ($content as $c) { + $sharedPart = $path_split[sizeof($path_split)-1]; + $targetPathSplit = array_reverse(explode('/', $c['path'])); + + $path = ''; + + // rebuild path + foreach ($targetPathSplit as $pathPart) { + if($pathPart !== $sharedPart) { + $path = '/'.$pathPart.$path; + } else { + break; + } + } + + $path = $dir.$path; + if ($c['type'] === "dir" ) { - $result = array_merge($result, $this->getAllFiles($shared.substr($c['path'],5))); + $result = array_merge($result, $this->getAllFiles($path)); } else { - $result[] = $shared.substr($c['path'], 5); + $result[] = $path; } } return $result; @@ -1130,4 +1146,32 @@ class Util { } + /** + * @brief get owner of the shared files. + * @param int $Id of a share + * @return owner + */ + public function getOwnerFromSharedFile($id) { + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $source = $query->execute(array($id))->fetchRow(); + + if (isset($source['parent'])) { + $parent = $source['parent']; + while (isset($parent)) { + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $item = $query->execute(array($parent))->fetchRow(); + if (isset($item['parent'])) { + $parent = $item['parent']; + } else { + $fileOwner = $item['uid_owner']; + break; + } + } + } else { + $fileOwner = $source['uid_owner']; + } + + return $fileOwner; + } + } From d3df80a078c5c6f4cface5eb53b980fd13e272ae Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 6 May 2013 21:14:59 +0200 Subject: [PATCH 151/575] merge my fix from master b4649701423c2e75373a5ecf7640c6e2b781a970 --- lib/files/cache/cache.php | 2 +- lib/files/cache/scanner.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 4e32ff2ba8..d0c871bead 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -441,7 +441,7 @@ class Cache { $this->calculateFolderSize($path); if ($path !== '') { $parent = dirname($path); - if ($parent === '.') { + if ($parent === '.' or $parent === '/') { $parent = ''; } $this->correctFolderSize($parent); diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index f019d4fc60..5241acec1e 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -68,7 +68,7 @@ class Scanner { if ($data) { if ($file) { $parent = dirname($file); - if ($parent === '.') { + if ($parent === '.' or $parent === '/') { $parent = ''; } if (!$this->cache->inCache($parent)) { From fe6d12ddec46e5d68486d5db22a8508a2ab2b2ea Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 6 May 2013 21:15:25 +0200 Subject: [PATCH 152/575] fix file info put on stream --- apps/files_encryption/lib/stream.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index a51f2c56d9..eb1cb45871 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -512,7 +512,19 @@ class Stream { // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - \OC\Files\Filesystem::putFileInfo( $this->relPath, array( 'encrypted' => 1, 'size' => $this->size, 'unencrypted_size' => $this->unencryptedSize ), '' ); + // get file info + $fileInfo = \OC\Files\Filesystem::getFileInfo($this->rawPath); + if(!is_array($fileInfo)) { + $fileInfo = array(); + } + + // set encryption data + $fileInfo['encrypted'] = 1; + $fileInfo['size'] = $this->size; + $fileInfo['unencrypted_size'] = $this->unencryptedSize; + + // set fileinfo + \OC\Files\Filesystem::putFileInfo( $this->rawPath, $fileInfo); } return fclose( $this->handle ); From 8fcef411438cc8e07fe1eaebafd9ea23c9812745 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 6 May 2013 21:16:42 +0200 Subject: [PATCH 153/575] added test for share --- apps/files_encryption/tests/share.php | 115 ++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100755 apps/files_encryption/tests/share.php diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php new file mode 100755 index 0000000000..362231afaa --- /dev/null +++ b/apps/files_encryption/tests/share.php @@ -0,0 +1,115 @@ +, and + * Robin Appelman + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +//require_once "PHPUnit/Framework/TestCase.php"; +require_once realpath( dirname(__FILE__).'/../../../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); +require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); +require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); +require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); +require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); +require_once realpath( dirname(__FILE__).'/../lib/util.php' ); +require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); + +use OCA\Encryption; + +// This has to go here because otherwise session errors arise, and the private +// encryption key needs to be saved in the session + +/** + * @note It would be better to use Mockery here for mocking out the session + * handling process, and isolate calls to session class and data from the unit + * tests relating to them (stream etc.). However getting mockery to work and + * overload classes whilst also using the OC autoloader is difficult due to + * load order Pear errors. + */ + +class Test_Share extends \PHPUnit_Framework_TestCase { + + function setUp() { + // reset backend + \OC_User::useBackend('database'); + + $this->dataShort = 'hats'; + $this->view = new \OC_FilesystemView( '/' ); + + $userHome = \OC_User::getHome('admin'); + $this->dataDir = str_replace('/admin', '', $userHome); + + OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + } + + function tearDown() { + + } + + function testShareFile() { + // create user1 + $this->loginHelper('user1', true); + + // login as admin + $this->loginHelper('admin'); + + $filename = 'tmp-'.time().'.test'; + + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file infos + $fileInfo = $this->view->getFileInfo('/admin/files/'.$filename); + + // check if we have fileInfos + $this->assertTrue(is_array($fileInfo)); + + // check if we have fileInfos + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_READ); + + $this->loginHelper('admin', false); + + // check if share key exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); + + // login as user1 + $this->loginHelper('user1'); + + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $filename); + + // check if data is the same + $this->assertEquals($this->dataShort, $retreivedCryptedFile); + } + + function loginHelper($user, $create=false) { + if($create) { + \OC_User::createUser($user, $user); + } + + \OC_User::setUserId($user); + + \OC\Files\Filesystem::mount( '\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), '/'.$user.'/files/Shared/' ); + \OC\Files\Filesystem::mount( '\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), 'Shared/' ); + + \OC\Files\Filesystem::init($user, '/'.$user.'/files'); + + $params['uid'] = $user; + $params['password'] = $user; + OCA\Encryption\Hooks::login($params); + } +} From a9649713d31f9524355680515ed9fe080eba6d63 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 13:42:08 +0200 Subject: [PATCH 154/575] fix empty path --- apps/files_encryption/lib/proxy.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 50f30594b4..820b7d8b67 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -433,6 +433,11 @@ class Proxy extends \OC_FileProxy { $path_split = explode('/', $path); $path_f = implode('/', array_slice($path_split, 3)); + // if path is empty we cannot resolve anything + if(empty($path_f)) { + return $size; + } + // get file info from database/cache $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); From 8b545538722179ea7e68c4765fa9722adc77d546 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 13:42:49 +0200 Subject: [PATCH 155/575] fix for wrong file infos --- apps/files_encryption/lib/stream.php | 4 ++-- apps/files_encryption/lib/util.php | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index eb1cb45871..c2b13b00b2 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -513,7 +513,7 @@ class Stream { \OC_FileProxy::$enabled = $proxyStatus; // get file info - $fileInfo = \OC\Files\Filesystem::getFileInfo($this->rawPath); + $fileInfo = $view->getFileInfo($this->rawPath); if(!is_array($fileInfo)) { $fileInfo = array(); } @@ -524,7 +524,7 @@ class Stream { $fileInfo['unencrypted_size'] = $this->unencryptedSize; // set fileinfo - \OC\Files\Filesystem::putFileInfo( $this->rawPath, $fileInfo); + $view->putFileInfo( $this->rawPath, $fileInfo); } return fclose( $this->handle ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2e8e2af683..5ab5ea6425 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1040,7 +1040,8 @@ class Util { */ public function getUidAndFilename( $path ) { - $fileOwnerUid = \OC\Files\Filesystem::getOwner( $path ); + $view = new \OC\Files\View($this->userFilesDir); + $fileOwnerUid = $view->getOwner( $path ); // Check that UID is valid if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { @@ -1060,7 +1061,7 @@ class Util { } else { - $info = \OC\Files\Filesystem::getFileInfo( $path ); + $info = $view->getFileInfo( $path ); $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); // Fetch real file path from DB @@ -1069,7 +1070,7 @@ class Util { } // Make path relative for use by $view - $relpath = $fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename; + $relpath = \OC\Files\Filesystem::normalizePath($fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename); // Check that the filename we're using is working if ( $this->view->file_exists( $relpath ) ) { From b535964006706fc2df1b3e8fb733a62a3351c585 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 13:43:34 +0200 Subject: [PATCH 156/575] test for share is now able to run with autotest.sh --- apps/files_encryption/tests/share.php | 30 ++++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 362231afaa..b6f5ce2c6b 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -30,10 +30,11 @@ use OCA\Encryption; * load order Pear errors. */ -class Test_Share extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend + \OC_User::clearBackends(); \OC_User::useBackend('database'); $this->dataShort = 'hats'; @@ -43,7 +44,18 @@ class Test_Share extends \PHPUnit_Framework_TestCase { $this->dataDir = str_replace('/admin', '', $userHome); OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); - } + + // Sharing-related hooks + OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); + OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); + OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); + + OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + + OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + OC::registerShareHooks(); + } function tearDown() { @@ -56,7 +68,7 @@ class Test_Share extends \PHPUnit_Framework_TestCase { // login as admin $this->loginHelper('admin'); - $filename = 'tmp-'.time().'.test'; + $filename = 'share-tmp-'.time().'.test'; $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); @@ -81,7 +93,7 @@ class Test_Share extends \PHPUnit_Framework_TestCase { // share the file \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_READ); - $this->loginHelper('admin', false); + $this->loginHelper('admin'); // check if share key exists $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); @@ -89,8 +101,9 @@ class Test_Share extends \PHPUnit_Framework_TestCase { // login as user1 $this->loginHelper('user1'); + $view = new \OC\Files\View('/user1/files/'); // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $filename); + $retreivedCryptedFile = $view->file_get_contents('Shared/' . $filename); // check if data is the same $this->assertEquals($this->dataShort, $retreivedCryptedFile); @@ -101,13 +114,10 @@ class Test_Share extends \PHPUnit_Framework_TestCase { \OC_User::createUser($user, $user); } + \OC_User::setUserId(''); + \OC_Util::setupFS($user); \OC_User::setUserId($user); - \OC\Files\Filesystem::mount( '\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), '/'.$user.'/files/Shared/' ); - \OC\Files\Filesystem::mount( '\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), 'Shared/' ); - - \OC\Files\Filesystem::init($user, '/'.$user.'/files'); - $params['uid'] = $user; $params['password'] = $user; OCA\Encryption\Hooks::login($params); From 4b53f72d0d749cceec7a9fa7be5d8bc6bab722c6 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 7 May 2013 16:17:38 +0200 Subject: [PATCH 157/575] Added facility to manually encrypt all files from personal settings Added success/fail feedback to personal settings functions Improved look/layout of personal settings page Fixed misplaced plain text in ajax scripts --- apps/files_encryption/ajax/adminrecovery.php | 5 +-- apps/files_encryption/ajax/encryptall.php | 40 +++++++++++++++++++ apps/files_encryption/ajax/userrecovery.php | 22 +++++----- .../css/settings-personal.css | 10 +++++ apps/files_encryption/js/settings-personal.js | 39 +++++++++++++++++- apps/files_encryption/settings-personal.php | 3 ++ .../templates/settings-personal.php | 32 +++++++++++---- 7 files changed, 127 insertions(+), 24 deletions(-) create mode 100644 apps/files_encryption/ajax/encryptall.php create mode 100644 apps/files_encryption/css/settings-personal.css diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index eeeaf4c6ed..c3c19943c0 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -1,5 +1,3 @@ -setValue( $app, $key, $value ) - @@ -91,4 +89,5 @@ if ( } -($return) ? OC_JSON::success() : OC_JSON::error(); \ No newline at end of file +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/ajax/encryptall.php b/apps/files_encryption/ajax/encryptall.php new file mode 100644 index 0000000000..ce613ca443 --- /dev/null +++ b/apps/files_encryption/ajax/encryptall.php @@ -0,0 +1,40 @@ + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to handle manual trigger of \OCA\Encryption\Util{}->encryptAll() + */ + +use OCA\Encryption; + +\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); + +$return = false; + +if ( + isset( $_POST['encryptAll'] ) + && ! empty( $_POST['userPassword'] ) +) { + + $view = new \OC_FilesystemView( '' ); + $userId = \OCP\User::getUser(); + $util = new \OCA\Encryption\Util( $view, $userId ); + $session = new \OCA\Encryption\Session( $view ); + $publicKey = \OCA\Encryption\Keymanager::getPublicKey( $view, $userId ); + $path = '/' . $userId . '/' . 'files'; + + $util->encryptAll( $publicKey, $path, $session->getLegacyKey(), $_POST['userPassword'] ); + + $return = true; + +} else { + + $return = false; + +} + +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index f72be3181e..85a799011d 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -1,5 +1,3 @@ -setValue( $app, $key, $value ) - @@ -13,6 +11,7 @@ use OCA\Encryption; \OCP\JSON::checkLoggedIn(); \OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); if ( isset( $_POST['userEnableRecovery'] ) @@ -24,16 +23,13 @@ if ( $util = new \OCA\Encryption\Util( $view, $userId ); // Save recovery preference to DB - $result = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); + $return = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); - if ( $result ) { +} else { + + $return = false; - \OCP\JSON::success(); - - } else { - - \OCP\JSON::error(); - - } - -} \ No newline at end of file +} + +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/css/settings-personal.css b/apps/files_encryption/css/settings-personal.css new file mode 100644 index 0000000000..4ee0acc976 --- /dev/null +++ b/apps/files_encryption/css/settings-personal.css @@ -0,0 +1,10 @@ +/* Copyright (c) 2013, Sam Tuke, + This file is licensed under the Affero General Public License version 3 or later. + See the COPYING-README file. */ + +#encryptAllError +, #encryptAllSuccess +, #recoveryEnabledError +, #recoveryEnabledSuccess { + display: none; +} \ No newline at end of file diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js index e4a1b7448f..3b9b00dc79 100644 --- a/apps/files_encryption/js/settings-personal.js +++ b/apps/files_encryption/js/settings-personal.js @@ -9,15 +9,52 @@ $(document).ready(function(){ $( 'input:radio[name="userEnableRecovery"]' ).change( function() { + // Hide feedback messages in case they're already visible + $('#recoveryEnabledSuccess').hide(); + $('#recoveryEnabledError').hide(); + var recoveryStatus = $( this ).val(); $.post( OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' ) , { userEnableRecovery: recoveryStatus } , function( data ) { - alert( data ); + if ( data.status == "success" ) { + $('#recoveryEnabledSuccess').show(); + } else { + $('#recoveryEnabledError').show(); + } } ); + // Ensure page is not reloaded on form submit + return false; } ); + + $("#encryptAll").click( + function(){ + + // Hide feedback messages in case they're already visible + $('#encryptAllSuccess').hide(); + $('#encryptAllError').hide(); + + var userPassword = $( '#userPassword' ).val(); + var encryptAll = $( '#encryptAll' ).val(); + + $.post( + OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' ) + , { encryptAll: encryptAll, userPassword: userPassword } + , function( data ) { + if ( data.status == "success" ) { + $('#encryptAllSuccess').show(); + } else { + $('#encryptAllError').show(); + } + } + ); + // Ensure page is not reloaded on form submit + return false; + } + + ); }) \ No newline at end of file diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index c6d9d80f0b..46efb61b02 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -6,6 +6,9 @@ * See the COPYING-README file. */ +// Add CSS stylesheet +\OC_Util::addStyle( 'files_encryption', 'settings-personal' ); + $tmpl = new OCP\Template( 'files_encryption', 'settings-personal'); $blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index c81f361ced..00f567ecb2 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -1,15 +1,17 @@
- t( 'Encryption' )); ?> + t( 'Encryption' ) ); ?>

- t( 'File encryption is enabled.' )); ?> +

- t( 'The following file types will not be encrypted:' )); ?> + File types +
+ t( 'The following file types will not be encrypted:' ) ); ?>

    @@ -20,17 +22,19 @@
- +

- t( "Enable password recovery by sharing all files with administrator:" )); ?> + +
+ t( "Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" ) ); ?>
/> - t( "Enabled" )); ?> + t( "Enabled" ) ); ?>
/> - t( "Disabled" )); ?> + t( "Disabled" ) ); ?> +

t( 'File recovery settings updated' ) ); ?>
+
t( 'Could not update file recovery' ) ); ?>

+
+

+ +
+ t( "Use this if you suspect that you still have files which are unencrypted, or encrypted using ownCloud 4 or older." ) ); ?> +
+ + + +

t( 'Scan complete' ) );?>
+
t( 'Unable to scan and encrypt files' ) );?>
+

From b8a421a86db09c7ed106c2f9aee15aa337761e4a Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 7 May 2013 16:34:09 +0200 Subject: [PATCH 158/575] New hook system --- lib/hooks/basicemitter.php | 89 ++++++++++ lib/hooks/emitter.php | 32 ++++ lib/hooks/legacyemitter.php | 16 ++ tests/lib/hooks/basicemitter.php | 261 ++++++++++++++++++++++++++++++ tests/lib/hooks/legacyemitter.php | 55 +++++++ 5 files changed, 453 insertions(+) create mode 100644 lib/hooks/basicemitter.php create mode 100644 lib/hooks/emitter.php create mode 100644 lib/hooks/legacyemitter.php create mode 100644 tests/lib/hooks/basicemitter.php create mode 100644 tests/lib/hooks/legacyemitter.php diff --git a/lib/hooks/basicemitter.php b/lib/hooks/basicemitter.php new file mode 100644 index 0000000000..bd24539a40 --- /dev/null +++ b/lib/hooks/basicemitter.php @@ -0,0 +1,89 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Hooks; + +abstract class BasicEmitter implements Emitter { + + /** + * @var (callable[])[] $listeners + */ + private $listeners = array(); + + /** + * @param string $scope + * @param string $method + * @param callable $callback + */ + public function listen($scope, $method, $callback) { + $eventName = $scope . '::' . $method; + if (!isset($this->listeners[$eventName])) { + $this->listeners[$eventName] = array(); + } + if (array_search($callback, $this->listeners[$eventName]) === false) { + $this->listeners[$eventName][] = $callback; + } + } + + /** + * @param string $scope optional + * @param string $method optional + * @param callable $callback optional + */ + public function remoteListener($scope = null, $method = null, $callback = null) { + $names = array(); + $allNames = array_keys($this->listeners); + if ($scope and $method) { + $name = $scope . '::' . $method; + if (isset($this->listeners[$name])) { + $names[] = $name; + } + } elseif ($scope) { + foreach ($allNames as $name) { + $parts = explode('::', $name, 2); + if ($parts[0] == $scope) { + $names[] = $name; + } + } + } elseif ($method) { + foreach ($allNames as $name) { + $parts = explode('::', $name, 2); + if ($parts[1] == $method) { + $names[] = $name; + } + } + } else { + $names = $allNames; + } + + foreach ($names as $name) { + if ($callback) { + $index = array_search($callback, $this->listeners[$name]); + if ($index !== false) { + unset($this->listeners[$name][$index]); + } + } else { + $this->listeners[$name] = array(); + } + } + } + + /** + * @param string $scope + * @param string $method + * @param array $arguments optional + */ + protected function emit($scope, $method, $arguments = array()) { + $eventName = $scope . '::' . $method; + if (isset($this->listeners[$eventName])) { + foreach ($this->listeners[$eventName] as $callback) { + call_user_func_array($callback, $arguments); + } + } + } +} diff --git a/lib/hooks/emitter.php b/lib/hooks/emitter.php new file mode 100644 index 0000000000..4219b6f354 --- /dev/null +++ b/lib/hooks/emitter.php @@ -0,0 +1,32 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Hooks; + +/** + * Class Emitter + * + * interface for all classes that are able to emit events + * + * @package OC\Hooks + */ +interface Emitter { + /** + * @param string $scope + * @param string $method + * @param callable $callback + */ + public function listen($scope, $method, $callback); + + /** + * @param string $scope optional + * @param string $method optional + * @param callable $callback optional + */ + public function remoteListener($scope = null, $method = null, $callback = null); +} diff --git a/lib/hooks/legacyemitter.php b/lib/hooks/legacyemitter.php new file mode 100644 index 0000000000..a2d16ace9a --- /dev/null +++ b/lib/hooks/legacyemitter.php @@ -0,0 +1,16 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Hooks; + +abstract class LegacyEmitter extends BasicEmitter { + protected function emit($scope, $method, $arguments = array()) { + \OC_Hook::emit($scope, $method, $arguments); + parent::emit($scope, $method, $arguments); + } +} diff --git a/tests/lib/hooks/basicemitter.php b/tests/lib/hooks/basicemitter.php new file mode 100644 index 0000000000..53de996c5c --- /dev/null +++ b/tests/lib/hooks/basicemitter.php @@ -0,0 +1,261 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Hooks; + +/** + * Class DummyEmitter + * + * class to make BasicEmitter::emit publicly available + * + * @package Test\Hooks + */ +class DummyEmitter extends \OC\Hooks\BasicEmitter { + public function emitEvent($scope, $method, $arguments = array()) { + $this->emit($scope, $method, $arguments); + } +} + +/** + * Class EmittedException + * + * a dummy exception so we can check if an event is emitted + * + * @package Test\Hooks + */ +class EmittedException extends \Exception { +} + +class BasicEmitter extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Hooks\Emitter $emitter + */ + protected $emitter; + + public function setUp() { + $this->emitter = new DummyEmitter(); + } + + public function nonStaticCallBack() { + throw new EmittedException; + } + + public static function staticCallBack() { + throw new EmittedException; + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testAnonymousFunction() { + $this->emitter->listen('Test', 'test', function () { + throw new EmittedException; + }); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testStaticCallback() { + $this->emitter->listen('Test', 'test', array('\Test\Hooks\BasicEmitter', 'staticCallBack')); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testNonStaticCallback() { + $this->emitter->listen('Test', 'test', array($this, 'nonStaticCallBack')); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testOnlyCallOnce() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(1, $count, 'Listener called an invalid number of times (' . $count . ') expected 1'); + } + + public function testDifferentMethods() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + public function testDifferentScopes() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Bar', 'test'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + public function testDifferentCallbacks() { + $count = 0; + $listener1 = function () use (&$count) { + $count++; + }; + $listener2 = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testArguments() { + $this->emitter->listen('Test', 'test', function ($foo, $bar) { + if ($foo == 'foo' and $bar == 'bar') { + throw new EmittedException; + } + }); + $this->emitter->emitEvent('Test', 'test', array('foo', 'bar')); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testNamedArguments() { + $this->emitter->listen('Test', 'test', function ($foo, $bar) { + if ($foo == 'foo' and $bar == 'bar') { + throw new EmittedException; + } + }); + $this->emitter->emitEvent('Test', 'test', array('foo' => 'foo', 'bar' => 'bar')); + } + + public function testRemoveAllSpecified() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->remoteListener('Test', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testRemoveWildcardListener() { + $listener1 = function () { + throw new EmittedException; + }; + $listener2 = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->remoteListener('Test', 'test'); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testRemoveWildcardMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->remoteListener('Test', null, $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + } + + public function testRemoveWildcardScope() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->remoteListener(null, 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Bar', 'test'); + } + + public function testRemoveWildcardScopeAndMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->listen('Bar', 'foo', $listener); + $this->emitter->remoteListener(null, null, $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + $this->emitter->emitEvent('Bar', 'foo'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherCallback() { + $listener1 = function () { + throw new EmittedException; + }; + $listener2 = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->remoteListener('Test', 'test', $listener1); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->remoteListener('Test', 'foo', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherScope() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->remoteListener('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveNonExistingName() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->remoteListener('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } +} diff --git a/tests/lib/hooks/legacyemitter.php b/tests/lib/hooks/legacyemitter.php new file mode 100644 index 0000000000..a7bed879a7 --- /dev/null +++ b/tests/lib/hooks/legacyemitter.php @@ -0,0 +1,55 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Hooks; + +/** + * Class DummyLegacyEmitter + * + * class to make LegacyEmitter::emit publicly available + * + * @package Test\Hooks + */ +class DummyLegacyEmitter extends \OC\Hooks\LegacyEmitter { + public function emitEvent($scope, $method, $arguments = array()) { + $this->emit($scope, $method, $arguments); + } +} + +class LegacyEmitter extends BasicEmitter { + + //we can't use exceptions here since OC_Hooks catches all exceptions + private static $emitted = false; + + public function setUp() { + $this->emitter = new DummyLegacyEmitter(); + self::$emitted = false; + \OC_Hook::clear('Test','test'); + } + + public static function staticLegacyCallBack() { + self::$emitted = true; + } + + public static function staticLegacyArgumentsCallBack($arguments) { + if ($arguments['foo'] == 'foo' and $arguments['bar'] == 'bar') + self::$emitted = true; + } + + public function testLegacyHook() { + \OC_Hook::connect('Test', 'test', '\Test\Hooks\LegacyEmitter', 'staticLegacyCallBack'); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(true, self::$emitted); + } + + public function testLegacyArguments() { + \OC_Hook::connect('Test', 'test', '\Test\Hooks\LegacyEmitter', 'staticLegacyArgumentsCallBack'); + $this->emitter->emitEvent('Test', 'test', array('foo' => 'foo', 'bar' => 'bar')); + $this->assertEquals(true, self::$emitted); + } +} From 763c8f78ed8ab4178eeece3a1a4233c56e0da73e Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 7 May 2013 17:16:16 +0200 Subject: [PATCH 159/575] Made code formatting of new methods more consistent --- apps/files_encryption/hooks/hooks.php | 275 +++++++++++++++----------- 1 file changed, 157 insertions(+), 118 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index a72d339277..ddec839acd 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -183,7 +183,7 @@ class Hooks { /** * @brief */ - public static function postShared($params) { + public static function postShared( $params ) { // NOTE: $params has keys: // [itemType] => file @@ -202,89 +202,109 @@ class Hooks { // [id] => 10 // [token] => // TODO: Should other kinds of item be encrypted too? - if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { + + if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { - $view = new \OC_FilesystemView('/'); + $view = new \OC_FilesystemView( '/' ); $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util($view, $userId); - $path = $util->fileIdToPath($params['itemSource']); + $path = $util->fileIdToPath( $params['itemSource'] ); - //if parent is set, then this is a re-share action - if($params['parent']) { + //if parent is set, then this is a re-share action + if( $params['parent'] ) { - // get the parent from current share - $parent = $util->getShareParent($params['parent']); + // get the parent from current share + $parent = $util->getShareParent( $params['parent'] ); - // if parent is file the it is an 1:1 share - if($parent['item_type'] === 'file') { + // if parent is file the it is an 1:1 share + if($parent['item_type'] === 'file') { - // prefix path with Shared - $path = '/Shared'.$parent['file_target']; + // prefix path with Shared + $path = '/Shared'.$parent['file_target']; - } else { - // parent is folder but shared was a file! - // we try to rebuild the missing path - // some examples we face here - // user1 share folder1 with user2 folder1 has the following structure /folder1/subfolder1/subsubfolder1/somefile.txt - // user2 re-share subfolder2 with user3 - // user3 re-share somefile.txt user4 - // so our path should be /Shared/subfolder1/subsubfolder1/somefile.txt while user3 is sharing - if($params['itemType'] === 'file') { - // get target path - $targetPath = $util->fileIdToPath($params['fileSource']); - $targetPathSplit = array_reverse(explode('/', $targetPath)); + } else { + + // NOTE: parent is folder but shared was a file! + // we try to rebuild the missing path + // some examples we face here + // user1 share folder1 with user2 folder1 has + // the following structure + // /folder1/subfolder1/subsubfolder1/somefile.txt + // user2 re-share subfolder2 with user3 + // user3 re-share somefile.txt user4 + // so our path should be + // /Shared/subfolder1/subsubfolder1/somefile.txt + // while user3 is sharing + + if ( $params['itemType'] === 'file' ) { + // get target path + $targetPath = $util->fileIdToPath( $params['fileSource'] ); + $targetPathSplit = array_reverse( explode( '/', $targetPath ) ); - // init values - $path = ''; - $sharedPart = ltrim( $parent['file_target'], '/' ); + // init values + $path = ''; + $sharedPart = ltrim( $parent['file_target'], '/' ); - // rebuild path - foreach ($targetPathSplit as $pathPart) { - if($pathPart !== $sharedPart) { - $path = '/'.$pathPart.$path; - } else { - break; - } - } + // rebuild path + foreach ( $targetPathSplit as $pathPart ) { + + if( $pathPart !== $sharedPart ) { + + $path = '/' . $pathPart . $path; + + } else { + + break; + + } + + } - // prefix path with Shared - $path = '/Shared'.$parent['file_target'].$path; + // prefix path with Shared + $path = '/Shared'.$parent['file_target'].$path; - } else { + } else { - // prefix path with Shared - $path = '/Shared'.$parent['file_target'].$params['fileTarget']; - } - } - } - - $sharingEnabled = \OCP\Share::isEnabled(); - - // if a folder was shared, get a list if all (sub-)folders - if ($params['itemType'] === 'folder') { - $allFiles = $util->getAllFiles($path); - } else { - $allFiles = array($path); + // prefix path with Shared + $path = '/Shared'.$parent['file_target'].$params['fileTarget']; + } + } } - foreach ($allFiles as $path) { - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path); + $sharingEnabled = \OCP\Share::isEnabled(); + + // if a folder was shared, get a list if all (sub-)folders + if ( $params['itemType'] === 'folder' ) { + $allFiles = $util->getAllFiles($path); + } else { + + $allFiles = array( $path ); + + } + + foreach ( $allFiles as $path ) { + + $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path ); $failed = array(); // Attempt to set shareKey - if (!$util->setSharedFileKeyfiles($session, $usersSharing, $path)) { + if ( !$util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { $failed[] = $path; } } // If no attempts to set keyfiles failed - if (empty($failed)) { + if ( empty( $failed ) ) { + return true; + } else { + return false; + } } } @@ -292,85 +312,104 @@ class Hooks { /** * @brief */ - public static function postUnshare($params) - { + public static function postUnshare( $params ) { - // NOTE: $params has keys: - // [itemType] => file - // [itemSource] => 13 - // [shareType] => 0 - // [shareWith] => test1 - // [itemParent] => + // NOTE: $params has keys: + // [itemType] => file + // [itemSource] => 13 + // [shareType] => 0 + // [shareWith] => test1 + // [itemParent] => - if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { + if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { - $view = new \OC_FilesystemView('/'); - $userId = \OCP\User::getUser(); - $util = new Util($view, $userId); - $path = $util->fileIdToPath($params['itemSource']); + $view = new \OC_FilesystemView( '/' ); + $userId = \OCP\User::getUser(); + $util = new Util( $view, $userId); + $path = $util->fileIdToPath( $params['itemSource'] ); - // check if this is a re-share - if ($params['itemParent']) { + // check if this is a re-share + if ( $params['itemParent'] ) { - // get the parent from current share - $parent = $util->getShareParent($params['itemParent']); + // get the parent from current share + $parent = $util->getShareParent( $params['itemParent'] ); - // get target path - $targetPath = $util->fileIdToPath($params['itemSource']); - $targetPathSplit = array_reverse(explode('/', $targetPath)); + // get target path + $targetPath = $util->fileIdToPath( $params['itemSource'] ); + $targetPathSplit = array_reverse( explode( '/', $targetPath ) ); - // init values - $path = ''; - $sharedPart = ltrim($parent['file_target'], '/'); + // init values + $path = ''; + $sharedPart = ltrim( $parent['file_target'], '/' ); - // rebuild path - foreach ($targetPathSplit as $pathPart) { - if ($pathPart !== $sharedPart) { - $path = '/' . $pathPart . $path; - } else { - break; - } - } + // rebuild path + foreach ( $targetPathSplit as $pathPart ) { + + if ( $pathPart !== $sharedPart ) { + + $path = '/' . $pathPart . $path; + + } else { + + break; + + } + + } - // prefix path with Shared - $path = '/Shared' . $parent['file_target'] . $path; - } + // prefix path with Shared + $path = '/Shared' . $parent['file_target'] . $path; + } - // for group shares get a list of the group members - if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { - $userIds = \OC_Group::usersInGroup($params['shareWith']); - } else { - $userIds = array($params['shareWith']); - } + // for group shares get a list of the group members + if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP ) { + + $userIds = \OC_Group::usersInGroup($params['shareWith']); + + } else { + + $userIds = array( $params['shareWith'] ); + + } - // if we unshare a folder we need a list of all (sub-)files - if ($params['itemType'] === 'folder') { - $allFiles = $util->getAllFiles($path); - } else { - $allFiles = array($path); - } + // if we unshare a folder we need a list of all (sub-)files + if ( $params['itemType'] === 'folder' ) { + + $allFiles = $util->getAllFiles( $path ); + + } else { + + $allFiles = array( $path ); + } - foreach ($allFiles as $path) { + foreach ( $allFiles as $path ) { - // check if the user still has access to the file, otherwise delete share key - $sharingUsers = $util->getSharingUsersArray(true, $path); + // check if the user still has access to the file, otherwise delete share key + $sharingUsers = $util->getSharingUsersArray( true, $path ); - // Unshare every user who no longer has access to the file - $delUsers = array_diff($userIds, $sharingUsers); - if (!Keymanager::delShareKey($view, $delUsers, $path)) { - $failed[] = $path; - } + // Unshare every user who no longer has access to the file + $delUsers = array_diff( $userIds, $sharingUsers); + + if ( !Keymanager::delShareKey( $view, $delUsers, $path ) ) { + + $failed[] = $path; + + } - } + } - // If no attempts to set keyfiles failed - if (empty($failed)) { - return true; - } else { - return false; - } - } - } + // If no attempts to set keyfiles failed + if ( empty( $failed ) ) { + + return true; + + } else { + + return false; + + } + } + } /** * @brief From cdf4bec6a1f9b30ca9b8e5a121582689c91c351d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 22:19:48 +0200 Subject: [PATCH 160/575] fix for tearDownFS, after filesystem::tearDown() the root is not mounted --- lib/util.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/util.php b/lib/util.php index 38453c1ce9..4fc1e8b232 100755 --- a/lib/util.php +++ b/lib/util.php @@ -66,6 +66,7 @@ class OC_Util { public static function tearDownFS() { \OC\Files\Filesystem::tearDown(); self::$fsSetup=false; + self::$rootMounted=false; } /** From 33fc830dd3c037fadd4be35d41937b43c418c188 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 22:22:05 +0200 Subject: [PATCH 161/575] added test for re-share --- apps/files_encryption/tests/share.php | 75 ++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index b6f5ce2c6b..11a3864540 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -43,8 +43,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $userHome = \OC_User::getHome('admin'); $this->dataDir = str_replace('/admin', '', $userHome); - OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + OC_Hook::clear('OCP\\Share'); // Sharing-related hooks OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); @@ -61,14 +62,14 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } - function testShareFile() { + function testShareFile($withTeardown = true) { // create user1 $this->loginHelper('user1', true); // login as admin $this->loginHelper('admin'); - $filename = 'share-tmp-'.time().'.test'; + $filename = 'share-tmp.test'; $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); @@ -91,7 +92,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_READ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); $this->loginHelper('admin'); @@ -101,12 +102,73 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // login as user1 $this->loginHelper('user1'); - $view = new \OC\Files\View('/user1/files/'); // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $view->file_get_contents('Shared/' . $filename); + $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $filename); // check if data is the same $this->assertEquals($this->dataShort, $retreivedCryptedFile); + + if($withTeardown) { + // login as admin + $this->loginHelper('admin'); + + // share the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); + + // tear down + \OC_User::deleteUser('user1'); + } + } + + function testReShareFile($withTeardown = true) { + $this->testShareFile(false); + + // create user2 + $this->loginHelper('user2', true); + + // login as user1 + $this->loginHelper('user1'); + + $filename = 'share-tmp.test'; + + // get the file info + $fileInfo = $this->view->getFileInfo('/user1/files/Shared/'.$filename); + + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + + $this->loginHelper('admin'); + + // check if share key exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user2.shareKey')); + + // login as user2 + $this->loginHelper('user2'); + + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $filename); + + // check if data is the same + $this->assertEquals($this->dataShort, $retreivedCryptedFile); + + if($withTeardown) { + // login as admin + $this->loginHelper('user1'); + + // share the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + + $this->loginHelper('admin'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user2.shareKey')); + + // tear down + \OC_User::deleteUser('user2'); + } } function loginHelper($user, $create=false) { @@ -114,6 +176,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_User::createUser($user, $user); } + \OC_Util::tearDownFS(); \OC_User::setUserId(''); \OC_Util::setupFS($user); \OC_User::setUserId($user); From fdc49e7acbced4d09e4e96ea870ae25a9a32cbca Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 7 May 2013 22:56:59 +0200 Subject: [PATCH 162/575] added test for share folder --- apps/files_encryption/tests/share.php | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 11a3864540..eba5dd5195 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -166,8 +166,81 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user2.shareKey')); + // share the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); + // tear down \OC_User::deleteUser('user2'); + \OC_User::deleteUser('user1'); + } + } + + function testShareFolder($withTeardown = true) { + // create user1 + $this->loginHelper('user1', true); + + // login as admin + $this->loginHelper('admin'); + + $folder1 = '/folder1'; + $subfolder = '/subfolder1'; + $subsubfolder = '/subsubfolder1'; + + $filename = 'share-tmp.test'; + + $this->view->mkdir('/admin/files'.$folder1); + $this->view->mkdir('/admin/files'.$folder1.$subfolder); + $this->view->mkdir('/admin/files'.$folder1.$subfolder.$subsubfolder); + + $cryptedFile = file_put_contents( 'crypt://' . $folder1.$subfolder.$subsubfolder.'/'.$filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file infos + $fileInfo = $this->view->getFileInfo('/admin/files/folder1/'); + + // check if we have fileInfos + $this->assertTrue(is_array($fileInfo)); + + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + + $this->loginHelper('admin'); + + // check if share key exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.user1.shareKey')); + + // login as user1 + $this->loginHelper('user1'); + + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared'.$folder1.$subfolder.$subsubfolder.'/'.$filename); + + // check if data is the same + $this->assertEquals($this->dataShort, $retreivedCryptedFile); + + if($withTeardown) { + // login as admin + $this->loginHelper('admin'); + + // share the file + \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.user1.shareKey')); + + // tear down + \OC_User::deleteUser('user1'); } } From 28866de44bbf5c5bc2b1e0689b5139047ba5273b Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Wed, 8 May 2013 16:22:08 +0200 Subject: [PATCH 163/575] Added pre_share hook Switched it for post_share hook in encryption hooks Stop a file from being shared if the encryption procedure fails for any users --- apps/files_encryption/appinfo/app.php | 2 +- apps/files_encryption/hooks/hooks.php | 17 ++- apps/files_encryption/lib/util.php | 9 +- lib/public/share.php | 169 ++++++++++++++++++-------- 4 files changed, 130 insertions(+), 67 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index a7253c4333..7f01aaeebe 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -16,7 +16,7 @@ OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); // Sharing-related hooks -OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); +OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ddec839acd..1f642f4841 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -183,7 +183,7 @@ class Hooks { /** * @brief */ - public static function postShared( $params ) { + public static function preShared( $params ) { // NOTE: $params has keys: // [itemType] => file @@ -201,6 +201,7 @@ class Hooks { // [fileTarget] => /test8 // [id] => 10 // [token] => + // [run] => whether emitting script should continue to run // TODO: Should other kinds of item be encrypted too? if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { @@ -249,7 +250,7 @@ class Hooks { // rebuild path foreach ( $targetPathSplit as $pathPart ) { - if( $pathPart !== $sharedPart ) { + if ( $pathPart !== $sharedPart ) { $path = '/' . $pathPart . $path; @@ -295,15 +296,13 @@ class Hooks { $failed[] = $path; } } - - // If no attempts to set keyfiles failed - if ( empty( $failed ) ) { - return true; + // If some attempts to set keyfiles failed + if ( ! empty( $failed ) ) { - } else { - - return false; + // Set flag var 'run' to notify emitting + // script that hook execution failed + $params['run']->run = false; } } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 5ab5ea6425..871d3bcfc3 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -146,7 +146,7 @@ class Util { return false; } else { - + return true; } @@ -855,15 +855,14 @@ class Util { * @param string $filePath path of the file to be shared */ public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { - + // Make sure users are capable of sharing $filteredUids = $this->filterShareReadyUsers( $users ); if ( ! empty( $filteredUids['unready'] ) ) { - // Notify user of unready userDir - // TODO: Move this out of here; it belongs somewhere else - \OCP\JSON::error(); + // TODO: Notify user of unready userDir + \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"'.print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); } diff --git a/lib/public/share.php b/lib/public/share.php index fee906d187..cb151b9f4b 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1223,42 +1223,12 @@ class Share { } else { $groupFileTarget = null; } - $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); - if (isset($fileSource)) { - if ($parentFolder) { - if ($parentFolder === true) { - $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, - $uidOwner, $suggestedFileTarget, $parent); - if ($fileTarget != $groupFileTarget) { - $parentFolders[$uid]['folder'] = $fileTarget; - } - } else if (isset($parentFolder[$uid])) { - $fileTarget = $parentFolder[$uid]['folder'].$itemSource; - $parent = $parentFolder[$uid]['id']; - } - } else { - $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, - $uid, $uidOwner, $suggestedFileTarget, $parent); - } - } else { - $fileTarget = null; - } - // 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)); - $id = \OC_DB::insertid('*PREFIX*share'); - } - } - \OC_Hook::emit('OCP\Share', 'post_shared', array( + // Trigger hooks before the share is added to DB + // Set flag indicating if execution should continue. + // Use an object as workaround for pass by reference issues + $run = new \stdClass(); + $run->run = true; + $params = array( 'itemType' => $itemType, 'itemSource' => $itemSource, 'itemTarget' => $groupItemTarget, @@ -1270,11 +1240,73 @@ class Share { 'fileSource' => $fileSource, 'fileTarget' => $groupFileTarget, 'id' => $parent, - 'token' => $token - )); - if ($parentFolder === true) { - // Return parent folders to preserve file target paths for potential children - return $parentFolders; + 'token' => $token, + 'run' => $run + ); + $run = \OC_Hook::emit( + 'OCP\Share' + , 'pre_shared' + , $params + ); + // If hook execution didn't encounter errors + if ( ! $run->run ) { + $message = 'Sharing '.$itemSource.' failed, because pre share hooks failed'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + return false; + } else { + $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); + if (isset($fileSource)) { + if ($parentFolder) { + if ($parentFolder === true) { + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, + $uidOwner, $suggestedFileTarget, $parent); + if ($fileTarget != $groupFileTarget) { + $parentFolders[$uid]['folder'] = $fileTarget; + } + } else if (isset($parentFolder[$uid])) { + $fileTarget = $parentFolder[$uid]['folder'].$itemSource; + $parent = $parentFolder[$uid]['id']; + } + } else { + $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, + $uid, $uidOwner, $suggestedFileTarget, $parent); + } + } else { + $fileTarget = null; + } + // 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)); + $id = \OC_DB::insertid('*PREFIX*share'); + } + } + \OC_Hook::emit('OCP\Share', 'post_shared', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'itemTarget' => $groupItemTarget, + 'parent' => $parent, + 'shareType' => $shareType, + 'shareWith' => $shareWith['group'], + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'fileTarget' => $groupFileTarget, + 'id' => $parent, + 'token' => $token + )); + if ($parentFolder === true) { + // Return parent folders to preserve file target paths for potential children + return $parentFolders; + } } } else { $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, @@ -1296,10 +1328,14 @@ class Share { } else { $fileTarget = null; } - $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( + // Trigger hooks before the share is added to DB + // Set flag indicating if execution should continue. + // Use an object as workaround for pass by reference issues + $run = new \stdClass(); + $run->run = true; + // NOTE: [id] isn't included as it's not yet available + // (hasn't been inserted) + $params = array( 'itemType' => $itemType, 'itemSource' => $itemSource, 'itemTarget' => $itemTarget, @@ -1310,13 +1346,42 @@ class Share { 'permissions' => $permissions, 'fileSource' => $fileSource, 'fileTarget' => $fileTarget, - 'id' => $id, - 'token' => $token - )); - if ($parentFolder === true) { - $parentFolders['id'] = $id; - // Return parent folder to preserve file target paths for potential children - return $parentFolders; + 'token' => $token, + 'run' => $run + ); + \OC_Hook::emit( + 'OCP\Share' + , 'pre_shared' + , $params + ); + // If hook execution didn't encounter errors + if ( ! $run->run ) { + $message = 'Sharing '.$itemSource.' failed, because pre share hooks failed'; + \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); + return false; + } else { + $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, + 'itemSource' => $itemSource, + 'itemTarget' => $itemTarget, + 'parent' => $parent, + 'shareType' => $shareType, + 'shareWith' => $shareWith, + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'fileTarget' => $fileTarget, + 'id' => $id, + 'token' => $token + )); + if ($parentFolder === true) { + $parentFolders['id'] = $id; + // Return parent folder to preserve file target paths for potential children + return $parentFolders; + } } } return true; From 101e037529fef0273ba9d4de522d2e47d8a6ef0b Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Thu, 9 May 2013 14:43:06 +0200 Subject: [PATCH 164/575] Fixed bugs with pre_share hook usage Made sure new user being shared to is added to array of sharing users --- apps/files_encryption/hooks/hooks.php | 18 ++- apps/files_encryption/lib/util.php | 174 +++++++++++++++----------- 2 files changed, 114 insertions(+), 78 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 1f642f4841..e8cd4ade71 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -277,21 +277,28 @@ class Hooks { // if a folder was shared, get a list if all (sub-)folders if ( $params['itemType'] === 'folder' ) { - $allFiles = $util->getAllFiles($path); + + $allFiles = $util->getAllFiles( $path ); + } else { $allFiles = array( $path ); } + + // Set array for collecting paths which can't be shared + $failed = array(); foreach ( $allFiles as $path ) { $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path ); - - $failed = array(); + + // Because this is a pre_share hook, the user + // being shared to is not yet included; add them + $usersSharing[] = $params['shareWith']; // Attempt to set shareKey - if ( !$util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { + if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { $failed[] = $path; } @@ -304,6 +311,9 @@ class Hooks { // script that hook execution failed $params['run']->run = false; + // TODO: Make sure files_sharing provides user + // feedback on failed share + } } } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 871d3bcfc3..068f714842 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -3,8 +3,8 @@ * ownCloud * * @author Sam Tuke, Frank Karlitschek - * @copyright 2012 Sam Tuke samtuke@owncloud.com, - * Frank Karlitschek frank@owncloud.org + * @copyright 2012 Sam Tuke , + * Frank Karlitschek * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -88,16 +88,9 @@ class Util { //// TODO: add support for optional recovery in case of lost passphrase / keys //// TODO: add admin optional required long passphrase for users - //// TODO: add UI buttons for encrypt / decrypt everything //// TODO: implement flag system to allow user to specify encryption by folder, subfolder, etc. - // Sharing: - - //// TODO: add support for encrypting to multiple public keys - //// TODO: add support for decrypting to multiple private keys - - // Integration testing: //// TODO: test new encryption with versioning @@ -136,11 +129,11 @@ class Util { public function ready() { if( - !$this->view->file_exists( $this->encryptionDir ) - or !$this->view->file_exists( $this->keyfilesPath ) - or !$this->view->file_exists( $this->shareKeysPath ) - or !$this->view->file_exists( $this->publicKeyPath ) - or !$this->view->file_exists( $this->privateKeyPath ) + ! $this->view->file_exists( $this->encryptionDir ) + or ! $this->view->file_exists( $this->keyfilesPath ) + or ! $this->view->file_exists( $this->shareKeysPath ) + or ! $this->view->file_exists( $this->publicKeyPath ) + or ! $this->view->file_exists( $this->privateKeyPath ) ) { return false; @@ -471,9 +464,8 @@ class Util { /** * @brief get the file size of the unencrypted file - * * @param $path absolute path - * @return true / false if file is encrypted + * @return bool */ public function getFileSize($path) { @@ -768,7 +760,7 @@ class Util { * @return multi-dimensional array. keys: ready, unready */ public function filterShareReadyUsers( $unfilteredUsers ) { - + // This array will collect the filtered IDs $readyIds = $unreadyIds = array(); @@ -780,8 +772,8 @@ class Util { // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) if ( - $util->ready() - or $user == 'owncloud' + $user == 'owncloud' + or $util->ready() ) { // Construct array of ready UIDs for Keymanager{} @@ -853,22 +845,27 @@ class Util { * @brief Encrypt keyfile to multiple users * @param array $users list of users which should be able to access the file * @param string $filePath path of the file to be shared + * @return bool */ public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { // Make sure users are capable of sharing $filteredUids = $this->filterShareReadyUsers( $users ); + // If we're attempting to share to unready users if ( ! empty( $filteredUids['unready'] ) ) { - - // TODO: Notify user of unready userDir + \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"'.print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); + return false; + } // Get public keys for each user, ready for generating sharekeys $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); - + + // Note proxy status then disable it + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get the current users's private key for decrypting existing keyfile @@ -884,21 +881,19 @@ class Util { // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory - // TODO: Reuse the keyfile, it it exists, instead of making a new one if ( ! Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) || ! Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) ) { - trigger_error( "SET Share keys failed" ); + \OC_Log::write( 'Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR ); + + return false; } - - // Delete existing keyfile - // Do this last to ensure file is recoverable in case of error - // Keymanager::deleteFileKey( $this->view, $this->userId, $params['fileTarget'] ); - - \OC_FileProxy::$enabled = true; + + // Return proxy to original status + \OC_FileProxy::$enabled = $proxyStatus; return true; } @@ -948,7 +943,7 @@ class Util { // add current user if given if ( $currentUserId != false ) { - $userIds[] = $currentUserId; + $userIds[] = $currentUserId; } @@ -961,6 +956,7 @@ class Util { /** * @brief Set file migration status for user + * @return bool */ public function setMigrationStatus( $status ) { @@ -1089,42 +1085,59 @@ class Util { * @param type $dir relative to the users files folder * @return array with list of files relative to the users files folder */ - public function getAllFiles($dir) { + public function getAllFiles( $dir ) { + $result = array(); - $content = $this->view->getDirectoryContent($this->userFilesDir.$dir); + $content = $this->view->getDirectoryContent( $this->userFilesDir . $dir ); - // handling for re shared folders - $path_split = explode( '/', $dir ); - $shared = ''; - if($path_split[1] === 'Shared') { - $shared = '/Shared'; - } + // handling for re shared folders + $path_split = explode( '/', $dir ); + $shared = ''; + + if( $path_split[1] === 'Shared' ) { + + $shared = '/Shared'; + + } - foreach ($content as $c) { - $sharedPart = $path_split[sizeof($path_split)-1]; - $targetPathSplit = array_reverse(explode('/', $c['path'])); + foreach ( $content as $c ) { + + $sharedPart = $path_split[sizeof( $path_split )-1]; + $targetPathSplit = array_reverse( explode( '/', $c['path'] ) ); - $path = ''; + $path = ''; - // rebuild path - foreach ($targetPathSplit as $pathPart) { - if($pathPart !== $sharedPart) { - $path = '/'.$pathPart.$path; - } else { - break; - } - } + // rebuild path + foreach ( $targetPathSplit as $pathPart ) { + + if ( $pathPart !== $sharedPart ) { + + $path = '/' . $pathPart . $path; + + } else { + + break; + + } + + } - $path = $dir.$path; + $path = $dir.$path; if ($c['type'] === "dir" ) { - $result = array_merge($result, $this->getAllFiles($path)); + + $result = array_merge( $result, $this->getAllFiles( $path ) ); + } else { - $result[] = $path; + + $result[] = $path; + } } + return $result; + } /** @@ -1132,7 +1145,7 @@ class Util { * @param int $Id of the current share * @return array of the parent */ - public static function getShareParent($Id) { + public static function getShareParent( $Id ) { $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' .' FROM `*PREFIX*share`' @@ -1152,26 +1165,39 @@ class Util { * @return owner */ public function getOwnerFromSharedFile($id) { - $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $source = $query->execute(array($id))->fetchRow(); + + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $source = $query->execute( array( $id ) )->fetchRow(); - if (isset($source['parent'])) { - $parent = $source['parent']; - while (isset($parent)) { - $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $item = $query->execute(array($parent))->fetchRow(); - if (isset($item['parent'])) { - $parent = $item['parent']; - } else { - $fileOwner = $item['uid_owner']; - break; - } - } - } else { - $fileOwner = $source['uid_owner']; - } + if ( isset($source['parent'] ) ) { + + $parent = $source['parent']; + + while ( isset( $parent ) ) { + + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $item = $query->execute( array( $parent ) )->fetchRow(); + + if ( isset( $item['parent'] ) ) { + + $parent = $item['parent']; + + } else { + + $fileOwner = $item['uid_owner']; + + break; + + } + } + + } else { + + $fileOwner = $source['uid_owner']; + + } - return $fileOwner; - } + return $fileOwner; + } } From 3003dd46d17e9d4b70a5b19d4a7807bb0fbad298 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Thu, 9 May 2013 18:09:20 +0200 Subject: [PATCH 165/575] Implemented initial recoveryAdmin functionality in crypto file proxy --- apps/files_encryption/lib/proxy.php | 83 +++++++++++++++++++++-------- apps/files_encryption/lib/util.php | 22 ++++++-- 2 files changed, 80 insertions(+), 25 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 820b7d8b67..ae36b9fe09 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -93,29 +93,29 @@ class Proxy extends \OC_FileProxy { public function preFile_put_contents( $path, &$data ) { - if ( self::shouldEncrypt( $path ) ) { + if ( self::shouldEncrypt( $path ) ) { - // Stream put contents should have been converted to fopen + // Stream put contents should have been converted to fopen if ( !is_resource( $data ) ) { - $userId = \OCP\USER::getUser(); - $rootView = new \OC_FilesystemView( '/' ); - $util = new Util( $rootView, $userId ); - $session = new Session( $rootView ); + $userId = \OCP\USER::getUser(); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); + $session = new Session( $view ); $privateKey = $session->getPrivateKey(); $filePath = $util->stripUserFilesPath( $path ); // Set the filesize for userland, before encrypting $size = strlen( $data ); - + // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + // Check if there is an existing key we can reuse - if ( $encKeyfile = Keymanager::getFileKey( $rootView, $userId, $filePath ) ) { + if ( $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ) ) { // Fetch shareKey - $shareKey = Keymanager::getShareKey( $rootView, $userId, $filePath ); + $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); // Decrypt the keyfile $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); @@ -124,7 +124,7 @@ class Proxy extends \OC_FileProxy { // Make a new key $plainKey = Crypt::generateKey(); - + } // Encrypt data @@ -134,34 +134,73 @@ class Proxy extends \OC_FileProxy { $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); - // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $rootView, $uniqueUserIds ); + // Fetch public keys for all users who will share the file + $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); - // Encrypt plain keyfile to multiple sharefiles + // Encrypt plain keyfile to multiple sharefiles $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders - Keymanager::setShareKeys( $rootView, $filePath, $multiEncrypted['keys'] ); + Keymanager::setShareKeys( $view, $filePath, $multiEncrypted['keys'] ); // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $rootView, $filePath, $userId, $encKey ); + Keymanager::setFileKey( $view, $filePath, $userId, $encKey ); // Replace plain content with encrypted content by reference $data = $encData; - + // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted'=>true, 'size' => strlen($size), 'unencrypted_size' => $size), '' ); + \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted'=>true, 'size' => strlen($size), 'unencrypted_size' => $size), '' ); - // Re-enable proxy - our work is done + // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; } } - return true; + return true; + + } + + public function postFile_put_contents( $path, $length ) { + + $userId = \OCP\USER::getUser(); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); + + // Check if recoveryAdmin is enabled for system and user + // TODO: Consider storing recoveryAdmin status for user in session + if ( + \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) + && $util->recoveryEnabledForUser() + ) { + + // Get owner UID and filepath + list( $owner, $ownerPath ) = $util->getUidAndFilename( $path ); + + $recoveryAdminUid = \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); + $usersSharing = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + + // Check if file is already shared to recoveryAdmin + if ( ! in_array( $recoveryAdminUid, $usersSharing ) ) { + + $relPath = $util->stripFilesPath( $path ); + + // Get file info from filecache + $fileInfo = \OC\Files\Filesystem::getFileInfo( $path ); + + // Register share to recoveryAdmin with share API + // FIXME: Some of these vars aren't set + // FIXME: What should the permission number be to grant all rights? +// \OCP\Share::shareItem( $itemType, $itemSource, 0, $recoveryAdminUid, 17 ); + + } + + } + } /** diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 068f714842..41d51fbf6f 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -548,6 +548,7 @@ class Util { /** * @brief Format a path to be relative to the /user/files/ directory + * @note e.g. turns '/admin/files/test.txt' into 'test.txt' */ public function stripUserFilesPath( $path ) { @@ -560,6 +561,21 @@ class Util { } + /** + * @brief Format a path to be relative to the /user directory + * @note e.g. turns '/admin/files/test.txt' into 'files/test.txt' + */ + public function stripFilesPath( $path ) { + + $trimmed = ltrim( $path, '/' ); + $split = explode( '/', $trimmed ); + $sliced = array_slice( $split, 1 ); + $relPath = implode( '/', $sliced ); + + return $relPath; + + } + /** * @brief Format a shared path to be relative to the /user/files/ directory * @note Expects a path like /uid/files/Shared/filepath @@ -1142,16 +1158,16 @@ class Util { /** * @brief get shares parent. - * @param int $Id of the current share + * @param int $id of the current share * @return array of the parent */ - public static function getShareParent( $Id ) { + public static function getShareParent( $id ) { $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' .' FROM `*PREFIX*share`' .' WHERE `id` = ?' ); - $result = $query->execute( array( $Id ) ); + $result = $query->execute( array( $id ) ); $row = $result->fetchRow(); From 92e28839ffe31c5173fe49481705db15a3a4acb2 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Thu, 9 May 2013 18:16:59 +0200 Subject: [PATCH 166/575] Improvements to code formatting & indentation --- apps/files_encryption/lib/util.php | 239 +++++++++++++++-------------- 1 file changed, 122 insertions(+), 117 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 41d51fbf6f..04b1e66f58 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -305,7 +305,6 @@ class Util { * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search * @return mixed false if 0 found, array on success. Keys: name, path - * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ @@ -444,10 +443,10 @@ class Util { return $text; } - /** - * @brief Check if a given path identifies an encrypted file - * @return true / false - */ + /** + * @brief Check if a given path identifies an encrypted file + * @return true / false + */ public function isEncryptedPath( $path ) { // Disable encryption proxy so data retreived is in its @@ -462,89 +461,94 @@ class Util { } - /** - * @brief get the file size of the unencrypted file - * @param $path absolute path - * @return bool - */ + /** + * @brief get the file size of the unencrypted file + * @param $path absolute path + * @return bool + */ - public function getFileSize($path) { - $result = 0; + public function getFileSize( $path ) { + + $result = 0; - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // Reformat path for use with OC_FSV - $pathSplit = explode( '/', $path ); - $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + // Reformat path for use with OC_FSV + $pathSplit = explode( '/', $path ); + $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); - if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { + if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { - // get the size from filesystem - $fullPath = $this->view->getLocalFile($path); - $size = filesize($fullPath); + // get the size from filesystem + $fullPath = $this->view->getLocalFile($path); + $size = filesize($fullPath); - // calculate last chunk nr - $lastChunckNr = floor($size / 8192); + // calculate last chunk nr + $lastChunckNr = floor($size / 8192); - // open stream - $stream = fopen('crypt://' . $pathRelative, "r"); + // open stream + $stream = fopen('crypt://' . $pathRelative, "r"); - if(is_resource($stream)) { - // calculate last chunk position - $lastChunckPos = ($lastChunckNr * 8192); + if(is_resource($stream)) { + // calculate last chunk position + $lastChunckPos = ($lastChunckNr * 8192); - // seek to end - fseek($stream, $lastChunckPos); + // seek to end + fseek($stream, $lastChunckPos); - // get the content of the last chunk - $lastChunkContent = fread($stream, 8192); + // get the content of the last chunk + $lastChunkContent = fread($stream, 8192); - // calc the real file size with the size of the last chunk - $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + // calc the real file size with the size of the last chunk + $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); - // store file size - $result = $realSize; - } - } + // store file size + $result = $realSize; + } + } - \OC_FileProxy::$enabled = $proxyStatus; + \OC_FileProxy::$enabled = $proxyStatus; - return $result; - } - /** - * @brief fix the file size of the encrypted file - * - * @param $path absolute path - * @return true / false if file is encrypted - */ + return $result; + } + + /** + * @brief fix the file size of the encrypted file + * @param $path absolute path + * @return true / false if file is encrypted + */ - public function fixFileSize($path) { - $result = false; + public function fixFileSize( $path ) { + + $result = false; - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $realSize = $this->getFileSize($path); - if($realSize > 0) { - $cached = $this->view->getFileInfo($path); - $cached['encrypted'] = 1; + $realSize = $this->getFileSize( $path ); + + if ( $realSize > 0 ) { + + $cached = $this->view->getFileInfo( $path ); + $cached['encrypted'] = 1; - // set the size - $cached['unencrypted_size'] = $realSize; + // set the size + $cached['unencrypted_size'] = $realSize; - // put file info - $this->view->putFileInfo( $path, $cached ); + // put file info + $this->view->putFileInfo( $path, $cached ); - $result = true; - } + $result = true; + + } - \OC_FileProxy::$enabled = $proxyStatus; + \OC_FileProxy::$enabled = $proxyStatus; - return $result; - } + return $result; + } /** * @brief Format a path to be relative to the /user/files/ directory @@ -640,7 +644,7 @@ class Util { stream_copy_to_stream( $plainHandle1, $plainHandle2 ); // Close access to original file -// $this->view->fclose( $plainHandle1 ); // not implemented in view{} + // $this->view->fclose( $plainHandle1 ); // not implemented in view{} // Delete original plain file so we can rename enc file later $this->view->unlink( $rawPath ); @@ -1156,64 +1160,65 @@ class Util { } - /** - * @brief get shares parent. - * @param int $id of the current share - * @return array of the parent - */ - public static function getShareParent( $id ) { + /** + * @brief get shares parent. + * @param int $id of the current share + * @return array of the parent + */ + public static function getShareParent( $id ) { - $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' - .' FROM `*PREFIX*share`' - .' WHERE `id` = ?' ); + $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' + .' FROM `*PREFIX*share`' + .' WHERE `id` = ?' ); - $result = $query->execute( array( $id ) ); + $result = $query->execute( array( $id ) ); - $row = $result->fetchRow(); + $row = $result->fetchRow(); - return $row; + return $row; - } - - /** - * @brief get owner of the shared files. - * @param int $Id of a share - * @return owner - */ - public function getOwnerFromSharedFile($id) { - - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $source = $query->execute( array( $id ) )->fetchRow(); - - if ( isset($source['parent'] ) ) { - - $parent = $source['parent']; - - while ( isset( $parent ) ) { - - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $item = $query->execute( array( $parent ) )->fetchRow(); - - if ( isset( $item['parent'] ) ) { - - $parent = $item['parent']; - - } else { - - $fileOwner = $item['uid_owner']; - - break; - - } - } - - } else { - - $fileOwner = $source['uid_owner']; - } + /** + * @brief get owner of the shared files. + * @param int $Id of a share + * @return owner + */ + public function getOwnerFromSharedFile( $id ) { + + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $source = $query->execute( array( $id ) )->fetchRow(); + + if ( isset($source['parent'] ) ) { + + $parent = $source['parent']; + + while ( isset( $parent ) ) { + + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $item = $query->execute( array( $parent ) )->fetchRow(); + + if ( isset( $item['parent'] ) ) { + + $parent = $item['parent']; + + } else { + + $fileOwner = $item['uid_owner']; + + break; + + } + } + + } else { + + $fileOwner = $source['uid_owner']; + + } + return $fileOwner; + } } From 163fe6401609a9bdb4ee71127e4f6724b1804af0 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Thu, 9 May 2013 18:24:07 +0200 Subject: [PATCH 167/575] Fixes to code formatting and indentation --- apps/files_encryption/lib/keymanager.php | 166 ++++++++++++++--------- 1 file changed, 99 insertions(+), 67 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 51d4f8ffc0..6c2df6f840 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -113,8 +113,8 @@ class Keymanager { \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util($view, \OCP\User::getUser()); - list($owner, $filename) = $util->getUidAndFilename($path); + $util = new Util( $view, \OCP\User::getUser() ); + list( $owner, $filename ) = $util->getUidAndFilename( $path ); $basePath = '/' . $owner . '/files_encryption/keyfiles'; @@ -123,19 +123,26 @@ class Keymanager { if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { // create all parent folders - $info=pathinfo($basePath . '/' . $targetPath); - $keyfileFolderName=$view->getLocalFolder($info['dirname']); - if(!file_exists($keyfileFolderName)) { - mkdir($keyfileFolderName, 0750, true); + $info = pathinfo( $basePath . '/' . $targetPath ); + $keyfileFolderName = $view->getLocalFolder( $info['dirname'] ); + + if ( ! file_exists( $keyfileFolderName ) ) { + + mkdir( $keyfileFolderName, 0750, true ); + } } - // try reusing key file if part file - if(self::isPartialFilePath($targetPath)) { - $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile ); - } else { - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - } + // try reusing key file if part file + if ( self::isPartialFilePath( $targetPath ) ) { + + $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath( $targetPath ) . '.key', $catfile ); + + } else { + + $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + + } \OC_FileProxy::$enabled = $proxyStatus; @@ -143,37 +150,47 @@ class Keymanager { } - /** - * @brief Remove .path extension from a file path - * @param string $path Path that may identify a .part file - * @return string File path without .part extension - * @note this is needed for reusing keys - */ - public static function fixPartialFilePath($path) - { - if (preg_match('/\.part$/', $path)) { + /** + * @brief Remove .path extension from a file path + * @param string $path Path that may identify a .part file + * @return string File path without .part extension + * @note this is needed for reusing keys + */ + public static function fixPartialFilePath( $path ) { + + if (preg_match('/\.part$/', $path)) { - $newLength = strlen($path) - 5; - $fPath = substr($path, 0, $newLength); + $newLength = strlen($path) - 5; + $fPath = substr($path, 0, $newLength); - return $fPath; - } else { + return $fPath; + + } else { - return $path; + return $path; - } + } - } + } - public static function isPartialFilePath($path) - { - if (preg_match('/\.part$/', $path)) { - return true; - } else { - return false; - } + /** + * @brief Check if a path is a .part file + * @param string $path Path that may identify a .part file + * @return bool + */ + public static function isPartialFilePath( $path ) { + + if ( preg_match('/\.part$/', $path ) ) { + + return true; + + } else { + + return false; + + } - } + } /** * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view @@ -186,21 +203,26 @@ class Keymanager { */ public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { - // try reusing key file if part file - if(self::isPartialFilePath($filePath)) { - $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); - if($result) { - return $result; - } - } + // try reusing key file if part file + if ( self::isPartialFilePath( $filePath ) ) { + + $result = self::getFileKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); + + if ( $result ) { + + return $result; + + } + + } $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); $filePath_f = ltrim( $filename, '/' ); - $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( $view->file_exists( $keyfilePath ) ) { @@ -269,7 +291,7 @@ class Keymanager { $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); @@ -278,7 +300,8 @@ class Keymanager { \OC_FileProxy::$enabled = $proxyStatus; - return $result; + return $result; + } /** @@ -304,7 +327,7 @@ class Keymanager { $view = new \OC_FilesystemView( '/public-keys' ); - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); @@ -313,7 +336,7 @@ class Keymanager { \OC_FileProxy::$enabled = $proxyStatus; - return $result; + return $result; } @@ -330,28 +353,32 @@ class Keymanager { */ public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { - //here we need the currently logged in user, while userId can be a different user + // Here we need the currently logged in user, while userId can be a different user $util = new Util( $view, \OCP\User::getUser() ); - list($owner, $filename) = $util->getUidAndFilename($path); + list( $owner, $filename ) = $util->getUidAndFilename( $path ); $basePath = '/' . $owner . '/files_encryption/share-keys'; $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); - // try reusing key file if part file - if(self::isPartialFilePath($shareKeyPath)) { - $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; - } else { - $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; - } + // try reusing key file if part file + if(self::isPartialFilePath($shareKeyPath)) { + + $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; + + } else { + + $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; + + } - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $result = $view->file_put_contents( $writePath, $shareKey ); - \OC_FileProxy::$enabled = $proxyStatus; + \OC_FileProxy::$enabled = $proxyStatus; if ( is_int( $result ) @@ -407,15 +434,20 @@ class Keymanager { */ public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { - // try reusing key file if part file - if(self::isPartialFilePath($filePath)) { - $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); - if($result) { - return $result; - } - } + // try reusing key file if part file + if(self::isPartialFilePath($filePath)) { + + $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); + + if($result) { + + return $result; + + } + + } - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user From e25aa78cafda9d922d70c1a1223009df5da93786 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 9 May 2013 19:36:18 +0200 Subject: [PATCH 168/575] added helper class and moved hook registration to it --- apps/files_encryption/appinfo/app.php | 21 ++++---- apps/files_encryption/lib/helper.php | 71 +++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 11 deletions(-) create mode 100755 apps/files_encryption/lib/helper.php diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 7f01aaeebe..b611eb798f 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -8,23 +8,21 @@ OC::$CLASSPATH['OCA\Encryption\Stream'] = 'files_encryption/lib/stream.php'; OC::$CLASSPATH['OCA\Encryption\Proxy'] = 'files_encryption/lib/proxy.php'; OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php'; OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php'; +OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php'; OC_FileProxy::register( new OCA\Encryption\Proxy() ); -// User-related hooks -OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); -OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); +// User related hooks +OCA\Encryption\Helper::registerUserHooks(); -// Sharing-related hooks -OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); -OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); -OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); +// Sharing related hooks +OCA\Encryption\Helper::registerShareHooks(); -// Webdav-related hooks -OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); +// Webdav related hooks +OCA\Encryption\Helper::registerWebdavHooks(); -// filesystem hooks -OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); +// Filesystem related hooks +OCA\Encryption\Helper::registerFilesystemHooks(); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); @@ -52,3 +50,4 @@ if ( // Register settings scripts OCP\App::registerAdmin( 'files_encryption', 'settings-admin' ); OCP\App::registerPersonal( 'files_encryption', 'settings-personal' ); + diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php new file mode 100755 index 0000000000..b294a71ec1 --- /dev/null +++ b/apps/files_encryption/lib/helper.php @@ -0,0 +1,71 @@ + + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Encryption; + +/** + * @brief Class to manage registration of hooks an various helper methods + */ +class Helper { + + /** + * @brief register share related hooks + * + */ + public static function registerShareHooks() { + + \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); + \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); + \OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); + } + + /** + * @brief register user related hooks + * + */ + public static function registerUserHooks() { + + \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); + \OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); + } + + /** + * @brief register webdav related hooks + * + */ + public static function registerWebdavHooks() { + + \OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); + } + + /** + * @brief register filesystem related hooks + * + */ + public static function registerFilesystemHooks() { + + \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); + } + + +} \ No newline at end of file From de855ac31bbb7ccbf8632c0dd0bdf198d22a2c97 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 9 May 2013 19:37:26 +0200 Subject: [PATCH 169/575] improved tests and include helper --- apps/files_encryption/tests/share.php | 76 +++++++++++++++++++-------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index eba5dd5195..bfe34478f7 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -1,13 +1,25 @@ , and - * Robin Appelman - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * ownCloud + * + * @author Florin Peter + * @copyright 2013 Florin Peter + * + * 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 . + * */ -//require_once "PHPUnit/Framework/TestCase.php"; require_once realpath( dirname(__FILE__).'/../../../3rdparty/Crypt_Blowfish/Blowfish.php' ); require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); @@ -15,21 +27,11 @@ require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); require_once realpath( dirname(__FILE__).'/../lib/util.php' ); +require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; -// This has to go here because otherwise session errors arise, and the private -// encryption key needs to be saved in the session - -/** - * @note It would be better to use Mockery here for mocking out the session - * handling process, and isolate calls to session class and data from the unit - * tests relating to them (stream etc.). However getting mockery to work and - * overload classes whilst also using the OC autoloader is difficult due to - * load order Pear errors. - */ - class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function setUp() { @@ -46,20 +48,30 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); OC_Hook::clear('OCP\\Share'); - // Sharing-related hooks - OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); - OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); - OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); - OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + // Sharing related hooks + OCA\Encryption\Helper::registerShareHooks(); + + // Filesystem related hooks + OCA\Encryption\Helper::registerFilesystemHooks(); OC_FileProxy::register( new OCA\Encryption\Proxy() ); OC::registerShareHooks(); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin + OC_App::disable('files_trashbin'); } function tearDown() { - + if($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } } function testShareFile($withTeardown = true) { @@ -120,6 +132,12 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // tear down \OC_User::deleteUser('user1'); + + // cleanup + $this->view->unlink('/admin/files/'.$filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.admin.shareKey')); } } @@ -175,6 +193,12 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // tear down \OC_User::deleteUser('user2'); \OC_User::deleteUser('user1'); + + // cleanup + $this->view->unlink('/admin/files/'.$filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.admin.shareKey')); } } @@ -239,6 +263,12 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.user1.shareKey')); + // cleanup + $this->view->unlink('/admin/files'.$folder1.$subfolder.$subsubfolder.'/'.$filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.admin.shareKey')); + // tear down \OC_User::deleteUser('user1'); } From 990f23c0249682043c9e0dd42f33c478e2aa9131 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 9 May 2013 22:52:44 +0200 Subject: [PATCH 170/575] fix typo --- lib/hooks/basicemitter.php | 2 +- lib/hooks/emitter.php | 2 +- tests/lib/hooks/basicemitter.php | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/hooks/basicemitter.php b/lib/hooks/basicemitter.php index bd24539a40..e615a58cfe 100644 --- a/lib/hooks/basicemitter.php +++ b/lib/hooks/basicemitter.php @@ -35,7 +35,7 @@ abstract class BasicEmitter implements Emitter { * @param string $method optional * @param callable $callback optional */ - public function remoteListener($scope = null, $method = null, $callback = null) { + public function removeListener($scope = null, $method = null, $callback = null) { $names = array(); $allNames = array_keys($this->listeners); if ($scope and $method) { diff --git a/lib/hooks/emitter.php b/lib/hooks/emitter.php index 4219b6f354..8e9074bad6 100644 --- a/lib/hooks/emitter.php +++ b/lib/hooks/emitter.php @@ -28,5 +28,5 @@ interface Emitter { * @param string $method optional * @param callable $callback optional */ - public function remoteListener($scope = null, $method = null, $callback = null); + public function removeListener($scope = null, $method = null, $callback = null); } diff --git a/tests/lib/hooks/basicemitter.php b/tests/lib/hooks/basicemitter.php index 53de996c5c..f48dc53c56 100644 --- a/tests/lib/hooks/basicemitter.php +++ b/tests/lib/hooks/basicemitter.php @@ -153,7 +153,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); - $this->emitter->remoteListener('Test', 'test', $listener); + $this->emitter->removeListener('Test', 'test', $listener); $this->emitter->emitEvent('Test', 'test'); } @@ -166,7 +166,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener1); $this->emitter->listen('Test', 'test', $listener2); - $this->emitter->remoteListener('Test', 'test'); + $this->emitter->removeListener('Test', 'test'); $this->emitter->emitEvent('Test', 'test'); } @@ -176,7 +176,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener); $this->emitter->listen('Test', 'foo', $listener); - $this->emitter->remoteListener('Test', null, $listener); + $this->emitter->removeListener('Test', null, $listener); $this->emitter->emitEvent('Test', 'test'); $this->emitter->emitEvent('Test', 'foo'); } @@ -187,7 +187,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener); $this->emitter->listen('Bar', 'test', $listener); - $this->emitter->remoteListener(null, 'test', $listener); + $this->emitter->removeListener(null, 'test', $listener); $this->emitter->emitEvent('Test', 'test'); $this->emitter->emitEvent('Bar', 'test'); } @@ -199,7 +199,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { $this->emitter->listen('Test', 'test', $listener); $this->emitter->listen('Test', 'foo', $listener); $this->emitter->listen('Bar', 'foo', $listener); - $this->emitter->remoteListener(null, null, $listener); + $this->emitter->removeListener(null, null, $listener); $this->emitter->emitEvent('Test', 'test'); $this->emitter->emitEvent('Test', 'foo'); $this->emitter->emitEvent('Bar', 'foo'); @@ -217,7 +217,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener1); $this->emitter->listen('Test', 'test', $listener2); - $this->emitter->remoteListener('Test', 'test', $listener1); + $this->emitter->removeListener('Test', 'test', $listener1); $this->emitter->emitEvent('Test', 'test'); } @@ -230,7 +230,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener); $this->emitter->listen('Test', 'foo', $listener); - $this->emitter->remoteListener('Test', 'foo', $listener); + $this->emitter->removeListener('Test', 'foo', $listener); $this->emitter->emitEvent('Test', 'test'); } @@ -243,7 +243,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { }; $this->emitter->listen('Test', 'test', $listener); $this->emitter->listen('Bar', 'test', $listener); - $this->emitter->remoteListener('Bar', 'test', $listener); + $this->emitter->removeListener('Bar', 'test', $listener); $this->emitter->emitEvent('Test', 'test'); } @@ -255,7 +255,7 @@ class BasicEmitter extends \PHPUnit_Framework_TestCase { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); - $this->emitter->remoteListener('Bar', 'test', $listener); + $this->emitter->removeListener('Bar', 'test', $listener); $this->emitter->emitEvent('Test', 'test'); } } From 1f464a7113f15ba55c3c80863e315855707f2177 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 9 May 2013 23:21:39 +0200 Subject: [PATCH 171/575] fix for accessing non object --- lib/public/share.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/public/share.php b/lib/public/share.php index cb151b9f4b..17fdd33861 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1249,7 +1249,7 @@ class Share { , $params ); // If hook execution didn't encounter errors - if ( ! $run->run ) { + if ( $run !== false && !$run->run ) { $message = 'Sharing '.$itemSource.' failed, because pre share hooks failed'; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); return false; From 18a821b1e3bd1b688571c7c25bc4b78164a4110d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 9 May 2013 23:22:22 +0200 Subject: [PATCH 172/575] added helper --- apps/files_encryption/tests/crypt.php | 1 + apps/files_encryption/tests/keymanager.php | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 4a85048ba4..b2dea2f653 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -15,6 +15,7 @@ require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); require_once realpath( dirname(__FILE__).'/../lib/util.php' ); +require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 33ca29997b..3acc781a09 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -13,6 +13,7 @@ require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); require_once realpath( dirname(__FILE__).'/../lib/util.php' ); +require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; From 15845bf0bf2817a2cd113ee1d5752e63cf00bc79 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 9 May 2013 23:22:46 +0200 Subject: [PATCH 173/575] fix for autotest.sh --- apps/files_encryption/tests/share.php | 40 ++++++++++++--------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index bfe34478f7..5afa44b69c 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -50,20 +50,27 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { OC_Hook::clear('OCP\\Share'); // Sharing related hooks - OCA\Encryption\Helper::registerShareHooks(); + \OCA\Encryption\Helper::registerShareHooks(); // Filesystem related hooks - OCA\Encryption\Helper::registerFilesystemHooks(); + \OCA\Encryption\Helper::registerFilesystemHooks(); - OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - OC::registerShareHooks(); + \OC::registerShareHooks(); + + OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); // remember files_trashbin state $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin - OC_App::disable('files_trashbin'); + \OC_App::disable('files_trashbin'); + + $this->loginHelper('user1', true); + $this->loginHelper('user2', true); + $this->loginHelper('user3', true); + $this->loginHelper('user4', true); } function tearDown() { @@ -72,12 +79,14 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { } else { OC_App::disable('files_trashbin'); } + + \OC_User::deleteUser('user1'); + \OC_User::deleteUser('user2'); + \OC_User::deleteUser('user3'); + \OC_User::deleteUser('user4'); } function testShareFile($withTeardown = true) { - // create user1 - $this->loginHelper('user1', true); - // login as admin $this->loginHelper('admin'); @@ -130,9 +139,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); - // tear down - \OC_User::deleteUser('user1'); - // cleanup $this->view->unlink('/admin/files/'.$filename); @@ -144,9 +150,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testReShareFile($withTeardown = true) { $this->testShareFile(false); - // create user2 - $this->loginHelper('user2', true); - // login as user1 $this->loginHelper('user1'); @@ -190,10 +193,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); - // tear down - \OC_User::deleteUser('user2'); - \OC_User::deleteUser('user1'); - // cleanup $this->view->unlink('/admin/files/'.$filename); @@ -204,7 +203,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testShareFolder($withTeardown = true) { // create user1 - $this->loginHelper('user1', true); + $this->loginHelper('user1'); // login as admin $this->loginHelper('admin'); @@ -268,9 +267,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.admin.shareKey')); - - // tear down - \OC_User::deleteUser('user1'); } } From 3eae26143f144cce173a619b260d45605aa11a03 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 10 May 2013 01:00:24 +0200 Subject: [PATCH 174/575] added test for re-share folder --- apps/files_encryption/tests/share.php | 362 +++++++++++++++++--------- 1 file changed, 240 insertions(+), 122 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 5afa44b69c..ca7209e1af 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,34 +20,46 @@ * */ -require_once realpath( dirname(__FILE__).'/../../../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); -require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); -require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); -require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); -require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); -require_once realpath( dirname(__FILE__).'/../lib/util.php' ); -require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); -require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; -class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { - - function setUp() { +class Test_Encryption_Share extends \PHPUnit_Framework_TestCase +{ + + function setUp() + { // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); $userHome = \OC_User::getHome('admin'); $this->dataDir = str_replace('/admin', '', $userHome); + $this->folder1 = '/folder1'; + $this->subfolder = '/subfolder1'; + $this->subsubfolder = '/subsubfolder1'; + + $this->filename = 'share-tmp.test'; + + // enable resharing \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); - OC_Hook::clear('OCP\\Share'); + // clear share hooks + \OC_Hook::clear('OCP\\Share'); + \OC::registerShareHooks(); + \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); // Sharing related hooks \OCA\Encryption\Helper::registerShareHooks(); @@ -55,223 +67,329 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - \OC::registerShareHooks(); - - OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // remember files_trashbin state $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - // we don't want to tests with app files_trashbin + // we don't want to tests with app files_trashbin enabled \OC_App::disable('files_trashbin'); + // create users $this->loginHelper('user1', true); $this->loginHelper('user2', true); $this->loginHelper('user3', true); - $this->loginHelper('user4', true); } - - function tearDown() { - if($this->stateFilesTrashbin) { + + function tearDown() + { + // reset app files_trashbin + if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); } else { OC_App::disable('files_trashbin'); } + // cleanup users \OC_User::deleteUser('user1'); \OC_User::deleteUser('user2'); \OC_User::deleteUser('user3'); - \OC_User::deleteUser('user4'); - } + } - function testShareFile($withTeardown = true) { + function testShareFile($withTeardown = true) + { // login as admin $this->loginHelper('admin'); - $filename = 'share-tmp.test'; + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); - // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); - - // Disable encryption proxy to prevent recursive calls + // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - // get the file infos - $fileInfo = $this->view->getFileInfo('/admin/files/'.$filename); + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); - // check if we have fileInfos + // check if we have a valid file info $this->assertTrue(is_array($fileInfo)); - // check if we have fileInfos + // check if the unencrypted file size is stored $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + // login as admin $this->loginHelper('admin'); - // check if share key exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); + // check if share key for user1 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); // login as user1 $this->loginHelper('user1'); - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $filename); + // get file contents + $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); - // check if data is the same + // check if data is the same as we previously written $this->assertEquals($this->dataShort, $retreivedCryptedFile); - if($withTeardown) { + // cleanup + if ($withTeardown) { + // login as admin $this->loginHelper('admin'); - // share the file + // unshare the file \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); // cleanup - $this->view->unlink('/admin/files/'.$filename); + $this->view->unlink('/admin/files/' . $this->filename); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.admin.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); } } - function testReShareFile($withTeardown = true) { + function testReShareFile($withTeardown = true) + { $this->testShareFile(false); // login as user1 $this->loginHelper('user1'); - $filename = 'share-tmp.test'; - // get the file info - $fileInfo = $this->view->getFileInfo('/user1/files/Shared/'.$filename); + $fileInfo = $this->view->getFileInfo('/user1/files/Shared/' . $this->filename); - // share the file + // share the file with user2 \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); - $this->loginHelper('admin'); - - // check if share key exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user2.shareKey')); - - // login as user2 - $this->loginHelper('user2'); - - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $filename); - - // check if data is the same - $this->assertEquals($this->dataShort, $retreivedCryptedFile); - - if($withTeardown) { - // login as admin - $this->loginHelper('user1'); - - // share the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); - - $this->loginHelper('admin'); - - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user2.shareKey')); - - // share the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); - - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.user1.shareKey')); - - // cleanup - $this->view->unlink('/admin/files/'.$filename); - - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/'.$filename.'.admin.shareKey')); - } - } - - function testShareFolder($withTeardown = true) { - // create user1 - $this->loginHelper('user1'); - // login as admin $this->loginHelper('admin'); - $folder1 = '/folder1'; - $subfolder = '/subfolder1'; - $subsubfolder = '/subsubfolder1'; + // check if share key for user2 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - $filename = 'share-tmp.test'; + // login as user2 + $this->loginHelper('user2'); - $this->view->mkdir('/admin/files'.$folder1); - $this->view->mkdir('/admin/files'.$folder1.$subfolder); - $this->view->mkdir('/admin/files'.$folder1.$subfolder.$subsubfolder); + // get file contents + $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); - $cryptedFile = file_put_contents( 'crypt://' . $folder1.$subfolder.$subsubfolder.'/'.$filename, $this->dataShort ); + // check if data is the same as previously written + $this->assertEquals($this->dataShort, $retreivedCryptedFile); - // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + // cleanup + if ($withTeardown) { - // Disable encryption proxy to prevent recursive calls + // login as user1 + $this->loginHelper('user1'); + + // unshare the file with user2 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + + // login as admin + $this->loginHelper('admin'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + + // unshare the file with user1 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + } + } + + function testShareFolder($withTeardown = true) + { + // login as admin + $this->loginHelper('admin'); + + // create folder structure + $this->view->mkdir('/admin/files' . $this->folder1); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - // get the file infos - $fileInfo = $this->view->getFileInfo('/admin/files/folder1/'); + // get the file info from previous created folder + $fileInfo = $this->view->getFileInfo('/admin/files' . $this->folder1); - // check if we have fileInfos + // check if we have a valid file info $this->assertTrue(is_array($fileInfo)); + // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; - // share the file + // share the folder with user1 \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + // login as admin $this->loginHelper('admin'); - // check if share key exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.user1.shareKey')); + // check if share key for user1 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); // login as user1 $this->loginHelper('user1'); - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared'.$folder1.$subfolder.$subsubfolder.'/'.$filename); + // get file contents + $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same $this->assertEquals($this->dataShort, $retreivedCryptedFile); - if($withTeardown) { + // cleanup + if ($withTeardown) { + // login as admin $this->loginHelper('admin'); - // share the file + // unshare the folder with user1 \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.user1.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); // cleanup - $this->view->unlink('/admin/files'.$folder1.$subfolder.$subsubfolder.'/'.$filename); + $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys'.$folder1.$subfolder.$subsubfolder.'/'.$filename.'.admin.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + } + + return $fileInfo; + } + + function testReShareFolder($withTeardown = true) + { + $fileInfoFolder1 = $this->testShareFolder(false); + + // login as user1 + $this->loginHelper('user1'); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file info from previous created folder + $fileInfoSubFolder = $this->view->getFileInfo('/user1/files/Shared' . $this->folder1 . $this->subfolder); + + // check if we have a valid file info + $this->assertTrue(is_array($fileInfoSubFolder)); + + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file with user2 + \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + + // login as admin + $this->loginHelper('admin'); + + // check if share key for user2 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + + // login as user2 + $this->loginHelper('user2'); + + // get file contents + $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + + // check if data is the same + $this->assertEquals($this->dataShort, $retreivedCryptedFile); + + // get the file info + $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + + // check if we have fileInfos + $this->assertTrue(is_array($fileInfo)); + + // share the file with user3 + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL); + + // login as admin + $this->loginHelper('admin'); + + // check if share key for user3 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + + // login as user3 + $this->loginHelper('user3'); + + // get file contents + $retreivedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); + + // check if data is the same + $this->assertEquals($this->dataShort, $retreivedCryptedFile); + + // cleanup + if ($withTeardown) { + + // login as user2 + $this->loginHelper('user2'); + + // unshare the file with user3 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + + // login as user1 + $this->loginHelper('user1'); + + // unshare the folder with user2 + \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + + // login as admin + $this->loginHelper('admin'); + + // unshare the folder1 with user1 + \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + + // cleanup + $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); } } - function loginHelper($user, $create=false) { - if($create) { + function loginHelper($user, $create = false) + { + if ($create) { \OC_User::createUser($user, $user); } From dc8164a3f09d45b8df195df791fa21ddbd2e510d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 11 May 2013 00:22:58 +0200 Subject: [PATCH 175/575] fix for accessing non object --- lib/public/share.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/public/share.php b/lib/public/share.php index 17fdd33861..418c0028ee 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1243,13 +1243,14 @@ class Share { 'token' => $token, 'run' => $run ); + $run = \OC_Hook::emit( 'OCP\Share' , 'pre_shared' , $params ); // If hook execution didn't encounter errors - if ( $run !== false && !$run->run ) { + if ( isset($run->run) && !$run->run ) { $message = 'Sharing '.$itemSource.' failed, because pre share hooks failed'; \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); return false; From e88595638c787e04d1cd6c2df2aabf82ba4729d1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 11 May 2013 00:23:30 +0200 Subject: [PATCH 176/575] fix for webdav --- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/lib/stream.php | 2 +- apps/files_encryption/lib/util.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index ae36b9fe09..3f8b857125 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -492,7 +492,7 @@ class Proxy extends \OC_FileProxy { if($fixSize > 0) { $size = $fixSize; - $fileInfo['encrypted'] = 1; + $fileInfo['encrypted'] = true; $fileInfo['unencrypted_size'] = $size; // put file info diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index c2b13b00b2..33b3255e2a 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -519,7 +519,7 @@ class Stream { } // set encryption data - $fileInfo['encrypted'] = 1; + $fileInfo['encrypted'] = true; $fileInfo['size'] = $this->size; $fileInfo['unencrypted_size'] = $this->unencryptedSize; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 04b1e66f58..ae8c7ffd57 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -94,7 +94,7 @@ class Util { // Integration testing: //// TODO: test new encryption with versioning - //// TODO: test new encryption with sharing + //// DONE: test new encryption with sharing //// TODO: test new encryption with proxies @@ -533,7 +533,7 @@ class Util { if ( $realSize > 0 ) { $cached = $this->view->getFileInfo( $path ); - $cached['encrypted'] = 1; + $cached['encrypted'] = true; // set the size $cached['unencrypted_size'] = $realSize; From 33e0dfeecbcfba7c3caa6765f156cd06d7dfdb13 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 11 May 2013 00:25:32 +0200 Subject: [PATCH 177/575] sharing with group should work now --- apps/files_encryption/hooks/hooks.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e8cd4ade71..619a4d1bfe 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -292,10 +292,16 @@ class Hooks { foreach ( $allFiles as $path ) { $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path ); - - // Because this is a pre_share hook, the user - // being shared to is not yet included; add them - $usersSharing[] = $params['shareWith']; + + // check if we share to a group + if($params['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) { + $usersSharing[] = reset(\OC_Group::usersInGroup($params['shareWith'])); + } else { + // Because this is a pre_share hook, the user + // being shared to is not yet included; add them + $usersSharing[] = $params['shareWith']; + } + // Attempt to set shareKey if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { @@ -310,8 +316,7 @@ class Hooks { // Set flag var 'run' to notify emitting // script that hook execution failed $params['run']->run = false; - - // TODO: Make sure files_sharing provides user + // TODO: Make sure files_sharing provides user // feedback on failed share } From 8e004cc3e1f2ef14096c8a19771363d29552f5b3 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 11 May 2013 01:03:43 +0200 Subject: [PATCH 178/575] added handling for sharing with link NOTE: only encryption work atm --- apps/files_encryption/hooks/hooks.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 619a4d1bfe..2d48198939 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -296,6 +296,9 @@ class Hooks { // check if we share to a group if($params['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) { $usersSharing[] = reset(\OC_Group::usersInGroup($params['shareWith'])); + // check if we share with link + } else if($params['shareType'] === \OCP\Share::SHARE_TYPE_LINK) { + $usersSharing[] = 'owncloud'; } else { // Because this is a pre_share hook, the user // being shared to is not yet included; add them From 8f19c5ecab7058702882aa3db4d3202ca697cb70 Mon Sep 17 00:00:00 2001 From: infoneo Date: Sun, 12 May 2013 01:47:48 +0200 Subject: [PATCH 179/575] Dots in a filenames fix --- lib/files/mapper.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/lib/files/mapper.php b/lib/files/mapper.php index 15f5f0628b..97a2bff915 100644 --- a/lib/files/mapper.php +++ b/lib/files/mapper.php @@ -172,13 +172,21 @@ class Mapper $pathElements = explode('/', $path); $sluggedElements = array(); - - // rip off the extension ext from last element + $last= end($pathElements); $parts = pathinfo($last); - $filename = $parts['filename']; - array_pop($pathElements); - array_push($pathElements, $filename); + + if ((preg_match('~[-\w]+~', $parts['filename'])) && (preg_match('~[-\w]+~', $parts['extension']))){ + + // rip off the extension ext from last element + $filename = $parts['filename']; + array_pop($pathElements); + array_push($pathElements, $filename); + + } else { + + unset($parts['extension']); + } foreach ($pathElements as $pathElement) { // remove empty elements @@ -213,8 +221,8 @@ class Mapper */ private function slugify($text) { - // replace non letter or digits by - - $text = preg_replace('~[^\\pL\d]+~u', '-', $text); + // replace non letter or digits or dots by - + $text = preg_replace('~[^\\pL\d\.]+~u', '-', $text); // trim $text = trim($text, '-'); @@ -228,7 +236,10 @@ class Mapper $text = strtolower($text); // remove unwanted characters - $text = preg_replace('~[^-\w]+~', '', $text); + $text = preg_replace('~[^-\w\.]+~', '', $text); + + // trim ending dots (for security reasons and win compatibility) + $text = preg_replace('~\.+$~', '', $text); if (empty($text)) { return uniqid(); From be4eef682ae515fd542ec351eef05cc54fe3247c Mon Sep 17 00:00:00 2001 From: infoneo Date: Sun, 12 May 2013 15:22:57 +0300 Subject: [PATCH 180/575] Fixed problems with a dots in a filenames --- lib/files/mapper.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/files/mapper.php b/lib/files/mapper.php index 97a2bff915..d9e116bf25 100644 --- a/lib/files/mapper.php +++ b/lib/files/mapper.php @@ -176,16 +176,22 @@ class Mapper $last= end($pathElements); $parts = pathinfo($last); - if ((preg_match('~[-\w]+~', $parts['filename'])) && (preg_match('~[-\w]+~', $parts['extension']))){ + $filename = $parts['filename']; + $extension = $parts['extension']; + - // rip off the extension ext from last element - $filename = $parts['filename']; - array_pop($pathElements); - array_push($pathElements, $filename); + if ((preg_match('~[-\w]+~', $filename)) && (preg_match('~[-\w]+~', $extension))){ + + // rip off the extension ext from last element + array_pop($pathElements); + array_push($pathElements, $filename); } else { - unset($parts['extension']); + if (isset($parts['extension'])) { + unset($parts['extension']); + } + } foreach ($pathElements as $pathElement) { From a6ef25ba08e9f026892a2715af479f0ff1299cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 13 May 2013 14:28:45 +0200 Subject: [PATCH 181/575] use preShare hook only to check if all pub keys are available and the postShare hook to finaly update the shareKeys if the file was shared successfully --- apps/files_encryption/hooks/hooks.php | 130 +++++++++++--------------- apps/files_encryption/lib/helper.php | 1 + apps/files_encryption/lib/proxy.php | 38 -------- 3 files changed, 57 insertions(+), 112 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2d48198939..e3890ce1d1 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -179,11 +179,40 @@ class Hooks { } } - + + /* + * @brief check if files can be encrypted to every user. + */ + public static function preShared($params) { + + $users = array(); + $view = new \OC\Files\View('/public-keys/'); + + switch ($params['shareType']) { + case \OCP\Share::SHARE_TYPE_USER: + $users[] = $params['shareWith']; + break; + case \OCP\Share::SHARE_TYPE_GROUP: + $users = \OC_Group::usersInGroup($params['shareWith']); + break; + } + + foreach ($users as $user) { + if (!$view->file_exists($user . '.public.key')) { + // Set flag var 'run' to notify emitting + // script that hook execution failed + $params['run']->run = false; + // TODO: Make sure files_sharing provides user + // feedback on failed share + break; + } + } + } + /** * @brief */ - public static function preShared( $params ) { + public static function postShared($params) { // NOTE: $params has keys: // [itemType] => file @@ -203,29 +232,28 @@ class Hooks { // [token] => // [run] => whether emitting script should continue to run // TODO: Should other kinds of item be encrypted too? - - if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { - $view = new \OC_FilesystemView( '/' ); + if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { + + $view = new \OC_FilesystemView('/'); $session = new Session($view); $userId = \OCP\User::getUser(); $util = new Util($view, $userId); - $path = $util->fileIdToPath( $params['itemSource'] ); + $path = $util->fileIdToPath($params['itemSource']); //if parent is set, then this is a re-share action - if( $params['parent'] ) { + if ($params['parent']) { // get the parent from current share - $parent = $util->getShareParent( $params['parent'] ); + $parent = $util->getShareParent($params['parent']); // if parent is file the it is an 1:1 share - if($parent['item_type'] === 'file') { - - // prefix path with Shared - $path = '/Shared'.$parent['file_target']; + if ($parent['item_type'] === 'file') { + // prefix path with Shared + $path = '/Shared' . $parent['file_target']; } else { - + // NOTE: parent is folder but shared was a file! // we try to rebuild the missing path // some examples we face here @@ -237,38 +265,29 @@ class Hooks { // so our path should be // /Shared/subfolder1/subsubfolder1/somefile.txt // while user3 is sharing - - if ( $params['itemType'] === 'file' ) { + + if ($params['itemType'] === 'file') { // get target path - $targetPath = $util->fileIdToPath( $params['fileSource'] ); - $targetPathSplit = array_reverse( explode( '/', $targetPath ) ); + $targetPath = $util->fileIdToPath($params['fileSource']); + $targetPathSplit = array_reverse(explode('/', $targetPath)); // init values $path = ''; - $sharedPart = ltrim( $parent['file_target'], '/' ); + $sharedPart = ltrim($parent['file_target'], '/'); // rebuild path - foreach ( $targetPathSplit as $pathPart ) { - - if ( $pathPart !== $sharedPart ) { - + foreach ($targetPathSplit as $pathPart) { + if ($pathPart !== $sharedPart) { $path = '/' . $pathPart . $path; - } else { - break; - } - } - // prefix path with Shared - $path = '/Shared'.$parent['file_target'].$path; - + $path = '/Shared' . $parent['file_target'] . $path; } else { - // prefix path with Shared - $path = '/Shared'.$parent['file_target'].$params['fileTarget']; + $path = '/Shared' . $parent['file_target'] . $params['fileTarget']; } } } @@ -276,52 +295,15 @@ class Hooks { $sharingEnabled = \OCP\Share::isEnabled(); // if a folder was shared, get a list if all (sub-)folders - if ( $params['itemType'] === 'folder' ) { - - $allFiles = $util->getAllFiles( $path ); - + if ($params['itemType'] === 'folder') { + $allFiles = $util->getAllFiles($path); } else { - - $allFiles = array( $path ); - + $allFiles = array($path); } - - // Set array for collecting paths which can't be shared - $failed = array(); - foreach ( $allFiles as $path ) { - - $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path ); - - // check if we share to a group - if($params['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) { - $usersSharing[] = reset(\OC_Group::usersInGroup($params['shareWith'])); - // check if we share with link - } else if($params['shareType'] === \OCP\Share::SHARE_TYPE_LINK) { - $usersSharing[] = 'owncloud'; - } else { - // Because this is a pre_share hook, the user - // being shared to is not yet included; add them - $usersSharing[] = $params['shareWith']; - } - - - // Attempt to set shareKey - if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) { - - $failed[] = $path; - } - } - - // If some attempts to set keyfiles failed - if ( ! empty( $failed ) ) { - - // Set flag var 'run' to notify emitting - // script that hook execution failed - $params['run']->run = false; - // TODO: Make sure files_sharing provides user - // feedback on failed share - + foreach ($allFiles as $path) { + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path); + $util->setSharedFileKeyfiles( $session, $usersSharing, $path ); } } } diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index b294a71ec1..9b8d9ffc5b 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -35,6 +35,7 @@ class Helper { public static function registerShareHooks() { \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); + \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); \OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 3f8b857125..36d05d7e0f 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -164,45 +164,7 @@ class Proxy extends \OC_FileProxy { return true; } - - public function postFile_put_contents( $path, $length ) { - - $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); - - // Check if recoveryAdmin is enabled for system and user - // TODO: Consider storing recoveryAdmin status for user in session - if ( - \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) - && $util->recoveryEnabledForUser() - ) { - - // Get owner UID and filepath - list( $owner, $ownerPath ) = $util->getUidAndFilename( $path ); - $recoveryAdminUid = \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); - $usersSharing = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); - - // Check if file is already shared to recoveryAdmin - if ( ! in_array( $recoveryAdminUid, $usersSharing ) ) { - - $relPath = $util->stripFilesPath( $path ); - - // Get file info from filecache - $fileInfo = \OC\Files\Filesystem::getFileInfo( $path ); - - // Register share to recoveryAdmin with share API - // FIXME: Some of these vars aren't set - // FIXME: What should the permission number be to grant all rights? -// \OCP\Share::shareItem( $itemType, $itemSource, 0, $recoveryAdminUid, 17 ); - - } - - } - - } - /** * @param string $path Path of file from which has been read * @param string $data Data that has been read from file From d1e2e47592515264bf06fc0d48645e430cddc394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 13 May 2013 15:15:35 +0200 Subject: [PATCH 182/575] generate random key name for share key to avoid name conflicts --- apps/files_encryption/hooks/hooks.php | 4 +- apps/files_encryption/lib/session.php | 45 +++++++++++-------- apps/files_encryption/lib/util.php | 9 +++- lib/public/share.php | 65 ++++++++++++++------------- 4 files changed, 69 insertions(+), 54 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e3890ce1d1..676507b523 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -365,9 +365,9 @@ class Hooks { $userIds = \OC_Group::usersInGroup($params['shareWith']); - } else { + } else if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_LINK ){ - $userIds = array( $params['shareWith'] ); + $userIds = array( $util->getPublicShareKeyId() ); } diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 22453131db..920f0b6a9a 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -45,10 +45,17 @@ class Session { $this->view->mkdir( 'owncloud_private_key' ); } + + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + + if ($publicShareKeyId === null) { + $publicShareKeyId = substr(md5(time()),0,8); + \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); + } if ( - ! $this->view->file_exists( "/public-keys/owncloud.public.key" ) - || ! $this->view->file_exists( "/owncloud_private_key/owncloud.private.key" ) + ! $this->view->file_exists( "/public-keys/".$publicShareKeyId.".public.key" ) + || ! $this->view->file_exists( "/owncloud_private_key/".$publicShareKeyId.".private.key" ) ) { //FIXME: Bug: for some reason file_exists is returning @@ -57,23 +64,23 @@ class Session { // our app.php is being executed 18 times per page load // , causing 18 new keypairs and huge performance hit. -// $keypair = Crypt::createKeypair(); -// -// \OC_FileProxy::$enabled = false; -// -// // Save public key -// -// if (!$view->is_dir('/public-keys')) { -// $view->mkdir('/public-keys'); -// } -// -// $this->view->file_put_contents( '/public-keys/owncloud.public.key', $keypair['publicKey'] ); -// -// // Encrypt private key empthy passphrase -// $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); -// -// // Save private key -// $this->view->file_put_contents( '/owncloud_private_key/owncloud.private.key', $encryptedPrivateKey ); + $keypair = Crypt::createKeypair(); + + \OC_FileProxy::$enabled = false; + + // Save public key + + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); + } + + $this->view->file_put_contents( '/public-keys/'.$publicShareKeyId.'.public.key', $keypair['publicKey'] ); + + // Encrypt private key empthy passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); + + // Save private key + $this->view->file_put_contents( '/owncloud_private_key/'.$publicShareKeyId.'.private.key', $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index ae8c7ffd57..8162ae0a36 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -108,6 +108,7 @@ class Util { private $shareKeysPath; // Dir containing env keys for shared files private $publicKeyPath; // Path to user's public key private $privateKeyPath; // Path to user's private key + private $publicShareKeyId; public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { @@ -123,7 +124,7 @@ class Util { $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - + $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); } public function ready() { @@ -211,6 +212,10 @@ class Util { return true; } + + public function getPublicShareKeyId() { + return $this->publicShareKeyId; + } /** * @brief Check whether pwd recovery is enabled for a given user @@ -792,7 +797,7 @@ class Util { // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) if ( - $user == 'owncloud' + $user == $this->publicShareKeyId or $util->ready() ) { diff --git a/lib/public/share.php b/lib/public/share.php index 418c0028ee..b9cf05bbf7 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -133,17 +133,17 @@ class Share { * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $path, $user, $includeOwner = false, $removeDuplicates = true ) { + public static function getUsersSharingFile($path, $user, $includeOwner = false, $removeDuplicates = true) { $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); $path = ''; $shares = array(); - $view = new \OC\Files\View('/'.$user.'/files/'); + $view = new \OC\Files\View('/' . $user . '/files/'); foreach ($path_parts as $p) { - $path .= '/'.$p; + $path .= '/' . $p; $meta = $view->getFileInfo(\OC_Filesystem::normalizePath($path)); $source = $meta['fileid']; - + // Fetch all shares of this file path from DB $query = \OC_DB::prepare( 'SELECT share_with @@ -152,14 +152,14 @@ class Share { WHERE item_source = ? AND share_type = ?' ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_USER ) ); - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + $result = $query->execute(array($source, self::SHARE_TYPE_USER)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); } - while( $row = $result->fetchRow() ) { + while ($row = $result->fetchRow()) { $shares[] = $row['share_with']; } @@ -172,44 +172,47 @@ class Share { WHERE item_source = ? AND share_type = ?' ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP ) ); - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + $result = $query->execute(array($source, self::SHARE_TYPE_GROUP)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); } - while( $row = $result->fetchRow() ) { + while ($row = $result->fetchRow()) { $usersInGroup = \OC_Group::usersInGroup($row['share_with']); $shares = array_merge($shares, $usersInGroup); } - - //check for public link shares - $query = \OC_DB::prepare( - 'SELECT share_with + + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + + if ($publicShareKeyId) { + //check for public link shares + $query = \OC_DB::prepare( + 'SELECT share_with FROM `*PREFIX*share` WHERE item_source = ? AND share_type = ?' - ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_LINK ) ); - - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); - } - - if ($result->fetchRow()) { - $shares[] = "owncloud"; + ); + + $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + + if ($result->fetchRow()) { + $shares[] = $publicShareKeyId; + } } } // Include owner in list of users, if requested - if ( $includeOwner ) { + if ($includeOwner) { $shares[] = $user; } - - return array_unique($shares); + return array_unique($shares); } /** From 2f4ba9d1e8ca6406abb509ad82869cfb6aca40c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 13 May 2013 15:45:30 +0200 Subject: [PATCH 183/575] if file was shared to user than userIds is just the users Id --- apps/files_encryption/hooks/hooks.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 676507b523..71a0fc9268 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -362,13 +362,11 @@ class Hooks { // for group shares get a list of the group members if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP ) { - $userIds = \OC_Group::usersInGroup($params['shareWith']); - } else if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_LINK ){ - $userIds = array( $util->getPublicShareKeyId() ); - + } else { + $userIds = array( $params['shareWith'] ); } // if we unshare a folder we need a list of all (sub-)files From 71eed76dbef92363d5f6eeb423496c6b8dac0579 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Mon, 13 May 2013 11:17:08 -0400 Subject: [PATCH 184/575] Prevent backgroundScan() from looping if opendir() is failing for the same path --- lib/files/cache/scanner.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index 661bc48633..b99dea23cb 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -179,9 +179,11 @@ class Scanner { * walk over any folders that are not fully scanned yet and scan them */ public function backgroundScan() { - while (($path = $this->cache->getIncomplete()) !== false) { + $lastPath = null; + while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) { $this->scan($path); $this->cache->correctFolderSize($path); + $lastPath = $path; } } } From 517efdf952526ce0f0a03107874baca18742c49b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 13 May 2013 17:26:21 +0200 Subject: [PATCH 185/575] don't create a recovery user, only generate recovery key similar to the public link share key --- apps/files_encryption/ajax/adminrecovery.php | 122 ++++++++---------- apps/files_encryption/js/settings-admin.js | 9 +- apps/files_encryption/lib/session.php | 10 +- apps/files_encryption/lib/util.php | 4 +- .../templates/settings-admin.php | 17 +-- 5 files changed, 63 insertions(+), 99 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index c3c19943c0..6a056dc7b3 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -1,4 +1,5 @@ * This file is licensed under the Affero General Public License version 3 or later. @@ -6,87 +7,78 @@ * * @brief Script to handle admin settings for encrypted key recovery */ - use OCA\Encryption; \OCP\JSON::checkAdminUser(); -\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -$return = $doSetup = false; +$return = false; // Enable recoveryAdmin -if ( - isset( $_POST['adminEnableRecovery'] ) - && 1 == $_POST['adminEnableRecovery'] -// && isset( $_POST['recoveryPassword'] ) -// && ! empty ( $_POST['recoveryPassword'] ) + +if ( + isset($_POST['adminEnableRecovery']) + && 1 == $_POST['adminEnableRecovery'] ) { - // TODO: Let the admin set this themselves - $recoveryAdminUid = 'recoveryAdmin'; - - // If desired recoveryAdmin UID is already in use - if ( ! \OC_User::userExists( $recoveryAdminUid ) ) { - - // Create new recoveryAdmin user - \OC_User::createUser( $recoveryAdminUid, $_POST['recoveryPassword'] ); - - // Make recovery user an administrator - \OC_Group::addToGroup ( $recoveryAdminUid, 'admin' ); - - $doSetup = true; - - } else { - - // Get list of admin users - $admins = OC_Group::usersInGroup( 'admin' ); - - // If the existing recoveryAdmin UID is an admin - if ( in_array( $recoveryAdminUid, $admins ) ) { - - // The desired recoveryAdmi UID pre-exists and can be used - $doSetup = true; - - // If the recoveryAdmin UID exists but doesn't have admin rights - } else { - - $return = false; - + $view = new \OC\Files\View('/'); + + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + + if ($recoveryKeyId === null) { + $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); + } + + if (!$view->is_dir('/owncloud_private_key')) { + $view->mkdir('/owncloud_private_key'); + } + + if ( + (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") + || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) + && isset($_POST['recoveryPassword']) + && !empty($_POST['recoveryPassword']) + ) { + + $keypair = \OCA\Encryption\Crypt::createKeypair(); + + \OC_FileProxy::$enabled = false; + + // Save public key + + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); } - + + $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); + + // Encrypt private key empthy passphrase + $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $_POST['recoveryPassword']); + + // Save private key + $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); + + \OC_FileProxy::$enabled = true; + } - - // Setup recoveryAdmin user for encryption - if ( $doSetup ) { - - $view = new \OC_FilesystemView( '/' ); - $util = new \OCA\Encryption\Util( $view, $recoveryAdminUid ); - - // Ensure recoveryAdmin is ready for encryption (has usable keypair etc.) - $util->setupServerSide( $_POST['recoveryPassword'] ); - - // Store the UID in the DB - OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminUid', $recoveryAdminUid ); - - $return = true; - - } - + // Set recoveryAdmin as enabled - OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); + OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + + $return = true; // Disable recoveryAdmin -} elseif ( - isset( $_POST['adminEnableRecovery'] ) - && 0 == $_POST['adminEnableRecovery'] +} elseif ( + isset($_POST['adminEnableRecovery']) + && 0 == $_POST['adminEnableRecovery'] ) { - - // Set recoveryAdmin as enabled - OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 0 ); - - $return = true; + // Set recoveryAdmin as enabled + OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); + + $return = true; } // Return success or failure diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index 8e9c8c2230..9cdb7aca68 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -7,13 +7,6 @@ $(document).ready(function(){ - // Trigger ajax on filetype blacklist change - $('#encryption_blacklist').multiSelect({ - oncheck:blackListChange, - onuncheck:blackListChange, - createText:'...' - }); - // Trigger ajax on recoveryAdmin status change $( 'input:radio[name="adminEnableRecovery"]' ).change( function() { @@ -24,7 +17,7 @@ $(document).ready(function(){ if ( '' == recoveryPassword ) { // FIXME: add proper OC notification - alert( 'You must set a recovery account password first' ); + alert( 'You must set a recovery account password first' ); } else { diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 920f0b6a9a..5444d0215c 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -49,7 +49,7 @@ class Session { $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); if ($publicShareKeyId === null) { - $publicShareKeyId = substr(md5(time()),0,8); + $publicShareKeyId = 'pubShare_'.substr(md5(time()),0,8); \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); } @@ -57,13 +57,7 @@ class Session { ! $this->view->file_exists( "/public-keys/".$publicShareKeyId.".public.key" ) || ! $this->view->file_exists( "/owncloud_private_key/".$publicShareKeyId.".private.key" ) ) { - - //FIXME: Bug: for some reason file_exists is returning - // false in above if statement, and causing new keys - // to be generated on each page load. At last check - // our app.php is being executed 18 times per page load - // , causing 18 new keypairs and huge performance hit. - + $keypair = Crypt::createKeypair(); \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 8162ae0a36..732f5fece8 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -958,10 +958,10 @@ class Util { if ( $recoveryEnabled ) { // Find recoveryAdmin user ID - $recoveryAdminUid = \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminUid' ); + $recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // Add recoveryAdmin to list of users sharing - $userIds[] = $recoveryAdminUid; + $userIds[] = $recoveryKeyId; } diff --git a/apps/files_encryption/templates/settings-admin.php b/apps/files_encryption/templates/settings-admin.php index 863f1dfa9a..be7beecf69 100644 --- a/apps/files_encryption/templates/settings-admin.php +++ b/apps/files_encryption/templates/settings-admin.php @@ -4,25 +4,10 @@

t( 'Encryption' )); ?>
- - t( "Exclude the following file types from encryption:" )); ?> -
- -

- - t( "Enable encryption passwords recovery account (allow sharing to recovery account):" )); ?> + t( "Enable encryption passwords recovery key (allow sharing to recovery key):" )); ?>
-
- t( "To perform a recovery log in using the 'recoveryAdmin' account and the specified password" )); ?>
From aa3eb6bb5be9979c31f402201241cf127573541e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 13 May 2013 17:40:57 +0200 Subject: [PATCH 186/575] don't handle public share keys in lib/public/share.php but in apps/files_encryption/lib/util.php instead --- apps/files_encryption/lib/util.php | 9 ++++++++- lib/public/share.php | 27 ++++++++++++--------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 732f5fece8..2a64680599 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -109,6 +109,7 @@ class Util { private $publicKeyPath; // Path to user's public key private $privateKeyPath; // Path to user's private key private $publicShareKeyId; + private $recoveryKeyId; public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { @@ -125,6 +126,7 @@ class Util { $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); } public function ready() { @@ -798,6 +800,7 @@ class Util { // public system user 'ownCloud' (for public shares) if ( $user == $this->publicShareKeyId + or $user == $this->recoveryKeyId or $util->ready() ) { @@ -949,7 +952,11 @@ class Util { if ( $sharingEnabled ) { // Find out who, if anyone, is sharing the file - $userIds = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + $userIds = $result['users']; + if ( $result['public'] ) { + $userIds[] = $this->publicShareKeyId; + } } diff --git a/lib/public/share.php b/lib/public/share.php index b9cf05bbf7..10400e34c5 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -138,6 +138,7 @@ class Share { $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); $path = ''; $shares = array(); + $publicShare = false; $view = new \OC\Files\View('/' . $user . '/files/'); foreach ($path_parts as $p) { $path .= '/' . $p; @@ -184,27 +185,23 @@ class Share { $shares = array_merge($shares, $usersInGroup); } - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - - if ($publicShareKeyId) { - //check for public link shares - $query = \OC_DB::prepare( - 'SELECT share_with + //check for public link shares + $query = \OC_DB::prepare( + 'SELECT share_with FROM `*PREFIX*share` WHERE item_source = ? AND share_type = ?' - ); + ); - $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); + $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); - if (\OC_DB::isError($result)) { - \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } - if ($result->fetchRow()) { - $shares[] = $publicShareKeyId; - } + if ($result->fetchRow()) { + $publicShare = true; } } // Include owner in list of users, if requested @@ -212,7 +209,7 @@ class Share { $shares[] = $user; } - return array_unique($shares); + return array("users" => array_unique($shares), "public" => $publicShare); } /** From d92f6b887d99a24b2bda1503f328c698c682d60e Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 13 May 2013 21:22:59 +0200 Subject: [PATCH 187/575] removed var_dump --- apps/files_encryption/tests/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index d0a988f96b..efd3f03bc6 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -172,7 +172,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $files = $util->findEncFiles( '/', 'encrypted' ); - var_dump( $files ); + //var_dump( $files ); # TODO: Add more tests here to check that if any of the dirs are # then false will be returned. Use strict ordering? From 61ed347d26872bc62465be4df595da3391ea84bb Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 13 May 2013 21:24:59 +0200 Subject: [PATCH 188/575] added handling for public file access via files_sharing link --- apps/files_encryption/lib/keymanager.php | 2 +- apps/files_encryption/lib/session.php | 22 +++- apps/files_encryption/lib/stream.php | 16 +-- apps/files_encryption/lib/util.php | 144 +++++++++++++++-------- 4 files changed, 120 insertions(+), 64 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 6c2df6f840..8ee7820b16 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -455,7 +455,7 @@ class Keymanager { list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'; + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); if ( $view->file_exists( $shareKeyPath ) ) { $result = $view->file_get_contents( $shareKeyPath ); diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 5444d0215c..f02315f95d 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -59,9 +59,11 @@ class Session { ) { $keypair = Crypt::createKeypair(); - - \OC_FileProxy::$enabled = false; - + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + // Save public key if (!$view->is_dir('/public-keys')) { @@ -76,9 +78,21 @@ class Session { // Save private key $this->view->file_put_contents( '/owncloud_private_key/'.$publicShareKeyId.'.private.key', $encryptedPrivateKey ); - \OC_FileProxy::$enabled = true; + \OC_FileProxy::$enabled = $proxyStatus; } + + if(\OCP\USER::getUser() === false) { + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/'.$publicShareKeyId.'.private.key' ); + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); + $this->setPrivateKey($privateKey); + + \OC_FileProxy::$enabled = $proxyStatus; + } } /** diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 33b3255e2a..3149b460b6 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -72,20 +72,20 @@ class Stream { private $rootView; // a fsview object set to '/' public function stream_open( $path, $mode, $options, &$opened_path ) { - - $this->userId = \OCP\User::getUser(); - + if ( ! isset( $this->rootView ) ) { - $this->rootView = new \OC_FilesystemView( '/' ); - } - // Strip identifier text from path, this gives us the path relative to data//files - $this->relPath = str_replace( 'crypt://', '', $path ); + $util = new Util( $this->rootView, \OCP\USER::getUser()); + + $this->userId = $util->getUserId(); + + // Strip identifier text from path, this gives us the path relative to data//files + $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace( 'crypt://', '', $path )); // rawPath is relative to the data directory - $this->rawPath = $this->userId . '/files/' . $this->relPath; + $this->rawPath = $util->getUserFilesDir() . $this->relPath; if ( dirname( $this->rawPath ) == 'streams' diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2a64680599..213bbd1d21 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -110,23 +110,47 @@ class Util { private $privateKeyPath; // Path to user's private key private $publicShareKeyId; private $recoveryKeyId; + private $isPublic; public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { - + $this->view = $view; $this->userId = $userId; $this->client = $client; - $this->userDir = '/' . $this->userId; - $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? - $this->publicKeyDir = '/' . 'public-keys'; - $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; - $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; - $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + $this->isPublic = false; + + $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + + // if we are anonymous/public + if($this->userId === false) { + $this->userId = $this->publicShareKeyId; + + // only handle for files_sharing app + if($GLOBALS['app'] === 'files_sharing') { + $this->userDir = '/' . $GLOBALS['fileOwner']; + $this->fileFolderName = 'files'; + $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->publicKeyDir = '/' . 'public-keys'; + $this->encryptionDir = '/' . $GLOBALS['fileOwner'] . '/' . 'files_encryption'; + $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; + $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; + $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->isPublic = true; + } + + } else { + $this->userDir = '/' . $this->userId; + $this->fileFolderName = 'files'; + $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->publicKeyDir = '/' . 'public-keys'; + $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; + $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; + $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; + $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + } } public function ready() { @@ -1069,46 +1093,54 @@ class Util { $view = new \OC\Files\View($this->userFilesDir); $fileOwnerUid = $view->getOwner( $path ); - - // Check that UID is valid - if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { - - throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); - - } - // NOTE: Bah, this dependency should be elsewhere - \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); - - // If the file owner is the currently logged in user - if ( $fileOwnerUid == $this->userId ) { - - // Assume the path supplied is correct - $filename = $path; - - } else { - - $info = $view->getFileInfo( $path ); - $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); - - // Fetch real file path from DB - $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir - - } - - // Make path relative for use by $view - $relpath = \OC\Files\Filesystem::normalizePath($fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename); - - // Check that the filename we're using is working - if ( $this->view->file_exists( $relpath ) ) { - - return array ( $fileOwnerUid, $filename ); - - } else { - - return false; - - } + // handle public access + if($fileOwnerUid === false && $this->isPublic) { + $filename = $view->getPath( $GLOBALS['fileSource'] ); + $fileOwnerUid = $GLOBALS['fileOwner']; + + return array ( $fileOwnerUid, $filename ); + } else { + + // Check that UID is valid + if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { + throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); + } + + // NOTE: Bah, this dependency should be elsewhere + \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); + + // If the file owner is the currently logged in user + if ( $fileOwnerUid == $this->userId ) { + + // Assume the path supplied is correct + $filename = $path; + + } else { + + $info = $view->getFileInfo( $path ); + $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); + + // Fetch real file path from DB + $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir + + } + + // Make path relative for use by $view + $relpath = \OC\Files\Filesystem::normalizePath($fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename); + + // Check that the filename we're using is working + if ( $this->view->file_exists( $relpath ) ) { + + return array ( $fileOwnerUid, $filename ); + + } else { + + return false; + + } + } + } @@ -1233,4 +1265,14 @@ class Util { } + public function getUserId() + { + return $this->userId; + } + + public function getUserFilesDir() + { + return $this->userFilesDir; + } + } From b2d021b2a5a603505c6c0e607472ee4e91962afe Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 13 May 2013 22:34:11 +0200 Subject: [PATCH 189/575] added post_createUser hook --- apps/files_encryption/hooks/hooks.php | 30 ++++++++++++++++----------- apps/files_encryption/lib/helper.php | 20 ++++++++++++++++++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 71a0fc9268..ebaa9c5145 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -47,17 +47,11 @@ class Hooks { $view = new \OC_FilesystemView( '/' ); $util = new Util( $view, $params['uid'] ); - - // Check files_encryption infrastructure is ready for action - if ( ! $util->ready() ) { - - \OC_Log::write( 'Encryption library', 'User account "' . $params['uid'] . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); - - if(!$util->setupServerSide( $params['password'] )) { - return false; - } - } + // setup user, if user not ready force relogin + if(Helper::setupUser($util, $params['password']) === false) { + return false; + } \OC_FileProxy::$enabled = false; @@ -120,8 +114,20 @@ class Hooks { return true; } - - /** + + /** + * @brief setup encryption backend upon user created + * @note This method should never be called for users using client side encryption + */ + public static function postCreateUser( $params ) { + $view = new \OC_FilesystemView( '/' ); + + $util = new Util( $view, $params['uid'] ); + + Helper::setupUser($util, $params['password']); + } + + /** * @brief Change a user's encryption passphrase * @param array $params keys: uid, password */ diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 9b8d9ffc5b..3a5b2f78ce 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -48,6 +48,7 @@ class Helper { \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); \OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); + \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); } /** @@ -68,5 +69,24 @@ class Helper { \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); } + /** + * @brief setup user for files_encryption + * + * @param Util $util + * @param string $password + * @return bool + */ + public static function setupUser($util, $password) { + // Check files_encryption infrastructure is ready for action + if ( ! $util->ready() ) { + \OC_Log::write( 'Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); + + if(!$util->setupServerSide( $password )) { + return false; + } + } + + return true; + } } \ No newline at end of file From a4e9e2fc792f6300d93febd83a8b826c80bbcdc1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 13 May 2013 22:49:27 +0200 Subject: [PATCH 190/575] added post_deleteUser hook for cleanup public key --- apps/files_encryption/hooks/hooks.php | 19 +++++++++++++++++++ apps/files_encryption/lib/helper.php | 1 + 2 files changed, 20 insertions(+) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ebaa9c5145..134b038e7e 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -127,6 +127,25 @@ class Hooks { Helper::setupUser($util, $params['password']); } + /** + * @brief cleanup encryption backend upon user deleted + * @note This method should never be called for users using client side encryption + */ + public static function postDeleteUser( $params ) { + $view = new \OC_FilesystemView( '/' ); + + // cleanup public key + $publicKey = '/public-keys/' . $params['uid'] . '.public.key'; + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $view->unlink($publicKey); + + \OC_FileProxy::$enabled = $proxyStatus; + } + /** * @brief Change a user's encryption passphrase * @param array $params keys: uid, password diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 3a5b2f78ce..783cebeee5 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -49,6 +49,7 @@ class Helper { \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); \OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); + \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); } /** From 81ae4cb5d07c1a7bf40a283bdb7e52c33dc243c6 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 14 May 2013 00:00:20 +0200 Subject: [PATCH 191/575] added test for public shared file via link --- apps/files_encryption/lib/util.php | 2 +- apps/files_encryption/tests/share.php | 88 ++++++++++++++++++++++++--- 2 files changed, 79 insertions(+), 11 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 213bbd1d21..8f20481db6 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1096,7 +1096,7 @@ class Util { // handle public access if($fileOwnerUid === false && $this->isPublic) { - $filename = $view->getPath( $GLOBALS['fileSource'] ); + $filename = $this->fileIdToPath( $GLOBALS['fileSource'] ); $fileOwnerUid = $GLOBALS['fileOwner']; return array ( $fileOwnerUid, $filename ); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index ca7209e1af..850985c9f9 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -136,10 +136,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user1'); // get file contents - $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retreivedCryptedFile); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup if ($withTeardown) { @@ -184,10 +184,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user2'); // get file contents - $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); // check if data is the same as previously written - $this->assertEquals($this->dataShort, $retreivedCryptedFile); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup if ($withTeardown) { @@ -260,10 +260,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user1'); // get file contents - $retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals($this->dataShort, $retreivedCryptedFile); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup if ($withTeardown) { @@ -320,10 +320,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user2'); // get file contents - $retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals($this->dataShort, $retreivedCryptedFile); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // get the file info $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); @@ -344,10 +344,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user3'); // get file contents - $retreivedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); // check if data is the same - $this->assertEquals($this->dataShort, $retreivedCryptedFile); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup if ($withTeardown) { @@ -387,6 +387,74 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase } } + function testPublicShareFile() + { + // login as admin + $this->loginHelper('admin'); + + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); + + // check if the unencrypted file size is stored + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, false); + + // login as admin + $this->loginHelper('admin'); + + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + + // check if share key for public exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + + // some hacking to simulate public link + $GLOBALS['app'] = 'files_sharing'; + $GLOBALS['fileOwner'] = 'admin'; + $GLOBALS['fileSource'] = $fileInfo['fileid']; + \OC_User::setUserId(''); + + // get file contents + $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); + + // check if data is the same as we previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile); + + // tear down + + // login as admin + $this->loginHelper('admin'); + + // unshare the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + } + function loginHelper($user, $create = false) { if ($create) { From 517105660d334b21b2e4b83d4c00704d9a5d275d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 14 May 2013 20:11:07 +0200 Subject: [PATCH 192/575] fix for public link share --- apps/files_encryption/lib/util.php | 2 +- apps/files_encryption/tests/share.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 8f20481db6..0233804160 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1096,7 +1096,7 @@ class Util { // handle public access if($fileOwnerUid === false && $this->isPublic) { - $filename = $this->fileIdToPath( $GLOBALS['fileSource'] ); + $filename = $path; $fileOwnerUid = $GLOBALS['fileOwner']; return array ( $fileOwnerUid, $filename ); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 850985c9f9..b8433821d3 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -428,7 +428,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // some hacking to simulate public link $GLOBALS['app'] = 'files_sharing'; $GLOBALS['fileOwner'] = 'admin'; - $GLOBALS['fileSource'] = $fileInfo['fileid']; \OC_User::setUserId(''); // get file contents From 84c56a5d56eddfb9e5d0356575902253eb266da1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 14 May 2013 21:29:24 +0200 Subject: [PATCH 193/575] fix for zero size files --- apps/files_encryption/lib/stream.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 3149b460b6..db7d2ad617 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -477,9 +477,9 @@ class Stream { if ( $this->meta['mode']!='r' - and $this->meta['mode']!='rb' + and $this->meta['mode']!='rb' + and $this->size > 0 ) { - // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; From 0a7aa6e8cdbf96c3a54ea0a897eb5dfb8cd37c01 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 14 May 2013 22:32:39 +0200 Subject: [PATCH 194/575] fix for Allowed memory size of xx bytes exhausted while reading big files --- apps/files_encryption/lib/util.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 0233804160..19c9cd72a1 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -480,13 +480,20 @@ class Util { */ public function isEncryptedPath( $path ) { - // Disable encryption proxy so data retreived is in its + // Disable encryption proxy so data retrieved is in its // original form + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - - $data = $this->view->file_get_contents( $path ); - - \OC_FileProxy::$enabled = true; + + // we only need 24 byte from the last chunk + $data = ''; + $handle = $this->view->fopen( $path, 'r' ); + if(!fseek($handle, -24, SEEK_END)) { + $data = fgets($handle); + } + + // re-enable proxy + \OC_FileProxy::$enabled = $proxyStatus; return Crypt::isCatfileContent( $data ); From 87760007549cb1573a431784ace24ffa300d8d90 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 14 May 2013 23:19:16 +0200 Subject: [PATCH 195/575] fix for move file to an empty folder --- apps/files_encryption/hooks/hooks.php | 28 ++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 134b038e7e..31175d1c34 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -462,8 +462,8 @@ class Hooks { $util = new Util( $view, $userId ); // Format paths to be relative to user files dir - $oldKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']; - $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']; + $oldKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']); + $newKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']); // add key ext if this is not an folder if (!$view->is_dir($oldKeyfilePath)) { @@ -474,19 +474,37 @@ class Hooks { $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$params['oldpath']); $matches = glob(preg_quote($localKeyPath).'*.shareKey'); foreach ($matches as $src) { - $dst = str_replace($params['oldpath'], $params['newpath'], $src); + $dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src)); + + // create destination folder if not exists + if(!file_exists(dirname($dst))) { + mkdir(dirname($dst), 0750, true); + } + rename($src, $dst); } } else { // handle share-keys folders - $oldShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']; - $newShareKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']; + $oldShareKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']); + $newShareKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']); + + // create destination folder if not exists + if(!$view->file_exists(dirname($newShareKeyfilePath))) { + $view->mkdir(dirname($newShareKeyfilePath), 0750, true); + } + $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); } // Rename keyfile so it isn't orphaned if($view->file_exists($oldKeyfilePath)) { + + // create destination folder if not exists + if(!$view->file_exists(dirname($newKeyfilePath))) { + $view->mkdir(dirname($newKeyfilePath), 0750, true); + } + $view->rename($oldKeyfilePath, $newKeyfilePath); } From 791751b5299b59a0c8bc5bc5dbdaf1528543d1c1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 02:32:27 +0200 Subject: [PATCH 196/575] added setter for filesystem view this is needed because there is no possibility to set $defaultInstance to false after filesystem::init --- lib/files/filesystem.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index c0e9d215fb..df904e1f27 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -210,7 +210,7 @@ class Filesystem { return true; } - /** + /** * Initialize system and personal mount points for a user * * @param string $user @@ -306,6 +306,14 @@ class Filesystem { return self::$defaultInstance; } + /** + * set the default filesystem view + * + */ + static public function setView($view) { + self::$defaultInstance = $view; + } + /** * tear down the filesystem, removing all storage providers */ From ddedf201062c99f4dfce64b2dde8c912d8305491 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 02:34:36 +0200 Subject: [PATCH 197/575] prevent of infinite loop with FileProxy --- apps/files_encryption/lib/stream.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index db7d2ad617..ab96783508 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -509,15 +509,15 @@ class Stream { // Save the sharekeys Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; - // get file info $fileInfo = $view->getFileInfo($this->rawPath); if(!is_array($fileInfo)) { $fileInfo = array(); } + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; + // set encryption data $fileInfo['encrypted'] = true; $fileInfo['size'] = $this->size; From 499fe6ca8e28d559ad8aba7724766c111c65290a Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 02:36:23 +0200 Subject: [PATCH 198/575] disabled FileProxy in Keymanager::getPrivateKey --- apps/files_encryption/lib/keymanager.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 8ee7820b16..74462a0d1e 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -38,9 +38,14 @@ class Keymanager { public static function getPrivateKey( \OC_FilesystemView $view, $user ) { $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; - + + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + $key = $view->file_get_contents( $path ); - + + \OC_FileProxy::$enabled = $proxyStatus; + return $key; } From 7461e9c2b5bdabd0b712f91a22445a0d933cf88f Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 02:38:08 +0200 Subject: [PATCH 199/575] improved tests and added new tests for file rename and move --- apps/files_encryption/tests/crypt.php | 105 +++++++++++++++++---- apps/files_encryption/tests/keymanager.php | 25 +++-- apps/files_encryption/tests/share.php | 1 + apps/files_encryption/tests/util.php | 18 +++- 4 files changed, 117 insertions(+), 32 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index b2dea2f653..de7ae38b17 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -35,6 +35,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend + \OC_User::clearBackends(); \OC_User::useBackend('database'); // set content for encrypting / decrypting in tests @@ -58,17 +59,26 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $userHome = \OC_User::getHome($this->userId); $this->dataDir = str_replace('/'.$this->userId, '', $userHome); - \OC\Files\Filesystem::init($this->userId, '/'); - \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::setView(false); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); $params['uid'] = $this->userId; $params['password'] = $this->pass; OCA\Encryption\Hooks::login($params); + } function tearDown() { - } + } function testGenerateKey() { @@ -272,7 +282,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataShort, $manualDecrypt ); // Teardown - $this->view->unlink( $filename ); + $this->view->unlink( $this->userId . '/files/' . $filename ); Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } @@ -350,7 +360,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Teardown - $this->view->unlink( $filename ); + $this->view->unlink( $this->userId . '/files/' . $filename ); Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); @@ -368,15 +378,14 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); - - - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); - - $decrypt = file_get_contents( 'crypt://' . $filename ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $filename ); $this->assertEquals( $this->dataShort, $decrypt ); - + + // tear down + $this->view->unlink( $this->userId . '/files/' . $filename ); } function testSymmetricStreamDecryptLongFileContent() { @@ -388,15 +397,14 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); - - - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); - + + // Get file decrypted contents $decrypt = file_get_contents( 'crypt://' . $filename ); - + $this->assertEquals( $this->dataLong, $decrypt ); - + + // tear down + $this->view->unlink( $this->userId . '/files/' . $filename ); } // Is this test still necessary? @@ -623,6 +631,65 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { } + function testRenameFile() { + + $filename = 'tmp-'.time(); + + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $filename ); + + $this->assertEquals( $this->dataLong, $decrypt ); + + $newFilename = 'tmp-new-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->rename( $filename, $newFilename ); + + // Get file decrypted contents + $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); + + $this->assertEquals( $this->dataLong, $newDecrypt ); + + // tear down + $view->unlink( $newFilename ); + } + + function testMoveFileIntoFolder() { + + $filename = 'tmp-'.time(); + + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $filename ); + + $this->assertEquals( $this->dataLong, $decrypt ); + + $newFolder = '/newfolder1'; + $newFilename = 'tmp-new-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->mkdir($newFolder); + $view->rename( $filename, $newFolder . '/' . $newFilename ); + + // Get file decrypted contents + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); + + $this->assertEquals( $this->dataLong, $newDecrypt ); + + // tear down + $view->unlink( $newFolder . '/' . $newFilename ); + $view->unlink( $newFolder ); + } + // function testEncryption(){ // // $key=uniqid(); diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 3acc781a09..d24dcaa036 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -26,6 +26,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend + \OC_User::clearBackends(); \OC_User::useBackend('database'); \OC_FileProxy::$enabled = false; @@ -41,18 +42,26 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - - $this->view = new \OC_FilesystemView( '/' ); - - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + + $this->view = new \OC_FilesystemView( '/' ); + + \OC_User::setUserId( 'admin' ); + $this->userId = 'admin'; + $this->pass = 'admin'; $userHome = \OC_User::getHome($this->userId); $this->dataDir = str_replace('/'.$this->userId, '', $userHome); - \OC\Files\Filesystem::init( $this->userId, '/' ); - \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::setView(false); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); $params['uid'] = $this->userId; $params['password'] = $this->pass; diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index b8433821d3..e2e26aa75b 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -462,6 +462,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase \OC_Util::tearDownFS(); \OC_User::setUserId(''); + \OC\Files\Filesystem::setView(false); \OC_Util::setupFS($user); \OC_User::setUserId($user); diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index efd3f03bc6..2abf409690 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -51,14 +51,22 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - - $this->view = new \OC_FilesystemView( '/' ); + + $this->view = new \OC_FilesystemView( '/' ); $userHome = \OC_User::getHome($this->userId); $this->dataDir = str_replace('/'.$this->userId, '', $userHome); - \OC\Files\Filesystem::init( $this->userId, '/' ); - \OC\Files\Filesystem::mount( 'OC_Filestorage_Local', array('datadir' => $this->dataDir), '/' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::setView(false); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); $params['uid'] = $this->userId; $params['password'] = $this->pass; @@ -170,7 +178,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $util = new Encryption\Util( $this->view, $this->userId ); - $files = $util->findEncFiles( '/', 'encrypted' ); + $files = $util->findEncFiles( '/'.$this->userId.'/'); //var_dump( $files ); From 807740a07a5385b0761aa23128f859a203e8b71a Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 10:19:38 +0200 Subject: [PATCH 200/575] fix for losing mount point "/" --- lib/files/filesystem.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index eadd8a93fa..d60d430d77 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -222,7 +222,10 @@ class Filesystem { return false; } self::$defaultInstance = new View($root); - self::$mounts = new Mount\Manager(); + + if(!self::$mounts) { + self::$mounts = new Mount\Manager(); + } //load custom mount config self::initMountPoints($user); From 751487ded7657c2cbc56717105c2891c7c967b42 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 10:20:19 +0200 Subject: [PATCH 201/575] merge changes for files_encryption --- lib/public/share.php | 82 +++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/lib/public/share.php b/lib/public/share.php index 29f9a1f095..0d90ffb9b7 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -133,83 +133,83 @@ class Share { * @note $path needs to be relative to user data dir, e.g. 'file.txt' * not '/admin/data/file.txt' */ - public static function getUsersSharingFile( $path, $user, $includeOwner = false, $removeDuplicates = true ) { + public static function getUsersSharingFile($path, $user, $includeOwner = false, $removeDuplicates = true) { $path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR)); $path = ''; $shares = array(); - $view = new \OC\Files\View('/'.$user.'/files/'); + $publicShare = false; + $view = new \OC\Files\View('/' . $user . '/files/'); foreach ($path_parts as $p) { - $path .= '/'.$p; + $path .= '/' . $p; $meta = $view->getFileInfo(\OC_Filesystem::normalizePath($path)); $source = $meta['fileid']; - + // Fetch all shares of this file path from DB $query = \OC_DB::prepare( - 'SELECT share_with - FROM - `*PREFIX*share` - WHERE - item_source = ? AND share_type = ?' + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ?' ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_USER ) ); - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + $result = $query->execute(array($source, self::SHARE_TYPE_USER)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); } - while( $row = $result->fetchRow() ) { + while ($row = $result->fetchRow()) { $shares[] = $row['share_with']; } // We also need to take group shares into account $query = \OC_DB::prepare( - 'SELECT share_with - FROM - `*PREFIX*share` - WHERE - item_source = ? AND share_type = ?' + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ?' ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_GROUP ) ); - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + $result = $query->execute(array($source, self::SHARE_TYPE_GROUP)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); } - while( $row = $result->fetchRow() ) { + while ($row = $result->fetchRow()) { $usersInGroup = \OC_Group::usersInGroup($row['share_with']); $shares = array_merge($shares, $usersInGroup); } - + //check for public link shares $query = \OC_DB::prepare( - 'SELECT share_with - FROM - `*PREFIX*share` - WHERE - item_source = ? AND share_type = ?' + 'SELECT share_with + FROM + `*PREFIX*share` + WHERE + item_source = ? AND share_type = ?' ); - - $result = $query->execute( array( $source, self::SHARE_TYPE_LINK ) ); - - if ( \OC_DB::isError( $result ) ) { - \OC_Log::write( 'OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR ); + + $result = $query->execute(array($source, self::SHARE_TYPE_LINK)); + + if (\OC_DB::isError($result)) { + \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); } - + if ($result->fetchRow()) { - $shares[] = "owncloud"; + $publicShare = true; } } // Include owner in list of users, if requested - if ( $includeOwner ) { + if ($includeOwner) { $shares[] = $user; } - - return array_unique($shares); + return array("users" => array_unique($shares), "public" => $publicShare); } /** @@ -514,6 +514,7 @@ class Share { 'fileSource' => $item['file_source'], 'shareType' => $shareType, 'shareWith' => $shareWith, + 'itemParent' => $item['parent'], )); self::delete($item['id']); \OC_Hook::emit('OCP\Share', 'post_unshare', array( @@ -521,6 +522,7 @@ class Share { 'itemSource' => $itemSource, 'shareType' => $shareType, 'shareWith' => $shareWith, + 'itemParent' => $item['parent'], )); return true; } From 9b7f02f26736542a596d6e1dfb3b8cd9d1875395 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 10:20:52 +0200 Subject: [PATCH 202/575] removed FileProxy from test --- tests/lib/cache/file.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 5dcd326880..7da5a8b85c 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -31,12 +31,13 @@ class Test_Cache_File extends Test_Cache { //clear all proxies and hooks so we can do clean testing OC_FileProxy::clearProxies(); OC_Hook::clear('OC_Filesystem'); - + + //disabled atm //enable only the encryption hook if needed - if(OC_App::isEnabled('files_encryption')) { - OC_FileProxy::register(new OC_FileProxy_Encryption()); - } - + //if(OC_App::isEnabled('files_encryption')) { + // OC_FileProxy::register(new OC_FileProxy_Encryption()); + //} + //set up temporary storage \OC\Files\Filesystem::clearMounts(); \OC\Files\Filesystem::mount('\OC\Files\Storage\Temporary',array(),'/'); From 3d7534da7494e7e22cdffa880dc2158f0c6e4d25 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 10:21:56 +0200 Subject: [PATCH 203/575] improved files_encryption tests --- apps/files_encryption/tests/crypt.php | 2 +- apps/files_encryption/tests/keymanager.php | 2 +- apps/files_encryption/tests/share.php | 2 +- apps/files_encryption/tests/util.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index de7ae38b17..c694aa1140 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -66,7 +66,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { \OC_Util::tearDownFS(); \OC_User::setUserId(''); - \OC\Files\Filesystem::setView(false); + \OC\Files\Filesystem::tearDown(); \OC_Util::setupFS($this->userId); \OC_User::setUserId($this->userId); diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index d24dcaa036..d3078fdac9 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -59,7 +59,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC_Util::tearDownFS(); \OC_User::setUserId(''); - \OC\Files\Filesystem::setView(false); + \OC\Files\Filesystem::tearDown(); \OC_Util::setupFS($this->userId); \OC_User::setUserId($this->userId); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index e2e26aa75b..6962cadc44 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -462,7 +462,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase \OC_Util::tearDownFS(); \OC_User::setUserId(''); - \OC\Files\Filesystem::setView(false); + \OC\Files\Filesystem::tearDown(); \OC_Util::setupFS($user); \OC_User::setUserId($user); diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 2abf409690..1e4e39cc47 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -64,7 +64,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { \OC_Util::tearDownFS(); \OC_User::setUserId(''); - \OC\Files\Filesystem::setView(false); + \OC\Files\Filesystem::tearDown(); \OC_Util::setupFS($this->userId); \OC_User::setUserId($this->userId); From 137039d35a6be69f42f79bf2bd15d7041a815c3b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 10:52:23 +0200 Subject: [PATCH 204/575] workaround for blank page need an other solution --- apps/files_encryption/appinfo/app.php | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index b611eb798f..ec594fd19f 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -26,26 +26,26 @@ OCA\Encryption\Helper::registerFilesystemHooks(); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); -$view = new \OC\Files\View( '/' ); +$view = new OC_FilesystemView( '/' ); -$session = new OCA\Encryption\Session( $view ); - -if ( - ! $session->getPrivateKey( \OCP\USER::getUser() ) - && OCP\User::isLoggedIn() - && OCA\Encryption\Crypt::mode() == 'server' -) { - - // Force the user to log-in again if the encryption key isn't unlocked - // (happens when a user is logged in before the encryption app is - // enabled) - OCP\User::logout(); - - header( "Location: " . OC::$WEBROOT.'/' ); - - exit(); - -} +//$session = new \OCA\Encryption\Session( $view ); +// +//if ( +// ! $session->getPrivateKey( \OCP\USER::getUser() ) +// && OCP\User::isLoggedIn() +// && OCA\Encryption\Crypt::mode() == 'server' +//) { +// +// // Force the user to log-in again if the encryption key isn't unlocked +// // (happens when a user is logged in before the encryption app is +// // enabled) +// OCP\User::logout(); +// +// header( "Location: " . OC::$WEBROOT.'/' ); +// +// exit(); +// +//} // Register settings scripts OCP\App::registerAdmin( 'files_encryption', 'settings-admin' ); From d8ae2fa80d004a7c9de7e1c6d012a6c0b6a423aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 15 May 2013 11:42:22 +0200 Subject: [PATCH 205/575] only let the user change the recovery admin settings if a key passwords was entered. --- apps/files_encryption/js/settings-admin.js | 41 +++++++++---------- apps/files_encryption/settings-admin.php | 5 --- .../templates/settings-admin.php | 12 +++--- 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index 9cdb7aca68..2fffcf77b3 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -8,33 +8,32 @@ $(document).ready(function(){ // Trigger ajax on recoveryAdmin status change + var enabledStatus = $('#adminEnableRecovery').val(); + + $('input:password[name="recoveryPassword"]').keyup(function(event) { + var recoveryPassword = $( '#recoveryPassword' ).val(); + var checkedButton = $('input:radio[name="adminEnableRecovery"]:checked').val(); + var uncheckedValue = (1+parseInt(checkedButton)) % 2; + if (recoveryPassword != '' ) { + $('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').removeAttr("disabled"); + } else { + $('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').attr("disabled", "true"); + } + }); + $( 'input:radio[name="adminEnableRecovery"]' ).change( function() { var recoveryStatus = $( this ).val(); var recoveryPassword = $( '#recoveryPassword' ).val(); - - if ( '' == recoveryPassword ) { - - // FIXME: add proper OC notification - alert( 'You must set a recovery account password first' ); - - } else { - - $.post( - OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) - , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword } - , function( data ) { - alert( data ); - } - ); - - } + $.post( + OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) + , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword } + , function( data ) { + alert( data ); + } + ); } ); - function blackListChange(){ - var blackList=$( '#encryption_blacklist' ).val().join( ',' ); - OC.AppConfig.setValue( 'files_encryption', 'type_blacklist', blackList ); - } }) \ No newline at end of file diff --git a/apps/files_encryption/settings-admin.php b/apps/files_encryption/settings-admin.php index ae9a85643e..66efc58436 100644 --- a/apps/files_encryption/settings-admin.php +++ b/apps/files_encryption/settings-admin.php @@ -10,18 +10,13 @@ $tmpl = new OCP\Template( 'files_encryption', 'settings-admin' ); -$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); - // Check if an adminRecovery account is enabled for recovering files after lost pwd $view = new OC_FilesystemView( '' ); $recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); -$recoveryAdminUid = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminUid' ); -$tmpl->assign( 'blacklist', $blackList ); $tmpl->assign( 'encryption_mode', \OC_Appconfig::getValue( 'files_encryption', 'mode', 'none' ) ); $tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); -$tmpl->assign( 'recoveryAdminUid', $recoveryAdminUid ); \OCP\Util::addscript( 'files_encryption', 'settings-admin' ); \OCP\Util::addscript( 'core', 'multiselect' ); diff --git a/apps/files_encryption/templates/settings-admin.php b/apps/files_encryption/templates/settings-admin.php index be7beecf69..95c1b66681 100644 --- a/apps/files_encryption/templates/settings-admin.php +++ b/apps/files_encryption/templates/settings-admin.php @@ -9,16 +9,14 @@ t( "Enable encryption passwords recovery key (allow sharing to recovery key):" )); ?>

- - - -
- + + +
/> + /> t( "Enabled" )); ?>
@@ -26,7 +24,7 @@ type='radio' name='adminEnableRecovery' value='0' - /> + /> t( "Disabled" )); ?>

From 5b160edebba2a10de83b09a8010a811321dd6370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 15 May 2013 14:02:13 +0200 Subject: [PATCH 206/575] check if the user knows the correct recovery password before changing the recovery key settings --- .gitignore | 1 + apps/files_encryption/ajax/adminrecovery.php | 65 +++++++++++++++----- apps/files_encryption/hooks/hooks.php | 3 +- apps/files_encryption/js/settings-admin.js | 6 +- apps/files_encryption/lib/crypt.php | 10 ++- 5 files changed, 64 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index b57dd3d205..bc0c1d53a5 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,4 @@ data-autotest /tests/coverage* /tests/autoconfig* /tests/autotest* +/l10n/.tx/ \ No newline at end of file diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 6a056dc7b3..520c7156c8 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -15,17 +15,38 @@ use OCA\Encryption; $return = false; +function checkPassword($view, $password, $recoveryKeyId) { + $pathKey = '/owncloud_private_key/'. $recoveryKeyId . ".private.key"; + $pathControlData = '/control-file/controlfile.enc'; + + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $recoveryKey = $view->file_get_contents( $pathKey ); + + $decryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricDecryptFileContent($recoveryKey, $password); + + $controlData = $view->file_get_contents($pathControlData); + $decryptedControlData = \OCA\Encryption\Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); + + \OC_FileProxy::$enabled = $proxyStatus; + + if ($decryptedControlData === 'ownCloud') { + return true; + } else { + return false; + } +} + + // Enable recoveryAdmin -if ( - isset($_POST['adminEnableRecovery']) - && 1 == $_POST['adminEnableRecovery'] -) { +$recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + +if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ $view = new \OC\Files\View('/'); - $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); - if ($recoveryKeyId === null) { $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); @@ -38,8 +59,6 @@ if ( if ( (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) - && isset($_POST['recoveryPassword']) - && !empty($_POST['recoveryPassword']) ) { $keypair = \OCA\Encryption\Crypt::createKeypair(); @@ -60,25 +79,39 @@ if ( // Save private key $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); + // create control file which let us check later on if the entered password was correct. + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); + if (!$view->is_dir('/control-file')) { + $view->mkdir('/control-file'); + } + $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); + \OC_FileProxy::$enabled = true; + // Set recoveryAdmin as enabled + OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + + $return = true; + + } else { // get recovery key and check the password + $return = checkPassword($view, $_POST['recoveryPassword'] ,$recoveryKeyId); + if ($return) { + OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + } } - // Set recoveryAdmin as enabled - OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); - - $return = true; - // Disable recoveryAdmin } elseif ( isset($_POST['adminEnableRecovery']) && 0 == $_POST['adminEnableRecovery'] ) { + $view = new \OC\Files\View('/'); + $return = checkPassword($view, $_POST['recoveryPassword'], $recoveryKeyId); - // Set recoveryAdmin as enabled + if ($return) { + // Set recoveryAdmin as disabled OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); - - $return = true; + } } // Return success or failure diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 31175d1c34..ed254fd8d8 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -59,7 +59,8 @@ class Hooks { \OC_FileProxy::$enabled = true; - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); + //$privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, "helloworld" ); $session = new Session( $view ); diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index 2fffcf77b3..fa353901c3 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -25,12 +25,16 @@ $(document).ready(function(){ function() { var recoveryStatus = $( this ).val(); + var oldStatus = (1+parseInt(recoveryStatus)) % 2; var recoveryPassword = $( '#recoveryPassword' ).val(); $.post( OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword } , function( data ) { - alert( data ); + if (data.status == "error") { + alert("Couldn't switch recovery key mode, please check your recovery key password!"); + $('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]').attr("checked", "true"); + } } ); } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index f92930c2cb..5267ba81f5 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -217,7 +217,7 @@ class Crypt { * @returns decrypted file */ public static function decrypt( $encryptedContent, $iv, $passphrase ) { - + if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { return $plainContent; @@ -463,9 +463,13 @@ class Crypt { */ public static function keyDecrypt( $encryptedContent, $privatekey ) { - openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); + $result = @openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); - return $plainContent; + if ( $result ) { + return $plainContent; + } + + return $result; } From 1fbdc3ce8fc4c5430b9fd85a95e984a317c75778 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 14:32:50 +0200 Subject: [PATCH 207/575] fix for previous workaround --- apps/files_encryption/appinfo/app.php | 39 ++++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index ec594fd19f..e56d012fee 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -26,26 +26,27 @@ OCA\Encryption\Helper::registerFilesystemHooks(); stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); -$view = new OC_FilesystemView( '/' ); +// check if we are logged in +if (OCP\User::isLoggedIn()) { + $view = new OC_FilesystemView('/'); + $session = new \OCA\Encryption\Session($view); -//$session = new \OCA\Encryption\Session( $view ); -// -//if ( -// ! $session->getPrivateKey( \OCP\USER::getUser() ) -// && OCP\User::isLoggedIn() -// && OCA\Encryption\Crypt::mode() == 'server' -//) { -// -// // Force the user to log-in again if the encryption key isn't unlocked -// // (happens when a user is logged in before the encryption app is -// // enabled) -// OCP\User::logout(); -// -// header( "Location: " . OC::$WEBROOT.'/' ); -// -// exit(); -// -//} + // check if user has a private key + if ( + !$session->getPrivateKey(\OCP\USER::getUser()) + && OCA\Encryption\Crypt::mode() === 'server' + ) { + + // Force the user to log-in again if the encryption key isn't unlocked + // (happens when a user is logged in before the encryption app is + // enabled) + OCP\User::logout(); + + header("Location: " . OC::$WEBROOT . '/'); + + exit(); + } +} // Register settings scripts OCP\App::registerAdmin( 'files_encryption', 'settings-admin' ); From 63a790b415d0ad54f5d769976ff5c00f1c8df0eb Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 14:33:08 +0200 Subject: [PATCH 208/575] fix for broken tests --- apps/files_encryption/hooks/hooks.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index ed254fd8d8..16e9f9177d 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -52,16 +52,11 @@ class Hooks { if(Helper::setupUser($util, $params['password']) === false) { return false; } - - \OC_FileProxy::$enabled = false; - + $encryptedKey = Keymanager::getPrivateKey( $view, $params['uid'] ); - \OC_FileProxy::$enabled = true; - - //$privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, "helloworld" ); - + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); + $session = new Session( $view ); $session->setPrivateKey( $privateKey, $params['uid'] ); @@ -86,13 +81,9 @@ class Hooks { $session->setLegacyKey( $plainLegacyKey ); } - - \OC_FileProxy::$enabled = false; - + $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); - \OC_FileProxy::$enabled = false; - // Encrypt existing user files: // This serves to upgrade old versions of the encryption // app (see appinfo/spec.txt) From 64d94c540aeaba67e2f779b2551c72a80334aa3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 15 May 2013 16:12:20 +0200 Subject: [PATCH 209/575] enable admin to change the recovery password --- apps/files_encryption/ajax/adminrecovery.php | 31 ++-------- apps/files_encryption/js/settings-admin.js | 59 +++++++++++++++++++ apps/files_encryption/lib/util.php | 28 +++++++++ apps/files_encryption/settings-personal.php | 1 + .../templates/settings-admin.php | 27 ++++++++- 5 files changed, 118 insertions(+), 28 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 520c7156c8..0ab449709c 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -15,30 +15,6 @@ use OCA\Encryption; $return = false; -function checkPassword($view, $password, $recoveryKeyId) { - $pathKey = '/owncloud_private_key/'. $recoveryKeyId . ".private.key"; - $pathControlData = '/control-file/controlfile.enc'; - - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $recoveryKey = $view->file_get_contents( $pathKey ); - - $decryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricDecryptFileContent($recoveryKey, $password); - - $controlData = $view->file_get_contents($pathControlData); - $decryptedControlData = \OCA\Encryption\Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); - - \OC_FileProxy::$enabled = $proxyStatus; - - if ($decryptedControlData === 'ownCloud') { - return true; - } else { - return false; - } -} - - // Enable recoveryAdmin $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); @@ -94,7 +70,8 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ $return = true; } else { // get recovery key and check the password - $return = checkPassword($view, $_POST['recoveryPassword'] ,$recoveryKeyId); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); if ($return) { OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); } @@ -105,8 +82,8 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ isset($_POST['adminEnableRecovery']) && 0 == $_POST['adminEnableRecovery'] ) { - $view = new \OC\Files\View('/'); - $return = checkPassword($view, $_POST['recoveryPassword'], $recoveryKeyId); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); if ($return) { // Set recoveryAdmin as disabled diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index fa353901c3..9bc6ab6433 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -5,6 +5,27 @@ * See the COPYING-README file. */ +OC.msg={ + startSaving:function(selector){ + $(selector) + .html( t('settings', 'Saving...') ) + .removeClass('success') + .removeClass('error') + .stop(true, true) + .show(); + }, + finishedSaving:function(selector, data){ + if( data.status === "success" ){ + $(selector).html( data.data.message ) + .addClass('success') + .stop(true, true) + .delay(3000) + .fadeOut(900); + }else{ + $(selector).html( data.data.message ).addClass('error'); + } + } +}; $(document).ready(function(){ // Trigger ajax on recoveryAdmin status change @@ -34,10 +55,48 @@ $(document).ready(function(){ if (data.status == "error") { alert("Couldn't switch recovery key mode, please check your recovery key password!"); $('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]').attr("checked", "true"); + } else { + if (recoveryStatus == "0") { + $('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true"); + $('input:password[name="changeRecoveryPassword"]').attr("disabled", "true"); + $('input:password[name="changeRecoveryPassword"]').val(""); + } else { + $('input:password[name="changeRecoveryPassword"]').removeAttr("disabled"); + } } } ); } ); + + // change password + + $('input:password[name="changeRecoveryPassword"]').keyup(function(event) { + var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val(); + var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val(); + if (newRecoveryPassword != '' && oldRecoveryPassword != '' ) { + $('button:button[name="submitChangeRecoveryKey"]').removeAttr("disabled"); + } else { + $('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true"); + } + }); + + + $('button:button[name="submitChangeRecoveryKey"]').click(function() { + var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val(); + var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val(); + OC.msg.startSaving('#encryption .msg'); + $.post( + OC.filePath( 'files_encryption', 'ajax', 'changeRecoveryPassword.php' ) + , { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword } + , function( data ) { + if (data.status == "error") { + OC.msg.finishedSaving('#encryption .msg', data); + } else { + OC.msg.finishedSaving('#encryption .msg', data); + } + } + ); + }); }) \ No newline at end of file diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 19c9cd72a1..6cb4ccb808 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1282,4 +1282,32 @@ class Util { return $this->userFilesDir; } + public function checkRecoveryPassword($password) { + + $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; + $pathControlData = '/control-file/controlfile.enc'; + + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $recoveryKey = $this->view->file_get_contents($pathKey); + + $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent($recoveryKey, $password); + + $controlData = $this->view->file_get_contents($pathControlData); + $decryptedControlData = Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); + + \OC_FileProxy::$enabled = $proxyStatus; + + if ($decryptedControlData === 'ownCloud') { + return true; + } + + return false; + } + + public function getRecoveryKeyId() { + return $this->recoveryKeyId; + } + } diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index 46efb61b02..90edc0eae2 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -32,6 +32,7 @@ $recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdm $recoveryEnabledForUser = $util->recoveryEnabledForUser(); \OCP\Util::addscript( 'files_encryption', 'settings-personal' ); +\OCP\Util::addScript( 'settings', 'personal' ); $tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); $tmpl->assign( 'recoveryEnabledForUser', $recoveryEnabledForUser ); diff --git a/apps/files_encryption/templates/settings-admin.php b/apps/files_encryption/templates/settings-admin.php index 95c1b66681..18fea1845f 100644 --- a/apps/files_encryption/templates/settings-admin.php +++ b/apps/files_encryption/templates/settings-admin.php @@ -10,7 +10,7 @@

- +
/> t( "Disabled" )); ?>

+

+

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

+ /> + +
+ /> + +
+ + +

From 1a31dc036ac3ca30b266ce2715e0adee3d112299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 15 May 2013 16:14:54 +0200 Subject: [PATCH 210/575] added missing file to enable the admin to change the recovery key password --- .../ajax/changeRecoveryPassword.php | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 apps/files_encryption/ajax/changeRecoveryPassword.php diff --git a/apps/files_encryption/ajax/changeRecoveryPassword.php b/apps/files_encryption/ajax/changeRecoveryPassword.php new file mode 100644 index 0000000000..d990796a4f --- /dev/null +++ b/apps/files_encryption/ajax/changeRecoveryPassword.php @@ -0,0 +1,52 @@ + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to change recovery key password + * + */ + +use OCA\Encryption; + +\OCP\JSON::checkAdminUser(); +\OCP\JSON::checkAppEnabled('files_encryption'); +\OCP\JSON::callCheck(); + +$l=OC_L10N::get('core'); + +$return = false; + +$oldPassword = $_POST['oldPassword']; +$newPassword = $_POST['newPassword']; + +$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + +$result = $util->checkRecoveryPassword($oldPassword); + +if ($result) { + $keyId = $util->getRecoveryKeyId(); + $keyPath = '/owncloud_private_key/' . $keyId . ".private.key"; + $view = new \OC\Files\View('/'); + + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $encryptedRecoveryKey = $view->file_get_contents($keyPath); + $decryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricDecryptFileContent($encryptedRecoveryKey, $oldPassword); + $encryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword); + $view->file_put_contents($keyPath, $encryptedRecoveryKey); + + \OC_FileProxy::$enabled = $proxyStatus; + + $return = true; +} + +// success or failure +if ($return) { + \OCP\JSON::success(array("data" => array( "message" => $l->t('Password successfully changed.')))); +} else { + \OCP\JSON::error(array("data" => array( "message" => $l->t('Could not change the password. Maybe the old password was not correct.')))); +} \ No newline at end of file From 0916769f6764e2497f820419121599c3ce121e87 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 17:00:01 +0200 Subject: [PATCH 211/575] fix for SQLite3Result::fetchArray(): The SQLite3Result object has not been correctly initialised in post_addToGroup --- lib/public/share.php | 53 +++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/lib/public/share.php b/lib/public/share.php index 0d90ffb9b7..b2eeb29234 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1519,31 +1519,34 @@ class Share { } public static function post_addToGroup($arguments) { - // 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 (?,?,?,?,?,?,?,?,?,?,?)'); - 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']); - } - 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']); - } 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)); - \OC_DB::insertid('*PREFIX*share'); + + if(\OC_Config::getValue('installed')) { + // 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 (?,?,?,?,?,?,?,?,?,?,?)'); + 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']); + } + 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']); + } 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)); + \OC_DB::insertid('*PREFIX*share'); + } } } } From 57c0a7ed693fec6ef487b71a514202b24dd70df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 15 May 2013 17:56:45 +0200 Subject: [PATCH 212/575] add recovery key to all files if the user enabled the feature and removes them again on disable --- apps/files_encryption/ajax/userrecovery.php | 6 ++++ apps/files_encryption/lib/util.php | 34 +++++++++++++++++++ .../templates/settings-personal.php | 3 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index 85a799011d..1f42b376e4 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -24,6 +24,12 @@ if ( // Save recovery preference to DB $return = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); + + if ($_POST['userEnableRecovery'] == "1") { + $util->addRecoveryKeys(); + } else { + $util->removeRecoveryKeys(); + } } else { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 6cb4ccb808..6eee1ada8a 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1310,4 +1310,38 @@ class Util { return $this->recoveryKeyId; } + /** + * @brief add recovery key to all encrypted files + */ + public function addRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath.$path); + foreach ($dirContent as $item) { + $filePath = substr($item['path'], 25); + if ($item['type'] == 'dir') { + $this->addRecoveryKey($filePath.'/'); + } else { + $session = new Session(new \OC_FilesystemView('/')); + $sharingEnabled = \OCP\Share::isEnabled(); + $file = substr($filePath, 0, -4); + $usersSharing = $this->getSharingUsersArray($sharingEnabled, $file); + $this->setSharedFileKeyfiles( $session, $usersSharing, $file ); + } + } + } + + /** + * @brief remove recovery key to all encrypted files + */ + public function removeRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath.$path); + foreach ($dirContent as $item) { + $filePath = substr($item['path'], 25); + if ($item['type'] == 'dir') { + $this->removeRecoveryKeys($filePath.'/'); + } else { + $file = substr($filePath, 0, -4); + $this->view->unlink($this->shareKeysPath.'/'.$file.'.'.$this->recoveryKeyId.'.shareKey'); + } + } + } } diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 00f567ecb2..33989416d3 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -48,6 +48,7 @@


+ From 5fcb5f3aba90e24762d031ea4481ce65e34c018f Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 21:00:35 +0200 Subject: [PATCH 213/575] added test for password change --- apps/files_encryption/tests/crypt.php | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index c694aa1140..f84536aaa1 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -690,6 +690,40 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink( $newFolder ); } + function testChangePassphrase() { + + $filename = 'tmp-'.time(); + + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $filename ); + + $this->assertEquals( $this->dataLong, $decrypt ); + + // change password + \OC_User::setPassword('admin', 'test'); + + // relogin + $params['uid'] = $this->userId; + $params['password'] = 'test'; + OCA\Encryption\Hooks::login($params); + + // Get file decrypted contents + $newDecrypt = file_get_contents( 'crypt://' . $filename ); + + $this->assertEquals( $this->dataLong, $newDecrypt ); + + // tear down + // change password back + \OC_User::setPassword('admin', 'admin'); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->unlink( $filename ); + } // function testEncryption(){ // // $key=uniqid(); From ec2e193a4413fa2d02ab6d127b1697294330e2bf Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 21:01:03 +0200 Subject: [PATCH 214/575] removed unused code --- apps/files_encryption/hooks/hooks.php | 38 --------------------------- apps/files_encryption/lib/helper.php | 3 +-- 2 files changed, 1 insertion(+), 40 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 16e9f9177d..8f03087e56 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -169,33 +169,6 @@ class Hooks { } } - - /** - * @brief update the encryption key of the file uploaded by the client - */ - public static function updateKeyfile( $params ) { - - if ( Crypt::mode() == 'client' ) { - - if ( isset( $params['properties']['key'] ) ) { - - $view = new \OC_FilesystemView( '/' ); - $userId = \OCP\User::getUser(); - - Keymanager::setFileKey( $view, $params['path'], $userId, $params['properties']['key'] ); - - } else { - - \OC_Log::write( - 'Encryption library', "Client side encryption is enabled but the client doesn't provide a encryption key for the file!" - , \OC_Log::ERROR - ); - - } - - } - - } /* * @brief check if files can be encrypted to every user. @@ -426,17 +399,6 @@ class Hooks { } /** - * @brief - */ - public static function postUnshareAll( $params ) { - - // NOTE: It appears that this is never called for files, so - // we may not need to implement it - - } - - - /** * @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing * @param array with oldpath and newpath * diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 783cebeee5..6d5aae4e8b 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -37,7 +37,6 @@ class Helper { \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_unshareAll', 'OCA\Encryption\Hooks', 'postUnshareAll' ); } /** @@ -58,7 +57,7 @@ class Helper { */ public static function registerWebdavHooks() { - \OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfileFromClient' ); + } /** From b75a0abb6bee24b3f6e8276d129af3271a05e5d1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 15 May 2013 22:42:22 +0200 Subject: [PATCH 215/575] added test for rename folder --- apps/files_encryption/tests/crypt.php | 36 +++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index f84536aaa1..6168f69415 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -690,6 +690,38 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink( $newFolder ); } + function testRenameFolder() { + + $filename = '/tmp-'.time(); + + $folder = '/folder'; + $newFolder = '/newfolder'; + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->mkdir($folder); + + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + + $this->assertEquals( $this->dataLong, $decrypt ); + + // rename folder + $view->rename($folder, $newFolder); + + // Get file decrypted contents + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + + $this->assertEquals( $this->dataLong, $newDecrypt ); + + // tear down + $view->unlink( $newFolder ); + } + function testChangePassphrase() { $filename = 'tmp-'.time(); @@ -706,7 +738,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataLong, $decrypt ); // change password - \OC_User::setPassword('admin', 'test'); + \OC_User::setPassword($this->userId, 'test'); // relogin $params['uid'] = $this->userId; @@ -720,7 +752,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // tear down // change password back - \OC_User::setPassword('admin', 'admin'); + \OC_User::setPassword($this->userId, $this->pass); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->unlink( $filename ); } From f355d797ff1dc5f92d09acbee48f3d6ff9fb4ecc Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Thu, 16 May 2013 00:23:05 +0200 Subject: [PATCH 216/575] Port OC.dialogs to use octemplate except for prompt() and form(). Also load octemplate per default. --- core/css/styles.css | 3 + core/js/oc-dialogs.js | 340 +++++++++++++++++++-------------- core/templates/filepicker.html | 11 ++ core/templates/message.html | 3 + lib/base.php | 1 + 5 files changed, 217 insertions(+), 141 deletions(-) create mode 100644 core/templates/filepicker.html create mode 100644 core/templates/message.html diff --git a/core/css/styles.css b/core/css/styles.css index 93f2cecbfe..ee00196d66 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -385,10 +385,13 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin #dirup {width:4%;} #dirtree {width:92%;} #filelist {height:270px; overflow-y:auto; background-color:white; width:100%;} +#filelist img { margin: 2px 1em 0 4px; } +#filelist .date { float:right;margin-right:1em; } .filepicker_element_selected { background-color:lightblue;} .filepicker_loader {height:170px; width:100%; background-color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter:alpha(opacity=30); opacity:.3; visibility:visible; position:absolute; top:0; left:0; text-align:center; padding-top:150px;} .ui-dialog {position:fixed !important;} span.ui-icon {float: left; margin: 3px 7px 30px 0;} +.loading { background: url('../img/loading.gif') no-repeat center; cursor: wait; } /* ---- CATEGORIES ---- */ #categoryform .scrollarea { position:absolute; left:10px; top:10px; right:10px; bottom:50px; overflow:auto; border:1px solid #ddd; background:#f8f8f8; } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 990c3f8bf3..c0c035bafd 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -1,7 +1,7 @@ /** * ownCloud * - * @author Bartek Przybylski + * @author Bartek Przybylski,Christopher Schäpers, Thomas Tanghus * @copyright 2012 Bartek Przybylski bartek@alefzero.eu * * This library is free software; you can redistribute it and/or @@ -31,8 +31,7 @@ var OCdialogs = { * @param modal make the dialog modal */ alert:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays info dialog @@ -42,8 +41,7 @@ var OCdialogs = { * @param modal make the dialog modal */ info:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays confirmation dialog @@ -53,8 +51,7 @@ var OCdialogs = { * @param modal make the dialog modal */ confirm:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.YES_NO_BUTTONS, callback, modal); + OCdialogs.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); }, /** * prompt for user input @@ -66,7 +63,7 @@ var OCdialogs = { prompt:function(text, title, default_value, callback, modal) { var input = ''; var content = '

' + escapeHTML(text) + ':
' + input + '

'; - OCdialogs.message(content, title, OCdialogs.PROMPT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(content, title, 'prompt', OCdialogs.OK_BUTTON, callback, modal); }, /** * prompt user for input with custom form @@ -130,6 +127,39 @@ var OCdialogs = { }); OCdialogs.dialogs_counter++; }, + _getFilePickerTemplate: function() { + var defer = $.Deferred(); + if(!this.$filePickerTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) { + self.$filePickerTemplate = $(tmpl); + self.$listTmpl = self.$filePickerTemplate.find('#filelist li:first-child').detach(); + defer.resolve(self.$filePickerTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$filePickerTemplate); + } + return defer.promise(); + }, + _getMessageTemplate: function() { + var defer = $.Deferred(); + if(!this.$messageTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) { + self.$messageTemplate = $(tmpl); + defer.resolve(self.$messageTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$messageTemplate); + } + return defer.promise(); + }, /** * show a file picker to pick a file from * @param title dialog title @@ -139,132 +169,146 @@ var OCdialogs = { * @param modal make the dialog modal */ filepicker:function(title, callback, multiselect, mimetype_filter, modal) { - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_content = '
'; - var dialog_loader = '
'; - var dialog_div = '
' + dialog_content + dialog_loader + '
'; - if (modal === undefined) { modal = false }; - if (multiselect === undefined) { multiselect = false }; - if (mimetype_filter === undefined) { mimetype_filter = '' }; + $.when(this._getFilePickerTemplate()).then(function($tmpl) { + var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; + var dialog_id = '#' + dialog_name; + var $dlg = $tmpl.octemplate({ + dialog_name: dialog_name, + title: title + }).data('path', '/'); - $('body').append(dialog_div); + if (modal === undefined) { modal = false }; + if (multiselect === undefined) { multiselect = false }; + if (mimetype_filter === undefined) { mimetype_filter = '' }; - $(dialog_id).data('path', '/'); + $('body').append($dlg); - $(dialog_id + ' #dirtree').focus().change( {dcid: dialog_id}, OCdialogs.handleTreeListSelect ); - $(dialog_id + ' #dirup').click( {dcid: dialog_id}, OCdialogs.filepickerDirUp ); + $dlg.find('#dirtree').focus().change( {dcid: dialog_id}, OCdialogs.handleTreeListSelect ); + $dlg.find('#dirup').click( {dcid: dialog_id}, OCdialogs.filepickerDirUp ); - $(dialog_id).ready(function(){ - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), { mimetype: mimetype_filter } ,function(request) { - OCdialogs.fillFilePicker(request, dialog_id); - }); - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), { mimetype: "httpd/unix-directory" }, function(request) { - OCdialogs.fillTreeList(request, dialog_id); - }); - }).data('multiselect', multiselect).data('mimetype',mimetype_filter); + $dlg.find('#filelist').empty().addClass('loading'); + $dlg.ready(function(){ + $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), + {mimetype: mimetype_filter}, + function(response) { + OCdialogs.fillFilePicker(response, dialog_id); + }); + $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), + {mimetype: 'httpd/unix-directory'}, + function(response) { + OCdialogs.fillTreeList(response, dialog_id); + }); + }).data('multiselect', multiselect).data('mimetype',mimetype_filter); - // build buttons - var functionToCall = function() { - if (callback !== undefined) { - var datapath; - if (multiselect === true) { - datapath = []; - $(dialog_id + ' .filepicker_element_selected .filename').each(function(index, element) { - datapath.push( $(dialog_id).data('path') + $(element).text() ); - }); - } else { - var datapath = $(dialog_id).data('path'); - datapath += $(dialog_id+' .filepicker_element_selected .filename').text(); + // build buttons + var functionToCall = function() { + if (callback !== undefined) { + var datapath; + if (multiselect === true) { + datapath = []; + $(dialog_id + ' .filepicker_element_selected .filename').each(function(index, element) { + datapath.push( $(dialog_id).data('path') + $(element).text() ); + }); + } else { + var datapath = $(dialog_id).data('path'); + datapath += $(dialog_id+' .filepicker_element_selected .filename').text(); + } + callback(datapath); + $(dialog_id).dialog('close'); } - callback(datapath); - $(dialog_id).dialog('close'); - } - }; - var buttonlist = [{ - text: t('core', 'Choose'), - click: functionToCall - }, - { - text: t('core', 'Cancel'), - click: function(){$(dialog_id).dialog('close'); } - }]; + }; + var buttonlist = [{ + text: t('core', 'Choose'), + click: functionToCall + }, + { + text: t('core', 'Cancel'), + click: function(){$(dialog_id).dialog('close'); } + }]; - $(dialog_id).dialog({ - width: (4/9)*$(document).width(), - height: 420, - modal: modal, - buttons: buttonlist + $(dialog_id).dialog({ + width: (4/9)*$(document).width(), + height: 420, + modal: modal, + buttons: buttonlist + }); + OCdialogs.dialogs_counter++; + }) + .fail(function() { + alert(t('core', 'Error loading file picker template')); }); - OCdialogs.dialogs_counter++; }, /** * Displays raw dialog * You better use a wrapper instead ... */ message:function(content, title, dialog_type, buttons, callback, modal) { - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_div = '
' + content + '
'; - if (modal === undefined) { modal = false }; - $('body').append(dialog_div); - var buttonlist = []; - switch (buttons) { - case OCdialogs.YES_NO_BUTTONS: - buttonlist = [{ - text: t('core', 'Yes'), - click: function(){ - if (callback !== undefined) { callback(true) }; - $(dialog_id).dialog('close'); - } - }, - { - text: t('core', 'No'), - click: function(){ - if (callback !== undefined) { callback(false) }; - $(dialog_id).dialog('close'); - } - }]; - break; - case OCdialogs.OK_BUTTON: - var functionToCall; - switch(dialog_type) { - case OCdialogs.ALERT_DIALOG: - functionToCall = function() { + $.when(this._getMessageTemplate()).then(function($tmpl) { + var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; + var dialog_id = '#' + dialog_name; + var $dlg = $tmpl.octemplate({ + dialog_name: dialog_name, + title: title, + message: content, + type: dialog_type + }); + if (modal === undefined) { modal = false }; + $('body').append($dlg); + var buttonlist = []; + switch (buttons) { + case OCdialogs.YES_NO_BUTTONS: + buttonlist = [{ + text: t('core', 'Yes'), + click: function(){ + if (callback !== undefined) { callback(true) }; $(dialog_id).dialog('close'); - if(callback !== undefined) { callback() }; - }; - break; - case OCdialogs.PROMPT_DIALOG: - buttonlist[1] = { - text: t('core', 'Cancel'), - click: function() { $(dialog_id).dialog('close'); } - }; - functionToCall = function() { OCdialogs.prompt_ok_handler(callback, dialog_id); }; - break; - } - buttonlist[0] = { - text: t('core', 'Ok'), - click: functionToCall - }; - break; - }; + } + }, + { + text: t('core', 'No'), + click: function(){ + if (callback !== undefined) { callback(false) }; + $(dialog_id).dialog('close'); + } + }]; + break; + case OCdialogs.OK_BUTTON: + var functionToCall; + switch(dialog_type) { + case 'prompt': + buttonlist[1] = { + text: t('core', 'Cancel'), + click: function() { $(dialog_id).dialog('close'); } + }; + functionToCall = function() { OCdialogs.prompt_ok_handler(callback, dialog_id); }; + break; + default: + functionToCall = function() { + $(dialog_id).dialog('close'); + if(callback !== undefined) { callback() }; + }; + break; + } + buttonlist[0] = { + text: t('core', 'Ok'), + click: functionToCall + }; + break; + }; - $(dialog_id).dialog({ - width: (4/9) * $(document).width(), - height: 180, - modal: modal, - buttons: buttonlist + $(dialog_id).dialog({ + modal: modal, + buttons: buttonlist + }); + OCdialogs.dialogs_counter++; + }) + .fail(function() { + alert(t('core', 'Error loading file picker template')); }); - OCdialogs.dialogs_counter++; }, // dialog button types YES_NO_BUTTONS: 70, OK_BUTTONS: 71, - // dialogs types - ALERT_DIALOG: 80, - INFO_DIALOG: 81, - FORM_DIALOG: 82, // used to name each dialog dialogs_counter: 0, @@ -278,7 +322,7 @@ var OCdialogs = { prompt_ok_handler: function(callback, dialog_id) { $(dialog_id).dialog('close'); - if (callback !== undefined) { callback($(dialog_id + " input#oc-dialog-prompt-input").val()) }; + if (callback !== undefined) { callback($(dialog_id + ' input#oc-dialog-prompt-input').val()) }; }, form_ok_handler: function(callback, dialog_id) { @@ -297,8 +341,7 @@ var OCdialogs = { * fills the filepicker with files */ fillFilePicker:function(request, dialog_content_id) { - var template_content = '*NAME*
*LASTMODDATE*
'; - var template = '
*CONTENT*
'; + var $filelist = $(dialog_content_id + ' #filelist').empty(); var files = ''; var dirs = []; var others = []; @@ -309,14 +352,24 @@ var OCdialogs = { others.push(file); } }); - var sorted = dirs.concat(others); - for (var i = 0; i < sorted.length; i++) { - files_content = template_content.replace('*LASTMODDATE*', OC.mtime2date(sorted[i].mtime)).replace('*NAME*', escapeHTML(sorted[i].name)).replace('*MIMETYPEICON*', sorted[i].mimetype_icon); - files += template.replace('*ENTRYNAME*', escapeHTML(sorted[i].name)).replace('*ENTRYTYPE*', escapeHTML(sorted[i].type)).replace('*CONTENT*', files_content); - } - $(dialog_content_id + ' #filelist').html(files); - $('#filelist div').click(function() { + var sorted = dirs.concat(others); + + var self = this; + $.each(sorted, function(idx, entry) { + $li = self.$listTmpl.octemplate({ + type: entry.type, + dcid: dialog_content_id, + imgsrc: entry.mimetype_icon, + filename: entry.name, + date: OC.mtime2date(entry.mtime) + }); + $filelist.append($li); + }); + + $filelist.removeClass('loading'); + + $filelist.on('click', 'li', function() { OCdialogs.handlePickerClick($(this), $(this).data('entryname'), dialog_content_id); }); @@ -326,24 +379,29 @@ var OCdialogs = { * fills the tree list with directories */ fillTreeList: function(request, dialog_id) { - var template = ''; - var paths = ''; + var $dirtree = $(dialog_id + ' #dirtree').empty(); + var $template = $(''); + $dirtree.append($template.octemplate({ + count: 0, + name: $(dialog_id).data('path') + })); $.each(request.data, function(index, file) { - paths += template.replace('*COUNT*', index).replace('*NAME*', escapeHTML(file.name)); + $dirtree.append($template.octemplate({ + count: index, + name: file.name + })); }); - - $(dialog_id + ' #dirtree').html(paths); }, /** * handle selection made in the tree list */ handleTreeListSelect:function(event) { - if ($("option:selected", this).html().indexOf('/') !== -1) { // if there's a slash in the selected path, don't append it - $(event.data.dcid).data('path', $("option:selected", this).html()); + if ($('option:selected', this).html().indexOf('/') !== -1) { // if there's a slash in the selected path, don't append it + $(event.data.dcid).data('path', $('option:selected', this).html()); } else { - $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $("option:selected", this).html() + '/'); + $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $('option:selected', this).html() + '/'); } - $(event.data.dcid + ' .filepicker_loader').css('visibility', 'visible'); + $(event.data.dcid).find('#filelist').addClass('loading'); $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -356,7 +414,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: $(event.data.dcid).data('path'), - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } ); @@ -366,13 +424,13 @@ var OCdialogs = { */ filepickerDirUp:function(event) { var old_path = $(event.data.dcid).data('path'); - if ( old_path !== "/") { + if ( old_path !== '/') { var splitted_path = old_path.split("/"); var new_path = "" for (var i = 0; i < splitted_path.length - 2; i++) { - new_path += splitted_path[i] + "/" + new_path += splitted_path[i] + '/' } - $(event.data.dcid).data('path', new_path); + $(event.data.dcid).data('path', new_path).find('#filelist').empty().addClass('loading');; $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -385,7 +443,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: $(event.data.dcid).data('path'), - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } ); @@ -395,16 +453,16 @@ var OCdialogs = { * handle clicks made in the filepicker */ handlePickerClick:function(element, name, dialog_content_id) { - if ( $(element).attr('data') === 'file' ){ + if ( $(element).data('type') === 'file' ){ if ( $(dialog_content_id).data('multiselect') !== true) { $(dialog_content_id + ' .filepicker_element_selected').removeClass('filepicker_element_selected'); } $(element).toggleClass('filepicker_element_selected'); return; - } else if ( $(element).attr('data') === 'dir' ) { + } else if ( $(element).data('type') === 'dir' ) { var datapath = escapeHTML( $(dialog_content_id).data('path') + name + '/' ); $(dialog_content_id).data('path', datapath); - $(dialog_content_id + ' .filepicker_loader').css('visibility', 'visible'); + $(dialog_content_id).find('#filelist').empty().addClass('loading'); $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -417,7 +475,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: datapath, - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, dialog_content_id) } ); diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html new file mode 100644 index 0000000000..f29de390ef --- /dev/null +++ b/core/templates/filepicker.html @@ -0,0 +1,11 @@ +
+ + +
    +
  • + + {filename} + {date} +
  • +
+
diff --git a/core/templates/message.html b/core/templates/message.html new file mode 100644 index 0000000000..59048100f3 --- /dev/null +++ b/core/templates/message.html @@ -0,0 +1,3 @@ +
+

{message}

+
diff --git a/lib/base.php b/lib/base.php index 667202d3ae..2e2cee97eb 100644 --- a/lib/base.php +++ b/lib/base.php @@ -260,6 +260,7 @@ class OC { OC_Util::addScript("jquery-tipsy"); OC_Util::addScript("compatibility"); OC_Util::addScript("oc-dialogs"); + OC_Util::addScript("octemplate"); OC_Util::addScript("js"); OC_Util::addScript("eventsource"); OC_Util::addScript("config"); From 8f963b95e53e54220bcce1931599496d9aa797b1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 00:30:01 +0200 Subject: [PATCH 217/575] added test for share with group --- apps/files_encryption/tests/share.php | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 6962cadc44..e5427fdf50 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -79,6 +79,11 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->loginHelper('user1', true); $this->loginHelper('user2', true); $this->loginHelper('user3', true); + + // create group and assign users + \OC_Group::createGroup('group1'); + \OC_Group::addToGroup('user2', 'group1'); + \OC_Group::addToGroup('user3', 'group1'); } function tearDown() @@ -90,10 +95,15 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase OC_App::disable('files_trashbin'); } + // clean group + \OC_Group::deleteGroup('group1'); + // cleanup users \OC_User::deleteUser('user1'); \OC_User::deleteUser('user2'); \OC_User::deleteUser('user3'); + + \OC_FileProxy::clearProxies(); } function testShareFile($withTeardown = true) @@ -454,6 +464,70 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); } + function testShareFileWithGroup() + { + // login as admin + $this->loginHelper('admin'); + + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); + + // check if the unencrypted file size is stored + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + + // login as admin + $this->loginHelper('admin'); + + // check if share key for user2 and user3 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + + // login as user1 + $this->loginHelper('user2'); + + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + + // check if data is the same as we previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile); + + // login as admin + $this->loginHelper('admin'); + + // unshare the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + + } + function loginHelper($user, $create = false) { if ($create) { From c0c4fe5fd3cd575656ed30b4464bb6bc3c6d4f40 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 00:31:17 +0200 Subject: [PATCH 218/575] fix if file is not yet created --- apps/files_encryption/lib/proxy.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 36d05d7e0f..1d60770b4d 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -131,8 +131,13 @@ class Proxy extends \OC_FileProxy { $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); $sharingEnabled = \OCP\Share::isEnabled(); - - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); + + // if file exists try to get sharing users + if($view->file_exists($path)) { + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); + } else { + $uniqueUserIds[] = $userId; + } // Fetch public keys for all users who will share the file $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); From c651950a17cf1381a832e172191e4f4cc172569b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 00:34:45 +0200 Subject: [PATCH 219/575] fix for re-share and removed check if file exists because we are sometime into a pre_put_contents hook --- apps/files_encryption/hooks/hooks.php | 3 ++- apps/files_encryption/lib/util.php | 33 ++++++++++++++++----------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 8f03087e56..f843c7027d 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -231,8 +231,9 @@ class Hooks { $util = new Util($view, $userId); $path = $util->fileIdToPath($params['itemSource']); + $share = $util->getParentFromShare($params['id']); //if parent is set, then this is a re-share action - if ($params['parent']) { + if ($share['parent'] != null) { // get the parent from current share $parent = $util->getShareParent($params['parent']); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 6eee1ada8a..91d86cc855 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1133,19 +1133,7 @@ class Util { } - // Make path relative for use by $view - $relpath = \OC\Files\Filesystem::normalizePath($fileOwnerUid . '/' . $this->fileFolderName . '/' . $filename); - - // Check that the filename we're using is working - if ( $this->view->file_exists( $relpath ) ) { - - return array ( $fileOwnerUid, $filename ); - - } else { - - return false; - - } + return array ( $fileOwnerUid, $filename ); } @@ -1230,6 +1218,25 @@ class Util { } + /** + * @brief get shares parent. + * @param int $id of the current share + * @return array of the parent + */ + public static function getParentFromShare( $id ) { + + $query = \OC_DB::prepare( 'SELECT `parent`' + .' FROM `*PREFIX*share`' + .' WHERE `id` = ?' ); + + $result = $query->execute( array( $id ) ); + + $row = $result->fetchRow(); + + return $row; + + } + /** * @brief get owner of the shared files. * @param int $Id of a share From 0fca2f8f319d77b056516216ade0a931d21a2a69 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 00:36:40 +0200 Subject: [PATCH 220/575] added tests for put content, get content, touch and fopen --- apps/files_encryption/tests/crypt.php | 75 +++++++++++++++++++++- apps/files_encryption/tests/keymanager.php | 2 +- apps/files_encryption/tests/util.php | 2 +- 3 files changed, 76 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 6168f69415..3916b0e15e 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -77,7 +77,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { } function tearDown() { - + \OC_FileProxy::clearProxies(); } function testGenerateKey() { @@ -756,6 +756,79 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->unlink( $filename ); } + + function testViewFilePutAndGetContents() { + + $filename = '/tmp-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = $view->file_get_contents( $filename ); + + $this->assertEquals( $this->dataShort, $decrypt ); + + // Save long data as encrypted file using stream wrapper + $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFileLong ) ); + + // Get file decrypted contents + $decryptLong = $view->file_get_contents( $filename ); + + $this->assertEquals( $this->dataLong, $decryptLong ); + + // tear down + $view->unlink( $filename ); + } + + function testTouchFile() { + $filename = '/tmp-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + $view->touch($filename); + + // Get file decrypted contents + $decrypt = $view->file_get_contents( $filename ); + + $this->assertEquals( $this->dataShort, $decrypt ); + + // tear down + $view->unlink( $filename ); + } + + function testFopenFile() { + $filename = '/tmp-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + $handle = $view->fopen($filename, 'r'); + + // Get file decrypted contents + $decrypt = fgets($handle); + + $this->assertEquals( $this->dataShort, $decrypt ); + + // tear down + $view->unlink( $filename ); + } // function testEncryption(){ // // $key=uniqid(); diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index d3078fdac9..28452d779c 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -71,7 +71,7 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { function tearDown(){ \OC_FileProxy::$enabled = true; - + \OC_FileProxy::clearProxies(); } function testGetPrivateKey() { diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 1e4e39cc47..2d637e2053 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -80,7 +80,7 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { function tearDown(){ m::close(); - + \OC_FileProxy::clearProxies(); } /** From 67a80e1870a47c0f060c58f65b3a6fc838c52b70 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 00:44:40 +0200 Subject: [PATCH 221/575] improved tests for touch --- apps/files_encryption/tests/crypt.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 3916b0e15e..1caa9ea7da 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -788,7 +788,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink( $filename ); } - function testTouchFile() { + function testTouchExistingFile() { $filename = '/tmp-'.time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); @@ -809,6 +809,27 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink( $filename ); } + function testTouchFile() { + $filename = '/tmp-'.time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + $view->touch($filename); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = $view->file_get_contents( $filename ); + + $this->assertEquals( $this->dataShort, $decrypt ); + + // tear down + $view->unlink( $filename ); + } + function testFopenFile() { $filename = '/tmp-'.time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); From c8bbf90feb5a874b9988198747b79c4f43708740 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Thu, 16 May 2013 00:23:05 +0200 Subject: [PATCH 222/575] Port OC.dialogs to use octemplate except for prompt() and form(). Also load octemplate per default. --- core/css/styles.css | 3 + core/js/oc-dialogs.js | 340 +++++++++++++++++++-------------- core/templates/filepicker.html | 11 ++ core/templates/message.html | 3 + lib/base.php | 1 + 5 files changed, 217 insertions(+), 141 deletions(-) create mode 100644 core/templates/filepicker.html create mode 100644 core/templates/message.html diff --git a/core/css/styles.css b/core/css/styles.css index 93f2cecbfe..ee00196d66 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -385,10 +385,13 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin #dirup {width:4%;} #dirtree {width:92%;} #filelist {height:270px; overflow-y:auto; background-color:white; width:100%;} +#filelist img { margin: 2px 1em 0 4px; } +#filelist .date { float:right;margin-right:1em; } .filepicker_element_selected { background-color:lightblue;} .filepicker_loader {height:170px; width:100%; background-color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter:alpha(opacity=30); opacity:.3; visibility:visible; position:absolute; top:0; left:0; text-align:center; padding-top:150px;} .ui-dialog {position:fixed !important;} span.ui-icon {float: left; margin: 3px 7px 30px 0;} +.loading { background: url('../img/loading.gif') no-repeat center; cursor: wait; } /* ---- CATEGORIES ---- */ #categoryform .scrollarea { position:absolute; left:10px; top:10px; right:10px; bottom:50px; overflow:auto; border:1px solid #ddd; background:#f8f8f8; } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 990c3f8bf3..c0c035bafd 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -1,7 +1,7 @@ /** * ownCloud * - * @author Bartek Przybylski + * @author Bartek Przybylski,Christopher Schäpers, Thomas Tanghus * @copyright 2012 Bartek Przybylski bartek@alefzero.eu * * This library is free software; you can redistribute it and/or @@ -31,8 +31,7 @@ var OCdialogs = { * @param modal make the dialog modal */ alert:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays info dialog @@ -42,8 +41,7 @@ var OCdialogs = { * @param modal make the dialog modal */ info:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays confirmation dialog @@ -53,8 +51,7 @@ var OCdialogs = { * @param modal make the dialog modal */ confirm:function(text, title, callback, modal) { - var content = '

' + escapeHTML(text) + '

'; - OCdialogs.message(content, title, OCdialogs.ALERT_DIALOG, OCdialogs.YES_NO_BUTTONS, callback, modal); + OCdialogs.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); }, /** * prompt for user input @@ -66,7 +63,7 @@ var OCdialogs = { prompt:function(text, title, default_value, callback, modal) { var input = ''; var content = '

' + escapeHTML(text) + ':
' + input + '

'; - OCdialogs.message(content, title, OCdialogs.PROMPT_DIALOG, OCdialogs.OK_BUTTON, callback, modal); + OCdialogs.message(content, title, 'prompt', OCdialogs.OK_BUTTON, callback, modal); }, /** * prompt user for input with custom form @@ -130,6 +127,39 @@ var OCdialogs = { }); OCdialogs.dialogs_counter++; }, + _getFilePickerTemplate: function() { + var defer = $.Deferred(); + if(!this.$filePickerTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) { + self.$filePickerTemplate = $(tmpl); + self.$listTmpl = self.$filePickerTemplate.find('#filelist li:first-child').detach(); + defer.resolve(self.$filePickerTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$filePickerTemplate); + } + return defer.promise(); + }, + _getMessageTemplate: function() { + var defer = $.Deferred(); + if(!this.$messageTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) { + self.$messageTemplate = $(tmpl); + defer.resolve(self.$messageTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$messageTemplate); + } + return defer.promise(); + }, /** * show a file picker to pick a file from * @param title dialog title @@ -139,132 +169,146 @@ var OCdialogs = { * @param modal make the dialog modal */ filepicker:function(title, callback, multiselect, mimetype_filter, modal) { - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_content = '
'; - var dialog_loader = '
'; - var dialog_div = '
' + dialog_content + dialog_loader + '
'; - if (modal === undefined) { modal = false }; - if (multiselect === undefined) { multiselect = false }; - if (mimetype_filter === undefined) { mimetype_filter = '' }; + $.when(this._getFilePickerTemplate()).then(function($tmpl) { + var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; + var dialog_id = '#' + dialog_name; + var $dlg = $tmpl.octemplate({ + dialog_name: dialog_name, + title: title + }).data('path', '/'); - $('body').append(dialog_div); + if (modal === undefined) { modal = false }; + if (multiselect === undefined) { multiselect = false }; + if (mimetype_filter === undefined) { mimetype_filter = '' }; - $(dialog_id).data('path', '/'); + $('body').append($dlg); - $(dialog_id + ' #dirtree').focus().change( {dcid: dialog_id}, OCdialogs.handleTreeListSelect ); - $(dialog_id + ' #dirup').click( {dcid: dialog_id}, OCdialogs.filepickerDirUp ); + $dlg.find('#dirtree').focus().change( {dcid: dialog_id}, OCdialogs.handleTreeListSelect ); + $dlg.find('#dirup').click( {dcid: dialog_id}, OCdialogs.filepickerDirUp ); - $(dialog_id).ready(function(){ - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), { mimetype: mimetype_filter } ,function(request) { - OCdialogs.fillFilePicker(request, dialog_id); - }); - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), { mimetype: "httpd/unix-directory" }, function(request) { - OCdialogs.fillTreeList(request, dialog_id); - }); - }).data('multiselect', multiselect).data('mimetype',mimetype_filter); + $dlg.find('#filelist').empty().addClass('loading'); + $dlg.ready(function(){ + $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), + {mimetype: mimetype_filter}, + function(response) { + OCdialogs.fillFilePicker(response, dialog_id); + }); + $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), + {mimetype: 'httpd/unix-directory'}, + function(response) { + OCdialogs.fillTreeList(response, dialog_id); + }); + }).data('multiselect', multiselect).data('mimetype',mimetype_filter); - // build buttons - var functionToCall = function() { - if (callback !== undefined) { - var datapath; - if (multiselect === true) { - datapath = []; - $(dialog_id + ' .filepicker_element_selected .filename').each(function(index, element) { - datapath.push( $(dialog_id).data('path') + $(element).text() ); - }); - } else { - var datapath = $(dialog_id).data('path'); - datapath += $(dialog_id+' .filepicker_element_selected .filename').text(); + // build buttons + var functionToCall = function() { + if (callback !== undefined) { + var datapath; + if (multiselect === true) { + datapath = []; + $(dialog_id + ' .filepicker_element_selected .filename').each(function(index, element) { + datapath.push( $(dialog_id).data('path') + $(element).text() ); + }); + } else { + var datapath = $(dialog_id).data('path'); + datapath += $(dialog_id+' .filepicker_element_selected .filename').text(); + } + callback(datapath); + $(dialog_id).dialog('close'); } - callback(datapath); - $(dialog_id).dialog('close'); - } - }; - var buttonlist = [{ - text: t('core', 'Choose'), - click: functionToCall - }, - { - text: t('core', 'Cancel'), - click: function(){$(dialog_id).dialog('close'); } - }]; + }; + var buttonlist = [{ + text: t('core', 'Choose'), + click: functionToCall + }, + { + text: t('core', 'Cancel'), + click: function(){$(dialog_id).dialog('close'); } + }]; - $(dialog_id).dialog({ - width: (4/9)*$(document).width(), - height: 420, - modal: modal, - buttons: buttonlist + $(dialog_id).dialog({ + width: (4/9)*$(document).width(), + height: 420, + modal: modal, + buttons: buttonlist + }); + OCdialogs.dialogs_counter++; + }) + .fail(function() { + alert(t('core', 'Error loading file picker template')); }); - OCdialogs.dialogs_counter++; }, /** * Displays raw dialog * You better use a wrapper instead ... */ message:function(content, title, dialog_type, buttons, callback, modal) { - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_div = '
' + content + '
'; - if (modal === undefined) { modal = false }; - $('body').append(dialog_div); - var buttonlist = []; - switch (buttons) { - case OCdialogs.YES_NO_BUTTONS: - buttonlist = [{ - text: t('core', 'Yes'), - click: function(){ - if (callback !== undefined) { callback(true) }; - $(dialog_id).dialog('close'); - } - }, - { - text: t('core', 'No'), - click: function(){ - if (callback !== undefined) { callback(false) }; - $(dialog_id).dialog('close'); - } - }]; - break; - case OCdialogs.OK_BUTTON: - var functionToCall; - switch(dialog_type) { - case OCdialogs.ALERT_DIALOG: - functionToCall = function() { + $.when(this._getMessageTemplate()).then(function($tmpl) { + var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; + var dialog_id = '#' + dialog_name; + var $dlg = $tmpl.octemplate({ + dialog_name: dialog_name, + title: title, + message: content, + type: dialog_type + }); + if (modal === undefined) { modal = false }; + $('body').append($dlg); + var buttonlist = []; + switch (buttons) { + case OCdialogs.YES_NO_BUTTONS: + buttonlist = [{ + text: t('core', 'Yes'), + click: function(){ + if (callback !== undefined) { callback(true) }; $(dialog_id).dialog('close'); - if(callback !== undefined) { callback() }; - }; - break; - case OCdialogs.PROMPT_DIALOG: - buttonlist[1] = { - text: t('core', 'Cancel'), - click: function() { $(dialog_id).dialog('close'); } - }; - functionToCall = function() { OCdialogs.prompt_ok_handler(callback, dialog_id); }; - break; - } - buttonlist[0] = { - text: t('core', 'Ok'), - click: functionToCall - }; - break; - }; + } + }, + { + text: t('core', 'No'), + click: function(){ + if (callback !== undefined) { callback(false) }; + $(dialog_id).dialog('close'); + } + }]; + break; + case OCdialogs.OK_BUTTON: + var functionToCall; + switch(dialog_type) { + case 'prompt': + buttonlist[1] = { + text: t('core', 'Cancel'), + click: function() { $(dialog_id).dialog('close'); } + }; + functionToCall = function() { OCdialogs.prompt_ok_handler(callback, dialog_id); }; + break; + default: + functionToCall = function() { + $(dialog_id).dialog('close'); + if(callback !== undefined) { callback() }; + }; + break; + } + buttonlist[0] = { + text: t('core', 'Ok'), + click: functionToCall + }; + break; + }; - $(dialog_id).dialog({ - width: (4/9) * $(document).width(), - height: 180, - modal: modal, - buttons: buttonlist + $(dialog_id).dialog({ + modal: modal, + buttons: buttonlist + }); + OCdialogs.dialogs_counter++; + }) + .fail(function() { + alert(t('core', 'Error loading file picker template')); }); - OCdialogs.dialogs_counter++; }, // dialog button types YES_NO_BUTTONS: 70, OK_BUTTONS: 71, - // dialogs types - ALERT_DIALOG: 80, - INFO_DIALOG: 81, - FORM_DIALOG: 82, // used to name each dialog dialogs_counter: 0, @@ -278,7 +322,7 @@ var OCdialogs = { prompt_ok_handler: function(callback, dialog_id) { $(dialog_id).dialog('close'); - if (callback !== undefined) { callback($(dialog_id + " input#oc-dialog-prompt-input").val()) }; + if (callback !== undefined) { callback($(dialog_id + ' input#oc-dialog-prompt-input').val()) }; }, form_ok_handler: function(callback, dialog_id) { @@ -297,8 +341,7 @@ var OCdialogs = { * fills the filepicker with files */ fillFilePicker:function(request, dialog_content_id) { - var template_content = '*NAME*
*LASTMODDATE*
'; - var template = '
*CONTENT*
'; + var $filelist = $(dialog_content_id + ' #filelist').empty(); var files = ''; var dirs = []; var others = []; @@ -309,14 +352,24 @@ var OCdialogs = { others.push(file); } }); - var sorted = dirs.concat(others); - for (var i = 0; i < sorted.length; i++) { - files_content = template_content.replace('*LASTMODDATE*', OC.mtime2date(sorted[i].mtime)).replace('*NAME*', escapeHTML(sorted[i].name)).replace('*MIMETYPEICON*', sorted[i].mimetype_icon); - files += template.replace('*ENTRYNAME*', escapeHTML(sorted[i].name)).replace('*ENTRYTYPE*', escapeHTML(sorted[i].type)).replace('*CONTENT*', files_content); - } - $(dialog_content_id + ' #filelist').html(files); - $('#filelist div').click(function() { + var sorted = dirs.concat(others); + + var self = this; + $.each(sorted, function(idx, entry) { + $li = self.$listTmpl.octemplate({ + type: entry.type, + dcid: dialog_content_id, + imgsrc: entry.mimetype_icon, + filename: entry.name, + date: OC.mtime2date(entry.mtime) + }); + $filelist.append($li); + }); + + $filelist.removeClass('loading'); + + $filelist.on('click', 'li', function() { OCdialogs.handlePickerClick($(this), $(this).data('entryname'), dialog_content_id); }); @@ -326,24 +379,29 @@ var OCdialogs = { * fills the tree list with directories */ fillTreeList: function(request, dialog_id) { - var template = ''; - var paths = ''; + var $dirtree = $(dialog_id + ' #dirtree').empty(); + var $template = $(''); + $dirtree.append($template.octemplate({ + count: 0, + name: $(dialog_id).data('path') + })); $.each(request.data, function(index, file) { - paths += template.replace('*COUNT*', index).replace('*NAME*', escapeHTML(file.name)); + $dirtree.append($template.octemplate({ + count: index, + name: file.name + })); }); - - $(dialog_id + ' #dirtree').html(paths); }, /** * handle selection made in the tree list */ handleTreeListSelect:function(event) { - if ($("option:selected", this).html().indexOf('/') !== -1) { // if there's a slash in the selected path, don't append it - $(event.data.dcid).data('path', $("option:selected", this).html()); + if ($('option:selected', this).html().indexOf('/') !== -1) { // if there's a slash in the selected path, don't append it + $(event.data.dcid).data('path', $('option:selected', this).html()); } else { - $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $("option:selected", this).html() + '/'); + $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $('option:selected', this).html() + '/'); } - $(event.data.dcid + ' .filepicker_loader').css('visibility', 'visible'); + $(event.data.dcid).find('#filelist').addClass('loading'); $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -356,7 +414,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: $(event.data.dcid).data('path'), - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } ); @@ -366,13 +424,13 @@ var OCdialogs = { */ filepickerDirUp:function(event) { var old_path = $(event.data.dcid).data('path'); - if ( old_path !== "/") { + if ( old_path !== '/') { var splitted_path = old_path.split("/"); var new_path = "" for (var i = 0; i < splitted_path.length - 2; i++) { - new_path += splitted_path[i] + "/" + new_path += splitted_path[i] + '/' } - $(event.data.dcid).data('path', new_path); + $(event.data.dcid).data('path', new_path).find('#filelist').empty().addClass('loading');; $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -385,7 +443,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: $(event.data.dcid).data('path'), - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } ); @@ -395,16 +453,16 @@ var OCdialogs = { * handle clicks made in the filepicker */ handlePickerClick:function(element, name, dialog_content_id) { - if ( $(element).attr('data') === 'file' ){ + if ( $(element).data('type') === 'file' ){ if ( $(dialog_content_id).data('multiselect') !== true) { $(dialog_content_id + ' .filepicker_element_selected').removeClass('filepicker_element_selected'); } $(element).toggleClass('filepicker_element_selected'); return; - } else if ( $(element).attr('data') === 'dir' ) { + } else if ( $(element).data('type') === 'dir' ) { var datapath = escapeHTML( $(dialog_content_id).data('path') + name + '/' ); $(dialog_content_id).data('path', datapath); - $(dialog_content_id + ' .filepicker_loader').css('visibility', 'visible'); + $(dialog_content_id).find('#filelist').empty().addClass('loading'); $.getJSON( OC.filePath('files', 'ajax', 'rawlist.php'), { @@ -417,7 +475,7 @@ var OCdialogs = { OC.filePath('files', 'ajax', 'rawlist.php'), { dir: datapath, - mimetype: "httpd/unix-directory" + mimetype: 'httpd/unix-directory' }, function(request) { OCdialogs.fillTreeList(request, dialog_content_id) } ); diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html new file mode 100644 index 0000000000..f29de390ef --- /dev/null +++ b/core/templates/filepicker.html @@ -0,0 +1,11 @@ +
+ + +
    +
  • + + {filename} + {date} +
  • +
+
diff --git a/core/templates/message.html b/core/templates/message.html new file mode 100644 index 0000000000..59048100f3 --- /dev/null +++ b/core/templates/message.html @@ -0,0 +1,3 @@ +
+

{message}

+
diff --git a/lib/base.php b/lib/base.php index 667202d3ae..2e2cee97eb 100644 --- a/lib/base.php +++ b/lib/base.php @@ -260,6 +260,7 @@ class OC { OC_Util::addScript("jquery-tipsy"); OC_Util::addScript("compatibility"); OC_Util::addScript("oc-dialogs"); + OC_Util::addScript("octemplate"); OC_Util::addScript("js"); OC_Util::addScript("eventsource"); OC_Util::addScript("config"); From 9d1e60325c6f478484ff8f70ff3cd13d9d7d4913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 16 May 2013 14:53:04 +0200 Subject: [PATCH 223/575] allow admin to recover users files in case of password lost --- apps/files_encryption/hooks/hooks.php | 73 ++++++++++++++----- apps/files_encryption/js/settings-admin.js | 2 +- apps/files_encryption/lib/helper.php | 2 +- apps/files_encryption/lib/util.php | 84 +++++++++++++++++++++- lib/user.php | 7 +- settings/ajax/changepassword.php | 5 +- settings/css/settings.css | 2 + settings/js/users.js | 4 +- settings/templates/personal.php | 2 +- settings/templates/users.php | 5 ++ settings/users.php | 3 + 11 files changed, 159 insertions(+), 30 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index f843c7027d..0af0845d7c 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -142,32 +142,67 @@ class Hooks { * @brief Change a user's encryption passphrase * @param array $params keys: uid, password */ - public static function setPassphrase( $params ) { - + public static function setPassphrase($params) { + // Only attempt to change passphrase if server-side encryption // is in use (client-side encryption does not have access to // the necessary keys) - if ( Crypt::mode() == 'server' ) { + if (Crypt::mode() == 'server') { - $view = new \OC_FilesystemView( '/' ); + if ($params['uid'] == \OCP\User::getUser()) { - $session = new Session($view); - - // Get existing decrypted private key - $privateKey = $session->getPrivateKey(); - - // Encrypt private key with new user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $privateKey, $params['password'] ); - - // Save private key - Keymanager::setPrivateKey( $encryptedPrivateKey ); - - // NOTE: Session does not need to be updated as the - // private key has not changed, only the passphrase - // used to decrypt it has changed + $view = new \OC_FilesystemView('/'); + + $session = new Session($view); + + // Get existing decrypted private key + $privateKey = $session->getPrivateKey(); + + // Encrypt private key with new user pwd as passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($privateKey, $params['password']); + + // Save private key + Keymanager::setPrivateKey($encryptedPrivateKey); + + // NOTE: Session does not need to be updated as the + // private key has not changed, only the passphrase + // used to decrypt it has changed + + } else { // admin changed the password for a different user, create new keys and reencrypt file keys + + $user = $params['uid']; + $recoveryPassword = $params['recoveryPassword']; + $newUserPassword = $params['password']; + + $view = new \OC_FilesystemView('/'); + + // make sure that the users home is mounted + \OC\Files\Filesystem::initMountPoints($user); + + $keypair = Crypt::createKeypair(); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // Save public key + $view->file_put_contents( '/public-keys/'.$user.'.public.key', $keypair['publicKey'] ); + + // Encrypt private key empthy passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $newUserPassword ); + + // Save private key + $view->file_put_contents( '/'.$user.'/files_encryption/'.$user.'.private.key', $encryptedPrivateKey ); + + if ( $recoveryPassword ) { // if recovery key is set we can re-encrypt the key files + $util = new Util($view, $user); + $util->recoverUsersFiles($recoveryPassword); + } + + \OC_FileProxy::$enabled = $proxyStatus; + } } - } /* diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index 9bc6ab6433..dbae42b011 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -69,7 +69,7 @@ $(document).ready(function(){ } ); - // change password + // change recovery password $('input:password[name="changeRecoveryPassword"]').keyup(function(event) { var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val(); diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 6d5aae4e8b..86d860465e 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -46,7 +46,7 @@ class Helper { public static function registerUserHooks() { \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); - \OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); + \OCP\Util::connectHook( 'OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 91d86cc855..fab807b014 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -929,7 +929,7 @@ class Util { // Get the current users's private key for decrypting existing keyfile $privateKey = $session->getPrivateKey(); - + $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); // Decrypt keyfile @@ -1336,7 +1336,7 @@ class Util { } } - /** + /** * @brief remove recovery key to all encrypted files */ public function removeRecoveryKeys($path = '/') { @@ -1351,4 +1351,84 @@ class Util { } } } + + /** + * @brief decrypt given file with recovery key and encrypt it again to the owner and his new key + * @param type $file + * @param type $privateKey recovery key to decrypt the file + */ + private function recoverFile($file, $privateKey) { + + $sharingEnabled = \OCP\Share::isEnabled(); + + // Find out who, if anyone, is sharing the file + if ($sharingEnabled) { + $result = \OCP\Share::getUsersSharingFile($file, $this->userId, true, true, true); + $userIds = $result['users']; + $userIds[] = $this->recoveryKeyId; + if ($result['public']) { + $userIds[] = $this->publicShareKeyId; + } + } else { + $userIds = array($this->userId, $this->recoveryKeyId); + } + $filteredUids = $this->filterShareReadyUsers($userIds); + + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + //decrypt file key + $encKeyfile = $this->view->file_get_contents($this->keyfilesPath.$file.".key"); + $shareKey = $this->view->file_get_contents($this->shareKeysPath.$file.".".$this->recoveryKeyId.".shareKey"); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + // encrypt file key again to all users, this time with the new public key for the recovered use + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); + + // write new keys to filesystem TDOO! + $this->view->file_put_contents($this->keyfilesPath.$file.'.key', $multiEncKey['data']); + foreach ($multiEncKey['keys'] as $userId => $shareKey) { + $shareKeyPath = $this->shareKeysPath.$file.'.'.$userId.'.shareKey'; + $this->view->file_put_contents($shareKeyPath, $shareKey); + } + + // Return proxy to original status + \OC_FileProxy::$enabled = $proxyStatus; + } + + /** + * @brief collect all files and recover them one by one + * @param type $path to look for files keys + * @param type $privateKey private recovery key which is used to decrypt the files + */ + private function recoverAllFiles($path, $privateKey) { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { + $filePath = substr($item['path'], 25); + if ($item['type'] == 'dir') { + $this->addRecoveryKey($filePath . '/', $privateKey); + } else { + $file = substr($filePath, 0, -4); + $this->recoverFile($file, $privateKey); + } + } + } + + /** + * @brief recover users files in case of password lost + * @param type $recoveryPassword + */ + public function recoverUsersFiles($recoveryPassword) { + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/'.$this->recoveryKeyId.'.private.key' ); + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $recoveryPassword ); + + \OC_FileProxy::$enabled = $proxyStatus; + + $this->recoverAllFiles('/', $privateKey); + } } diff --git a/lib/user.php b/lib/user.php index 226b716188..833e886659 100644 --- a/lib/user.php +++ b/lib/user.php @@ -393,13 +393,14 @@ class OC_User { * @brief Set password * @param $uid The username * @param $password The new password + * @param $recoveryPassword for the encryption app to reset encryption keys * @returns true/false * * Change the password of a user */ - public static function setPassword( $uid, $password ) { + public static function setPassword( $uid, $password, $recoveryPassword = null ) { $run = true; - OC_Hook::emit( "OC_User", "pre_setPassword", array( "run" => &$run, "uid" => $uid, "password" => $password )); + OC_Hook::emit( "OC_User", "pre_setPassword", array( "run" => &$run, "uid" => $uid, "password" => $password, "recoveryPassword" => $recoveryPassword )); if( $run ) { $success = false; @@ -412,7 +413,7 @@ class OC_User { } // invalidate all login cookies OC_Preferences::deleteApp($uid, 'login_token'); - OC_Hook::emit( "OC_User", "post_setPassword", array( "uid" => $uid, "password" => $password )); + OC_Hook::emit( "OC_User", "post_setPassword", array( "uid" => $uid, "password" => $password, "recoveryPassword" => $recoveryPassword )); return $success; } else{ diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index 4f16bff63d..fe63f27a6e 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -8,8 +8,9 @@ OC_JSON::checkLoggedIn(); OC_APP::loadApps(); $username = isset($_POST["username"]) ? $_POST["username"] : OC_User::getUser(); -$password = isset($_POST["newpassword"]) ? $_POST["newpassword"] : null; +$password = isset($_POST["password"]) ? $_POST["password"] : null; $oldPassword=isset($_POST["oldpassword"])?$_POST["oldpassword"]:''; +$recoveryPassword=isset($_POST["recoveryPassword"])?$_POST["recoveryPassword"]:null; $userstatus = null; if(OC_User::isAdminUser(OC_User::getUser())) { @@ -28,7 +29,7 @@ if(is_null($userstatus)) { } // Return Success story -if(!is_null($password) && OC_User::setPassword( $username, $password )) { +if(!is_null($password) && OC_User::setPassword( $username, $password, $recoveryPassword )) { OC_JSON::success(array("data" => array( "username" => $username ))); } else{ diff --git a/settings/css/settings.css b/settings/css/settings.css index 46a0bbe7c3..950e892901 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -45,6 +45,8 @@ table:not(.nostyle) { width:100%; } #rightcontent { padding-left: 1em; } div.quota { float:right; display:block; position:absolute; right:25em; top:-1px; } div.quota-select-wrapper { position: relative; } +div.recoveryPassword { left:50em; display:block; position:absolute; top:-1px; } +input#recoveryPassword {width:15em;} select.quota { position:absolute; left:0; top:0; width:10em; } select.quota-user { position:relative; left:0; top:0; width:10em; } div.quota>span { position:absolute; right:0; white-space:nowrap; top:.7em; color:#888; text-shadow:0 1px 0 #fff; } diff --git a/settings/js/users.js b/settings/js/users.js index 690c9ad046..9bd7f31f0b 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -351,9 +351,11 @@ $(document).ready(function () { input.keypress(function (event) { if (event.keyCode == 13) { if ($(this).val().length > 0) { + var recoveryPasswordVal = $('input:password[id="recoveryPassword"]').val(); + console.log("RECOVERY PASSWD: " + recoveryPasswordVal); $.post( OC.filePath('settings', 'ajax', 'changepassword.php'), - {username: uid, password: $(this).val()}, + {username: uid, password: $(this).val(), recoveryPassword: recoveryPasswordVal}, function (result) { } ); diff --git a/settings/templates/personal.php b/settings/templates/personal.php index cfb45e99c4..da812e8ed9 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -38,7 +38,7 @@ if($_['passwordChangeSupported']) {
t('Your password was changed');?>
t('Unable to change your password');?>
- diff --git a/settings/templates/users.php b/settings/templates/users.php index e86dd46efb..a6df85983d 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -29,6 +29,11 @@ $_['subadmingroups'] = array_flip($items); + +
+ +
+
t('Default Storage'));?> diff --git a/settings/users.php b/settings/users.php index 94e6d0a9a1..e5c8a7aaa8 100644 --- a/settings/users.php +++ b/settings/users.php @@ -20,6 +20,8 @@ $users = array(); $groups = array(); $isadmin = OC_User::isAdminUser(OC_User::getUser()); +$recoveryAdminEnabled = OC_App::isEnabled('files_encryption') && + OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); if($isadmin) { $accessiblegroups = OC_Group::getGroups(); @@ -77,4 +79,5 @@ $tmpl->assign( 'numofgroups', count($accessiblegroups)); $tmpl->assign( 'quota_preset', $quotaPreset); $tmpl->assign( 'default_quota', $defaultQuota); $tmpl->assign( 'defaultQuotaIsUserDefined', $defaultQuotaIsUserDefined); +$tmpl->assign( 'recoveryAdminEnabled', $recoveryAdminEnabled); $tmpl->printPage(); From 8ae30891b3cd5781741ce797b0ff99d68eab7c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 16 May 2013 15:19:53 +0200 Subject: [PATCH 224/575] some error handling in case the recovery password is wrong --- settings/ajax/changepassword.php | 7 +++++-- settings/js/users.js | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index fe63f27a6e..adb730e12c 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -28,10 +28,13 @@ if(is_null($userstatus)) { exit(); } -// Return Success story -if(!is_null($password) && OC_User::setPassword( $username, $password, $recoveryPassword )) { +$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); +if ( $recoveryPassword && ! $util->checkRecoveryPassword($recoveryPassword) ) { + OC_JSON::error(array("data" => array( "message" => "Wrong recovery admin password. Please check the password and try again." ))); +}elseif(!is_null($password) && OC_User::setPassword( $username, $password, $recoveryPassword )) { OC_JSON::success(array("data" => array( "username" => $username ))); } else{ OC_JSON::error(array("data" => array( "message" => "Unable to change password" ))); } +error_log("bliub"); diff --git a/settings/js/users.js b/settings/js/users.js index 9bd7f31f0b..423068e51f 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -357,6 +357,10 @@ $(document).ready(function () { OC.filePath('settings', 'ajax', 'changepassword.php'), {username: uid, password: $(this).val(), recoveryPassword: recoveryPasswordVal}, function (result) { + if (result.status != 'success') { + OC.dialogs.alert(result.data.message, + t('settings', 'Error changing password')); + } } ); input.blur(); From f1a5b8b524531567ba18c6e08a6f7110dcff18d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 16 May 2013 16:01:40 +0200 Subject: [PATCH 225/575] show nicer warning if the admin recovery password was wrong --- settings/ajax/changepassword.php | 2 +- settings/js/users.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index adb730e12c..6b5bf9c66b 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -30,7 +30,7 @@ if(is_null($userstatus)) { $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); if ( $recoveryPassword && ! $util->checkRecoveryPassword($recoveryPassword) ) { - OC_JSON::error(array("data" => array( "message" => "Wrong recovery admin password. Please check the password and try again." ))); + OC_JSON::error(array("data" => array( "message" => "Wrong admin recovery password. Please check the password and try again." ))); }elseif(!is_null($password) && OC_User::setPassword( $username, $password, $recoveryPassword )) { OC_JSON::success(array("data" => array( "username" => $username ))); } diff --git a/settings/js/users.js b/settings/js/users.js index 423068e51f..f3fab34b09 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -351,15 +351,13 @@ $(document).ready(function () { input.keypress(function (event) { if (event.keyCode == 13) { if ($(this).val().length > 0) { - var recoveryPasswordVal = $('input:password[id="recoveryPassword"]').val(); - console.log("RECOVERY PASSWD: " + recoveryPasswordVal); + var recoveryPasswordVal = $('input:password[id="recoveryPassword"]').val(); $.post( OC.filePath('settings', 'ajax', 'changepassword.php'), {username: uid, password: $(this).val(), recoveryPassword: recoveryPasswordVal}, function (result) { if (result.status != 'success') { - OC.dialogs.alert(result.data.message, - t('settings', 'Error changing password')); + OC.Notification.show(t('admin', result.data.message)); } } ); @@ -374,6 +372,10 @@ $(document).ready(function () { img.css('display', ''); }); }); + $('input:password[id="recoveryPassword"]').keyup(function(event) { + OC.Notification.hide(); + }); + $('table').on('click', 'td.password', function (event) { $(this).children('img').click(); }); From 95297c246970f5e185b94cbc320b28d88a7c0d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 16 May 2013 17:44:28 +0200 Subject: [PATCH 226/575] add pre-shared hooks --- lib/public/share.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/public/share.php b/lib/public/share.php index b2eeb29234..e1538152d8 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1207,6 +1207,17 @@ class Share { if ($shareType == self::SHARE_TYPE_GROUP) { $groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'], $uidOwner, $suggestedItemTarget); + \OC_Hook::emit('OCP\Share', 'pre_shared', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'itemTarget' => $groupItemTarget, + 'shareType' => $shareType, + 'shareWith' => $shareWith['group'], + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'token' => $token + )); if (isset($fileSource)) { if ($parentFolder) { if ($parentFolder === true) { @@ -1282,6 +1293,17 @@ class Share { } else { $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedItemTarget); + \OC_Hook::emit('OCP\Share', 'pre_shared', array( + 'itemType' => $itemType, + 'itemSource' => $itemSource, + 'itemTarget' => $itemTarget, + 'shareType' => $shareType, + 'shareWith' => $shareWith, + 'uidOwner' => $uidOwner, + 'permissions' => $permissions, + 'fileSource' => $fileSource, + 'token' => $token + )); if (isset($fileSource)) { if ($parentFolder) { if ($parentFolder === true) { From 913941d894579ed332169a7573654fd6b0ca9eca Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Thu, 16 May 2013 18:19:28 +0200 Subject: [PATCH 227/575] Line length etc. --- core/js/oc-dialogs.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index c0c035bafd..8989738287 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -1,7 +1,7 @@ /** * ownCloud * - * @author Bartek Przybylski,Christopher Schäpers, Thomas Tanghus + * @author Bartek Przybylski, Christopher Schäpers, Thomas Tanghus * @copyright 2012 Bartek Przybylski bartek@alefzero.eu * * This library is free software; you can redistribute it and/or @@ -396,7 +396,8 @@ var OCdialogs = { * handle selection made in the tree list */ handleTreeListSelect:function(event) { - if ($('option:selected', this).html().indexOf('/') !== -1) { // if there's a slash in the selected path, don't append it + // if there's a slash in the selected path, don't append it + if ($('option:selected', this).html().indexOf('/') !== -1) { $(event.data.dcid).data('path', $('option:selected', this).html()); } else { $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $('option:selected', this).html() + '/'); From d40d6aa3581fdacfc10532cfcfc2dc20835817d1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 22:39:09 +0200 Subject: [PATCH 228/575] fix typo in addRecoveryKeys --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index fab807b014..038ec78bbd 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1325,7 +1325,7 @@ class Util { foreach ($dirContent as $item) { $filePath = substr($item['path'], 25); if ($item['type'] == 'dir') { - $this->addRecoveryKey($filePath.'/'); + $this->addRecoveryKeys($filePath.'/'); } else { $session = new Session(new \OC_FilesystemView('/')); $sharingEnabled = \OCP\Share::isEnabled(); From 3793e4d2d6729f01a83c56d8f123226134f8c626 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 16 May 2013 22:57:55 +0200 Subject: [PATCH 229/575] fix for recover files in subfolder --- apps/files_encryption/lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 038ec78bbd..7acb3ce2dc 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1406,7 +1406,7 @@ class Util { foreach ($dirContent as $item) { $filePath = substr($item['path'], 25); if ($item['type'] == 'dir') { - $this->addRecoveryKey($filePath . '/', $privateKey); + $this->recoverAllFiles($filePath . '/', $privateKey); } else { $file = substr($filePath, 0, -4); $this->recoverFile($file, $privateKey); From 42b4963dd010830d1a99666052ee2bfc7295249a Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 00:58:41 +0200 Subject: [PATCH 230/575] moved enable and disable recovery to Helper class for unit tests --- apps/files_encryption/ajax/adminrecovery.php | 64 +------------- apps/files_encryption/lib/helper.php | 92 ++++++++++++++++++++ 2 files changed, 94 insertions(+), 62 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 0ab449709c..dc13bc57c1 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -21,74 +21,14 @@ $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ - $view = new \OC\Files\View('/'); - - if ($recoveryKeyId === null) { - $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); - \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); - } - - if (!$view->is_dir('/owncloud_private_key')) { - $view->mkdir('/owncloud_private_key'); - } - - if ( - (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") - || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) - ) { - - $keypair = \OCA\Encryption\Crypt::createKeypair(); - - \OC_FileProxy::$enabled = false; - - // Save public key - - if (!$view->is_dir('/public-keys')) { - $view->mkdir('/public-keys'); - } - - $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); - - // Encrypt private key empthy passphrase - $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $_POST['recoveryPassword']); - - // Save private key - $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); - - // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); - if (!$view->is_dir('/control-file')) { - $view->mkdir('/control-file'); - } - $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); - - \OC_FileProxy::$enabled = true; - - // Set recoveryAdmin as enabled - OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); - - $return = true; - - } else { // get recovery key and check the password - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); - $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); - if ($return) { - OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); - } - } + $return = \Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); // Disable recoveryAdmin } elseif ( isset($_POST['adminEnableRecovery']) && 0 == $_POST['adminEnableRecovery'] ) { - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); - $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); - - if ($return) { - // Set recoveryAdmin as disabled - OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); - } + $return = \Helper::adminDisableRecovery($_POST['recoveryPassword']); } // Return success or failure diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 86d860465e..a04c65e251 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -26,6 +26,10 @@ namespace OCA\Encryption; /** * @brief Class to manage registration of hooks an various helper methods */ +/** + * Class Helper + * @package OCA\Encryption + */ class Helper { /** @@ -89,4 +93,92 @@ class Helper { return true; } + + /** + * @brief enable recovery + * + * @param $recoveryKeyId + * @param $recoveryPassword + * @internal param \OCA\Encryption\Util $util + * @internal param string $password + * @return bool + */ + public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { + $view = new \OC\Files\View('/'); + + if ($recoveryKeyId === null) { + $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); + } + + if (!$view->is_dir('/owncloud_private_key')) { + $view->mkdir('/owncloud_private_key'); + } + + if ( + (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") + || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) + ) { + + $keypair = \OCA\Encryption\Crypt::createKeypair(); + + \OC_FileProxy::$enabled = false; + + // Save public key + + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); + } + + $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); + + // Encrypt private key empthy passphrase + $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword); + + // Save private key + $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); + + // create control file which let us check later on if the entered password was correct. + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); + if (!$view->is_dir('/control-file')) { + $view->mkdir('/control-file'); + } + $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); + + \OC_FileProxy::$enabled = true; + + // Set recoveryAdmin as enabled + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + + $return = true; + + } else { // get recovery key and check the password + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); + if ($return) { + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + } + } + + return $return; + } + + + /** + * @brief disable recovery + * + * @param $recoveryPassword + * @return bool + */ + public static function adminDisableRecovery($recoveryPassword) { + $util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($recoveryPassword); + + if ($return) { + // Set recoveryAdmin as disabled + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); + } + + return $return; + } } \ No newline at end of file From a4c0eb17569457784faa06ed0b65a319f7ec2f78 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 01:07:26 +0200 Subject: [PATCH 231/575] improved tests --- apps/files_encryption/tests/crypt.php | 17 +++++++++++++++- apps/files_encryption/tests/keymanager.php | 23 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 1caa9ea7da..bfb5ca0ec8 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -62,8 +62,17 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + \OCA\Encryption\Helper::registerUserHooks(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); + \OC_Util::tearDownFS(); \OC_User::setUserId(''); \OC\Files\Filesystem::tearDown(); @@ -78,6 +87,13 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { function tearDown() { \OC_FileProxy::clearProxies(); + + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } } function testGenerateKey() { @@ -686,7 +702,6 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink( $newFolder . '/' . $newFilename ); $view->unlink( $newFolder ); } diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 28452d779c..3f6b936373 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -57,6 +57,12 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); + \OC_Util::tearDownFS(); \OC_User::setUserId(''); \OC\Files\Filesystem::tearDown(); @@ -72,6 +78,13 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = true; \OC_FileProxy::clearProxies(); + + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } } function testGetPrivateKey() { @@ -116,6 +129,16 @@ class Test_Keymanager extends \PHPUnit_Framework_TestCase { //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = true; + + // cleanup + $this->view->unlink('/'.$this->userId . '/files/' . $file); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; } From 2b0bf4dc87a1117de5b2a6c0201f35736b80f0e7 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 01:07:50 +0200 Subject: [PATCH 232/575] added tests for recovery --- apps/files_encryption/tests/share.php | 144 +++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index e5427fdf50..a40a992b80 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -528,12 +528,152 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase } - function loginHelper($user, $create = false) + function testRecoveryFile() + { + // login as admin + $this->loginHelper('admin'); + + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + + // check if control file created + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'admin'); + + // check if recovery password match + $this->assertTrue($util->checkRecoveryPassword('test123')); + + // enable recovery for admin + $this->assertTrue($util->setRecoveryForUser(true)); + + // create folder structure + $this->view->mkdir('/admin/files' . $this->folder1); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + + // save file with content + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); + + // check if share key for admin and recovery exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.admin.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + + // disable recovery for admin + $this->assertTrue($util->setRecoveryForUser(false)); + + // remove all recovery keys + $util->removeRecoveryKeys('/'); + + // check if share key for recovery not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + + // enable recovery for admin + $this->assertTrue($util->setRecoveryForUser(true)); + + // remove all recovery keys + $util->addRecoveryKeys('/'); + + // check if share key for admin and recovery exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename); + + // check if share key for recovery not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + } + + function testRecoveryForUser() + { + // login as admin + $this->loginHelper('admin'); + + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + + // check if control file created + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + + // login as user1 + $this->loginHelper('user1'); + + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'user1'); + + // enable recovery for admin + $this->assertTrue($util->setRecoveryForUser(true)); + + // create folder structure + $this->view->mkdir('/user1/files' . $this->folder1); + $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + + // save file with content + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); + + // check if share key for user and recovery exists + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + + // login as admin + $this->loginHelper('admin'); + + // change password + \OC_User::setPassword('user1', 'test', 'test123'); + + // login as user1 + $this->loginHelper('user1', false, 'test'); + + // get file contents + $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); + $retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename); + + // check if data is the same as we previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile1); + $this->assertEquals($this->dataShort, $retrievedCryptedFile2); + + // cleanup + $this->view->unlink('/user1/files' . $this->folder1); + $this->view->unlink('/user1/files' . $this->filename); + + // check if share key for user and recovery exists + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + + // enable recovery for admin + $this->assertTrue($util->setRecoveryForUser(false)); + } + + function loginHelper($user, $create = false, $password = false) { if ($create) { \OC_User::createUser($user, $user); } + if($password === false) { + $password = $user; + } + \OC_Util::tearDownFS(); \OC_User::setUserId(''); \OC\Files\Filesystem::tearDown(); @@ -541,7 +681,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase \OC_User::setUserId($user); $params['uid'] = $user; - $params['password'] = $user; + $params['password'] = $password; OCA\Encryption\Hooks::login($params); } } From d7dc710c8b1d46947cb2afe13152e0adc9ee5594 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 01:17:55 +0200 Subject: [PATCH 233/575] revert changes --- lib/public/share.php | 53 +++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/lib/public/share.php b/lib/public/share.php index e1538152d8..03d662676c 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -1541,34 +1541,31 @@ class Share { } public static function post_addToGroup($arguments) { - - if(\OC_Config::getValue('installed')) { - // 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 (?,?,?,?,?,?,?,?,?,?,?)'); - 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']); - } - 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']); - } 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)); - \OC_DB::insertid('*PREFIX*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 (?,?,?,?,?,?,?,?,?,?,?)'); + 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']); + } + 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']); + } 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)); + \OC_DB::insertid('*PREFIX*share'); } } } From 152e275c8a780c220c5022ef059dd7b12adc7cf1 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 04:54:08 +0200 Subject: [PATCH 234/575] Various cleanups in OC.dialogs --- apps/files/ajax/rawlist.php | 8 ++ core/css/styles.css | 15 ++- core/js/oc-dialogs.js | 239 ++++++++++++++------------------- core/templates/filepicker.html | 8 +- 4 files changed, 120 insertions(+), 150 deletions(-) diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php index 1cd2944483..f568afad4d 100644 --- a/apps/files/ajax/rawlist.php +++ b/apps/files/ajax/rawlist.php @@ -15,6 +15,14 @@ $mimetype = isset($_GET['mimetype']) ? $_GET['mimetype'] : ''; // make filelist $files = array(); +// If a type other than directory is requested first load them. +if($mimetype && strpos($mimetype, 'httpd/unix-directory') === false) { + foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, 'httpd/unix-directory' ) as $i ) { + $i["date"] = OCP\Util::formatDate($i["mtime"] ); + $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); + $files[] = $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']); diff --git a/core/css/styles.css b/core/css/styles.css index ee00196d66..2038417685 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -382,13 +382,14 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin .ui-datepicker-prev,.ui-datepicker-next{ border:1px solid #ddd; background:#fff; } /* ---- DIALOGS ---- */ -#dirup {width:4%;} -#dirtree {width:92%;} -#filelist {height:270px; overflow-y:auto; background-color:white; width:100%;} -#filelist img { margin: 2px 1em 0 4px; } -#filelist .date { float:right;margin-right:1em; } -.filepicker_element_selected { background-color:lightblue;} -.filepicker_loader {height:170px; width:100%; background-color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter:alpha(opacity=30); opacity:.3; visibility:visible; position:absolute; top:0; left:0; text-align:center; padding-top:150px;} +#oc-dialog-filepicker-content .dirup {width:4%; font-weight: bold;} +#oc-dialog-filepicker-content .dirtree {width:92%; overflow:hidden; font-weight: bold; } +#oc-dialog-filepicker-content .dirtree span { cursor: pointer; } +#oc-dialog-filepicker-content .dirtree span:not(last-child)::after { content: '>'; padding: 3px;} +#oc-dialog-filepicker-content .filelist {height:270px; overflow-y:auto; background-color:white; width:100%;} +#oc-dialog-filepicker-content .filelist img { margin: 2px 1em 0 4px; } +#oc-dialog-filepicker-content .filelist .date { float:right;margin-right:1em; } +#oc-dialog-filepicker-content .filepicker_element_selected { background-color:lightblue;} .ui-dialog {position:fixed !important;} span.ui-icon {float: left; margin: 3px 7px 30px 0;} .loading { background: url('../img/loading.gif') no-repeat center; cursor: wait; } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 8989738287..4da9623c0a 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -133,7 +133,7 @@ var OCdialogs = { var self = this; $.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) { self.$filePickerTemplate = $(tmpl); - self.$listTmpl = self.$filePickerTemplate.find('#filelist li:first-child').detach(); + self.$listTmpl = self.$filePickerTemplate.find('.filelist li:first-child').detach(); defer.resolve(self.$filePickerTemplate); }) .fail(function() { @@ -160,6 +160,12 @@ var OCdialogs = { } return defer.promise(); }, + _getFileList: function(dir, mimeType) { + return $.getJSON( + OC.filePath('files', 'ajax', 'rawlist.php'), + {dir: dir, mimetype: mimeType} + ); + }, /** * show a file picker to pick a file from * @param title dialog title @@ -169,35 +175,35 @@ var OCdialogs = { * @param modal make the dialog modal */ filepicker:function(title, callback, multiselect, mimetype_filter, modal) { + var self = this; $.when(this._getFilePickerTemplate()).then(function($tmpl) { - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; + var dialog_name = 'oc-dialog-filepicker-content'; var dialog_id = '#' + dialog_name; - var $dlg = $tmpl.octemplate({ + if(self.$filePicker) { + self.$filePicker.dialog('close'); + } + self.$filePicker = $tmpl.octemplate({ dialog_name: dialog_name, title: title - }).data('path', '/'); + }).data('path', ''); if (modal === undefined) { modal = false }; if (multiselect === undefined) { multiselect = false }; if (mimetype_filter === undefined) { mimetype_filter = '' }; - $('body').append($dlg); + $('body').append(self.$filePicker); - $dlg.find('#dirtree').focus().change( {dcid: dialog_id}, OCdialogs.handleTreeListSelect ); - $dlg.find('#dirup').click( {dcid: dialog_id}, OCdialogs.filepickerDirUp ); - $dlg.find('#filelist').empty().addClass('loading'); - $dlg.ready(function(){ - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), - {mimetype: mimetype_filter}, - function(response) { - OCdialogs.fillFilePicker(response, dialog_id); - }); - $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), - {mimetype: 'httpd/unix-directory'}, - function(response) { - OCdialogs.fillTreeList(response, dialog_id); + self.$filePicker.ready(function() { + self.$filelist = self.$filePicker.find('.filelist'); + self.$dirUp = self.$filePicker.find('.dirup'); + self.$dirTree = self.$filePicker.find('.dirtree'); + self.$dirTree.on('click', 'span', self, self.handleTreeListSelect); + self.$dirUp.click(self, self.filepickerDirUp); + self.$filelist.on('click', 'li', function(event) { + self.handlePickerClick(event, $(this)); }); + self.fillFilePicker(''); }).data('multiselect', multiselect).data('mimetype',mimetype_filter); // build buttons @@ -206,15 +212,15 @@ var OCdialogs = { var datapath; if (multiselect === true) { datapath = []; - $(dialog_id + ' .filepicker_element_selected .filename').each(function(index, element) { - datapath.push( $(dialog_id).data('path') + $(element).text() ); + self.$filelist.find('.filepicker_element_selected .filename').each(function(index, element) { + datapath.push(self.$filePicker.data('path') + '/' + $(element).text()); }); } else { - var datapath = $(dialog_id).data('path'); - datapath += $(dialog_id+' .filepicker_element_selected .filename').text(); + var datapath = self.$filePicker.data('path'); + datapath += '/' + self.$filelist.find('.filepicker_element_selected .filename').text(); } callback(datapath); - $(dialog_id).dialog('close'); + self.$filePicker.dialog('close'); } }; var buttonlist = [{ @@ -223,16 +229,19 @@ var OCdialogs = { }, { text: t('core', 'Cancel'), - click: function(){$(dialog_id).dialog('close'); } + click: function(){self.$filePicker.dialog('close'); } }]; - $(dialog_id).dialog({ + self.$filePicker.dialog({ width: (4/9)*$(document).width(), height: 420, modal: modal, - buttons: buttonlist + buttons: buttonlist, + close: function(event, ui) { + self.$filePicker.dialog('destroy').remove(); + self.$filePicker = null; + } }); - OCdialogs.dialogs_counter++; }) .fail(function() { alert(t('core', 'Error loading file picker template')); @@ -340,146 +349,98 @@ var OCdialogs = { /** * fills the filepicker with files */ - fillFilePicker:function(request, dialog_content_id) { - var $filelist = $(dialog_content_id + ' #filelist').empty(); - var files = ''; + fillFilePicker:function(dir) { var dirs = []; var others = []; - $.each(request.data, function(index, file) { - if (file.type === 'dir') { - dirs.push(file); - } else { - others.push(file); - } - }); - - var sorted = dirs.concat(others); - var self = this; - $.each(sorted, function(idx, entry) { - $li = self.$listTmpl.octemplate({ - type: entry.type, - dcid: dialog_content_id, - imgsrc: entry.mimetype_icon, - filename: entry.name, - date: OC.mtime2date(entry.mtime) + this.$filelist.empty().addClass('loading'); + this.$filePicker.data('path', dir); + $.when(this._getFileList(dir, this.$filePicker.data('mimetype'))).then(function(response) { + $.each(response.data, function(index, file) { + if (file.type === 'dir') { + dirs.push(file); + } else { + others.push(file); + } }); - $filelist.append($li); + + self.fillTreeList(); + var sorted = dirs.concat(others); + + $.each(sorted, function(idx, entry) { + $li = self.$listTmpl.octemplate({ + type: entry.type, + dir: dir, + imgsrc: entry.mimetype_icon, + filename: entry.name, + date: OC.mtime2date(entry.mtime) + }); + self.$filelist.append($li); + }); + + self.$filelist.removeClass('loading'); }); - - $filelist.removeClass('loading'); - - $filelist.on('click', 'li', function() { - OCdialogs.handlePickerClick($(this), $(this).data('entryname'), dialog_content_id); - }); - - $(dialog_content_id + ' .filepicker_loader').css('visibility', 'hidden'); }, /** * fills the tree list with directories */ - fillTreeList: function(request, dialog_id) { - var $dirtree = $(dialog_id + ' #dirtree').empty(); - var $template = $(''); - $dirtree.append($template.octemplate({ - count: 0, - name: $(dialog_id).data('path') - })); - $.each(request.data, function(index, file) { - $dirtree.append($template.octemplate({ - count: index, - name: file.name + fillTreeList: function() { + this.$dirTree.empty(); + var self = this + var path = this.$filePicker.data('path'); + if(!path) { + return; + } + var $template = $('{name}'); + var paths = path.split('/'); + paths.pop(); + $.each(paths, function(index, dir) { + var dir = paths.pop(); + if(dir === '') { + return false; + } + self.$dirTree.prepend($template.octemplate({ + dir: paths.join('/') + '/' + dir, + name: dir })); }); + self.$dirTree.prepend($template.octemplate({ + dir: '', + name: '/' + })); }, /** * handle selection made in the tree list */ handleTreeListSelect:function(event) { - // if there's a slash in the selected path, don't append it - if ($('option:selected', this).html().indexOf('/') !== -1) { - $(event.data.dcid).data('path', $('option:selected', this).html()); - } else { - $(event.data.dcid).data('path', $(event.data.dcid).data('path') + $('option:selected', this).html() + '/'); - } - $(event.data.dcid).find('#filelist').addClass('loading'); - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: $(event.data.dcid).data('path'), - mimetype: $(event.data.dcid).data('mimetype') - }, - function(request) { OCdialogs.fillFilePicker(request, event.data.dcid) } - ); - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: $(event.data.dcid).data('path'), - mimetype: 'httpd/unix-directory' - }, - function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } - ); + var self = event.data; + var dir = $(event.target).data('dir'); + self.fillFilePicker(dir); }, /** * go one directory up */ filepickerDirUp:function(event) { - var old_path = $(event.data.dcid).data('path'); - if ( old_path !== '/') { - var splitted_path = old_path.split("/"); - var new_path = "" - for (var i = 0; i < splitted_path.length - 2; i++) { - new_path += splitted_path[i] + '/' - } - $(event.data.dcid).data('path', new_path).find('#filelist').empty().addClass('loading');; - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: $(event.data.dcid).data('path'), - mimetype: $(event.data.dcid).data('mimetype') - }, - function(request) { OCdialogs.fillFilePicker(request, event.data.dcid) } - ); - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: $(event.data.dcid).data('path'), - mimetype: 'httpd/unix-directory' - }, - function(request) { OCdialogs.fillTreeList(request, event.data.dcid) } - ); + var self = event.data; + var old_path = self.$filePicker.data('path'); + if (old_path !== '') { + var splitted_path = old_path.split('/'); + splitted_path.pop(); + self.fillFilePicker(splitted_path.join('/')); } }, /** * handle clicks made in the filepicker */ - handlePickerClick:function(element, name, dialog_content_id) { - if ( $(element).data('type') === 'file' ){ - if ( $(dialog_content_id).data('multiselect') !== true) { - $(dialog_content_id + ' .filepicker_element_selected').removeClass('filepicker_element_selected'); + handlePickerClick:function(event, $element) { + if ($element.data('type') === 'file') { + if (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) { + this.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected'); } - $(element).toggleClass('filepicker_element_selected'); + $element.toggleClass('filepicker_element_selected'); return; - } else if ( $(element).data('type') === 'dir' ) { - var datapath = escapeHTML( $(dialog_content_id).data('path') + name + '/' ); - $(dialog_content_id).data('path', datapath); - $(dialog_content_id).find('#filelist').empty().addClass('loading'); - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: datapath, - mimetype: $(dialog_content_id).data('mimetype') - }, - function(request){ OCdialogs.fillFilePicker(request, dialog_content_id) } - ); - $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - { - dir: datapath, - mimetype: 'httpd/unix-directory' - }, - function(request) { OCdialogs.fillTreeList(request, dialog_content_id) } - ); + } else if ( $element.data('type') === 'dir' ) { + this.fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname')) } } }; diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html index f29de390ef..e7aa77a732 100644 --- a/core/templates/filepicker.html +++ b/core/templates/filepicker.html @@ -1,8 +1,8 @@
- - -
    -
  • + + +
      +
    • {filename} {date} From e60d86bdd1b45e29bf09bacf48bab8d847c54a72 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 06:16:51 +0200 Subject: [PATCH 235/575] Dialogs: Make slug show last dir emphasized. --- core/css/styles.css | 7 ++++--- core/js/oc-dialogs.js | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/css/styles.css b/core/css/styles.css index 2038417685..eab4e226a1 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -383,9 +383,10 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin /* ---- DIALOGS ---- */ #oc-dialog-filepicker-content .dirup {width:4%; font-weight: bold;} -#oc-dialog-filepicker-content .dirtree {width:92%; overflow:hidden; font-weight: bold; } -#oc-dialog-filepicker-content .dirtree span { cursor: pointer; } -#oc-dialog-filepicker-content .dirtree span:not(last-child)::after { content: '>'; padding: 3px;} +#oc-dialog-filepicker-content .dirtree {width:92%; overflow:hidden; } +#oc-dialog-filepicker-content .dirtree span:not(:last-child) { cursor: pointer; } +#oc-dialog-filepicker-content .dirtree span:last-child { font-weight: bold; } +#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after { content: '>'; padding: 3px;} #oc-dialog-filepicker-content .filelist {height:270px; overflow-y:auto; background-color:white; width:100%;} #oc-dialog-filepicker-content .filelist img { margin: 2px 1em 0 4px; } #oc-dialog-filepicker-content .filelist .date { float:right;margin-right:1em; } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 4da9623c0a..8f127bfb62 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -198,7 +198,7 @@ var OCdialogs = { self.$filelist = self.$filePicker.find('.filelist'); self.$dirUp = self.$filePicker.find('.dirup'); self.$dirTree = self.$filePicker.find('.dirtree'); - self.$dirTree.on('click', 'span', self, self.handleTreeListSelect); + self.$dirTree.on('click', 'span:not(:last-child)', self, self.handleTreeListSelect); self.$dirUp.click(self, self.filepickerDirUp); self.$filelist.on('click', 'li', function(event) { self.handlePickerClick(event, $(this)); @@ -393,7 +393,7 @@ var OCdialogs = { } var $template = $('{name}'); var paths = path.split('/'); - paths.pop(); + //paths.pop(); $.each(paths, function(index, dir) { var dir = paths.pop(); if(dir === '') { From a0b79f564944479beb497a75bb45cf02fcaf38ca Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 06:48:24 +0200 Subject: [PATCH 236/575] Dialogs: Loose up-button. --- core/css/styles.css | 1 - core/js/oc-dialogs.js | 14 -------------- core/templates/filepicker.html | 1 - 3 files changed, 16 deletions(-) diff --git a/core/css/styles.css b/core/css/styles.css index eab4e226a1..71b1c1fab8 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -382,7 +382,6 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin .ui-datepicker-prev,.ui-datepicker-next{ border:1px solid #ddd; background:#fff; } /* ---- DIALOGS ---- */ -#oc-dialog-filepicker-content .dirup {width:4%; font-weight: bold;} #oc-dialog-filepicker-content .dirtree {width:92%; overflow:hidden; } #oc-dialog-filepicker-content .dirtree span:not(:last-child) { cursor: pointer; } #oc-dialog-filepicker-content .dirtree span:last-child { font-weight: bold; } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 8f127bfb62..43b698df68 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -196,10 +196,8 @@ var OCdialogs = { self.$filePicker.ready(function() { self.$filelist = self.$filePicker.find('.filelist'); - self.$dirUp = self.$filePicker.find('.dirup'); self.$dirTree = self.$filePicker.find('.dirtree'); self.$dirTree.on('click', 'span:not(:last-child)', self, self.handleTreeListSelect); - self.$dirUp.click(self, self.filepickerDirUp); self.$filelist.on('click', 'li', function(event) { self.handlePickerClick(event, $(this)); }); @@ -417,18 +415,6 @@ var OCdialogs = { var dir = $(event.target).data('dir'); self.fillFilePicker(dir); }, - /** - * go one directory up - */ - filepickerDirUp:function(event) { - var self = event.data; - var old_path = self.$filePicker.data('path'); - if (old_path !== '') { - var splitted_path = old_path.split('/'); - splitted_path.pop(); - self.fillFilePicker(splitted_path.join('/')); - } - }, /** * handle clicks made in the filepicker */ diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html index e7aa77a732..2b7942bd46 100644 --- a/core/templates/filepicker.html +++ b/core/templates/filepicker.html @@ -1,5 +1,4 @@
      -
      • From 2f91606e35fb8c64e7b4c6b9eadd97813818195f Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 07:14:43 +0200 Subject: [PATCH 237/575] Dialogs: Cleanup. --- core/js/oc-dialogs.js | 127 +++++++++--------------------------------- 1 file changed, 26 insertions(+), 101 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 43b698df68..074d3656f9 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -23,6 +23,11 @@ * this class to ease the usage of jquery dialogs */ var OCdialogs = { + // dialog button types + YES_NO_BUTTONS: 70, + OK_BUTTONS: 71, + // used to name each dialog + dialogs_counter: 0, /** * displays alert dialog * @param text content of dialog @@ -31,7 +36,7 @@ var OCdialogs = { * @param modal make the dialog modal */ alert:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); + this.message(text, title, 'alert', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays info dialog @@ -41,7 +46,7 @@ var OCdialogs = { * @param modal make the dialog modal */ info:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); + this.message(text, title, 'info', OCdialogs.OK_BUTTON, callback, modal); }, /** * displays confirmation dialog @@ -51,81 +56,7 @@ var OCdialogs = { * @param modal make the dialog modal */ confirm:function(text, title, callback, modal) { - OCdialogs.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); - }, - /** - * prompt for user input - * @param text content of dialog - * @param title dialog title - * @param callback which will be triggered when user presses OK (input text will be passed to callback) - * @param modal make the dialog modal - */ - prompt:function(text, title, default_value, callback, modal) { - var input = ''; - var content = '

        ' + escapeHTML(text) + ':
        ' + input + '

        '; - OCdialogs.message(content, title, 'prompt', OCdialogs.OK_BUTTON, callback, modal); - }, - /** - * prompt user for input with custom form - * fields should be passed in following format: [{text:'prompt text', name:'return name', type:'input type', value: 'default value'},...] - * example: - * var fields=[{text:'Test', name:'test', type:'select', options:[{text:'hello1',value:1},{text:'hello2',value:2}] }]; - * @param fields to display - * @param title dialog title - * @param callback which will be triggered when user presses OK (user answers will be passed to callback in following format: [{name:'return name', value: 'user value'},...]) - * @param modal make the dialog modal - */ - form:function(fields, title, callback, modal) { - var content = ''; - $.each(fields, function(index, field){ - content += ''; - - }); - content += '
        ' + escapeHTML(field.text) + ''; - var type = field.type; - - if (type === 'text' || type === 'checkbox' || type === 'password') { - content += '' + escapeHTML(field_option.text) + ''; - }); - content += ''; - } - content += '
        '; - - var dialog_name = 'oc-dialog-' + OCdialogs.dialogs_counter + '-content'; - var dialog_id = '#' + dialog_name; - var dialog_div = '
        ' + content + '
        '; - if (modal === undefined) { modal = false }; - $('body').append(dialog_div); - var buttonlist = [{ - text: t('core', 'Ok'), - click: function(){ OCdialogs.form_ok_handler(callback, dialog_id); } - }, - { - text: t('core', 'Cancel'), - click: function(){ $(dialog_id).dialog('close'); } - }]; - var dialog_height = ( $('tr', dialog_div).length + 1 ) * 30 + 120; - $(dialog_id).dialog({ - width: (4/9) * $(document).width(), - height: dialog_height, - modal: modal, - buttons: buttonlist - }); - OCdialogs.dialogs_counter++; + this.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); }, _getFilePickerTemplate: function() { var defer = $.Deferred(); @@ -231,6 +162,7 @@ var OCdialogs = { }]; self.$filePicker.dialog({ + closeOnEscape: true, width: (4/9)*$(document).width(), height: 420, modal: modal, @@ -304,6 +236,7 @@ var OCdialogs = { }; $(dialog_id).dialog({ + closeOnEscape: true, modal: modal, buttons: buttonlist }); @@ -313,12 +246,6 @@ var OCdialogs = { alert(t('core', 'Error loading file picker template')); }); }, - // dialog button types - YES_NO_BUTTONS: 70, - OK_BUTTONS: 71, - // used to name each dialog - dialogs_counter: 0, - determineValue: function(element) { if ( $(element).attr('type') === 'checkbox' ) { return element.checked; @@ -362,7 +289,7 @@ var OCdialogs = { } }); - self.fillTreeList(); + self.fillSlug(); var sorted = dirs.concat(others); $.each(sorted, function(idx, entry) { @@ -382,27 +309,25 @@ var OCdialogs = { /** * fills the tree list with directories */ - fillTreeList: function() { + fillSlug: function() { this.$dirTree.empty(); var self = this var path = this.$filePicker.data('path'); - if(!path) { - return; - } var $template = $('{name}'); - var paths = path.split('/'); - //paths.pop(); - $.each(paths, function(index, dir) { - var dir = paths.pop(); - if(dir === '') { - return false; - } - self.$dirTree.prepend($template.octemplate({ - dir: paths.join('/') + '/' + dir, - name: dir - })); - }); - self.$dirTree.prepend($template.octemplate({ + if(path) { + var paths = path.split('/'); + $.each(paths, function(index, dir) { + var dir = paths.pop(); + if(dir === '') { + return false; + } + self.$dirTree.prepend($template.octemplate({ + dir: paths.join('/') + '/' + dir, + name: dir + })); + }); + } + this.$dirTree.prepend($template.octemplate({ dir: '', name: '/' })); From ba9849a1aa158f1d5ab371db88d76e492bf476ec Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 08:42:15 +0200 Subject: [PATCH 238/575] Dialogs: Fix method names. --- core/js/oc-dialogs.js | 117 +++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 65 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 074d3656f9..674df05635 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -58,45 +58,6 @@ var OCdialogs = { confirm:function(text, title, callback, modal) { this.message(text, title, 'notice', OCdialogs.YES_NO_BUTTONS, callback, modal); }, - _getFilePickerTemplate: function() { - var defer = $.Deferred(); - if(!this.$filePickerTemplate) { - var self = this; - $.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) { - self.$filePickerTemplate = $(tmpl); - self.$listTmpl = self.$filePickerTemplate.find('.filelist li:first-child').detach(); - defer.resolve(self.$filePickerTemplate); - }) - .fail(function() { - defer.reject(); - }); - } else { - defer.resolve(this.$filePickerTemplate); - } - return defer.promise(); - }, - _getMessageTemplate: function() { - var defer = $.Deferred(); - if(!this.$messageTemplate) { - var self = this; - $.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) { - self.$messageTemplate = $(tmpl); - defer.resolve(self.$messageTemplate); - }) - .fail(function() { - defer.reject(); - }); - } else { - defer.resolve(this.$messageTemplate); - } - return defer.promise(); - }, - _getFileList: function(dir, mimeType) { - return $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - {dir: dir, mimetype: mimeType} - ); - }, /** * show a file picker to pick a file from * @param title dialog title @@ -128,11 +89,11 @@ var OCdialogs = { self.$filePicker.ready(function() { self.$filelist = self.$filePicker.find('.filelist'); self.$dirTree = self.$filePicker.find('.dirtree'); - self.$dirTree.on('click', 'span:not(:last-child)', self, self.handleTreeListSelect); + self.$dirTree.on('click', 'span:not(:last-child)', self, self._handleTreeListSelect); self.$filelist.on('click', 'li', function(event) { - self.handlePickerClick(event, $(this)); + self._handlePickerClick(event, $(this)); }); - self.fillFilePicker(''); + self._fillFilePicker(''); }).data('multiselect', multiselect).data('mimetype',mimetype_filter); // build buttons @@ -219,7 +180,7 @@ var OCdialogs = { text: t('core', 'Cancel'), click: function() { $(dialog_id).dialog('close'); } }; - functionToCall = function() { OCdialogs.prompt_ok_handler(callback, dialog_id); }; + functionToCall = function() { OCdialogs._promptOkHandler(callback, dialog_id); }; break; default: functionToCall = function() { @@ -246,7 +207,46 @@ var OCdialogs = { alert(t('core', 'Error loading file picker template')); }); }, - determineValue: function(element) { + _getFilePickerTemplate: function() { + var defer = $.Deferred(); + if(!this.$filePickerTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) { + self.$filePickerTemplate = $(tmpl); + self.$listTmpl = self.$filePickerTemplate.find('.filelist li:first-child').detach(); + defer.resolve(self.$filePickerTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$filePickerTemplate); + } + return defer.promise(); + }, + _getMessageTemplate: function() { + var defer = $.Deferred(); + if(!this.$messageTemplate) { + var self = this; + $.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) { + self.$messageTemplate = $(tmpl); + defer.resolve(self.$messageTemplate); + }) + .fail(function() { + defer.reject(); + }); + } else { + defer.resolve(this.$messageTemplate); + } + return defer.promise(); + }, + _getFileList: function(dir, mimeType) { + return $.getJSON( + OC.filePath('files', 'ajax', 'rawlist.php'), + {dir: dir, mimetype: mimeType} + ); + }, + _determineValue: function(element) { if ( $(element).attr('type') === 'checkbox' ) { return element.checked; } else { @@ -254,27 +254,14 @@ var OCdialogs = { } }, - prompt_ok_handler: function(callback, dialog_id) { + _promptOkHandler: function(callback, dialog_id) { $(dialog_id).dialog('close'); if (callback !== undefined) { callback($(dialog_id + ' input#oc-dialog-prompt-input').val()) }; }, - - form_ok_handler: function(callback, dialog_id) { - if (callback !== undefined) { - var valuelist = []; - $(dialog_id + ' input, ' + dialog_id + ' select').each(function(index, element) { - valuelist[index] = { name: $(element).attr('name'), value: OCdialogs.determineValue(element) }; - }); - $(dialog_id).dialog('close'); - callback(valuelist); - } else { - $(dialog_id).dialog('close'); - } - }, /** * fills the filepicker with files */ - fillFilePicker:function(dir) { + _fillFilePicker:function(dir) { var dirs = []; var others = []; var self = this; @@ -289,7 +276,7 @@ var OCdialogs = { } }); - self.fillSlug(); + self._fillSlug(); var sorted = dirs.concat(others); $.each(sorted, function(idx, entry) { @@ -309,7 +296,7 @@ var OCdialogs = { /** * fills the tree list with directories */ - fillSlug: function() { + _fillSlug: function() { this.$dirTree.empty(); var self = this var path = this.$filePicker.data('path'); @@ -335,15 +322,15 @@ var OCdialogs = { /** * handle selection made in the tree list */ - handleTreeListSelect:function(event) { + _handleTreeListSelect:function(event) { var self = event.data; var dir = $(event.target).data('dir'); - self.fillFilePicker(dir); + self._fillFilePicker(dir); }, /** * handle clicks made in the filepicker */ - handlePickerClick:function(event, $element) { + _handlePickerClick:function(event, $element) { if ($element.data('type') === 'file') { if (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) { this.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected'); @@ -351,7 +338,7 @@ var OCdialogs = { $element.toggleClass('filepicker_element_selected'); return; } else if ( $element.data('type') === 'dir' ) { - this.fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname')) + this._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname')) } } }; From ca6a77d39b738aeead0bbbfdfdf2a06382431f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 11:15:36 +0200 Subject: [PATCH 239/575] upgrade from old encryption to the new one needs to generate share keys too --- apps/files_encryption/hooks/hooks.php | 5 +++-- apps/files_encryption/lib/crypt.php | 32 +++++++++++++++++++++------ apps/files_encryption/lib/util.php | 15 ++++++++----- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 0af0845d7c..a91bd9183f 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -97,9 +97,10 @@ class Hooks { ); } - + + // DISABLED JUST FOR TESTING PURPOSE, ACTIVATE AGAIN! // Register successful migration in DB - $util->setMigrationStatus( 1 ); + //$util->setMigrationStatus( 1 ); } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 5267ba81f5..74f8a1ffa3 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -479,15 +479,33 @@ class Crypt { * keys: data, key * @note this method is a wrapper for combining other crypt class methods */ - public static function keyEncryptKeyfile( $plainContent, $publicKey ) { - + public static function keyEncryptKeyfile( $plainContent, $publicKey, $path ) { + + $user = \OCP\User::getUser(); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $user); + // Encrypt plain data, generate keyfile & encrypted file $cryptedData = self::symmetricEncryptFileContentKeyfile( $plainContent ); // Encrypt keyfile - $cryptedKey = self::keyEncrypt( $cryptedData['key'], $publicKey ); - - return array( 'data' => $cryptedData['encrypted'], 'key' => $cryptedKey ); + + $sharingEnabled = \OCP\Share::isEnabled(); + + // if file exists try to get sharing users + if($view->file_exists($path)) { + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $path, $user ); + } else { + $uniqueUserIds[] = $user; + } + + // Fetch public keys for all users who will share the file + $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); + + // Encrypt plain keyfile to multiple sharefiles + $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); + + return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); } @@ -725,11 +743,11 @@ class Crypt { } - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKey, $newPassphrase ) { + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKey, $newPassphrase, $path ) { $decrypted = self::legacyDecrypt( $legacyEncryptedContent, $legacyPassphrase ); - $recrypted = self::keyEncryptKeyfile( $decrypted, $publicKey ); + $recrypted = self::keyEncryptKeyfile( $decrypted, $publicKey, $path ); return $recrypted; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index fab807b014..5a6583465e 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -714,16 +714,19 @@ class Util { // Fetch data from file $legacyData = $this->view->file_get_contents( $legacyFile['path'] ); - + // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKey, $newPassphrase ); + $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKey, $newPassphrase, $legacyFile['path'] ); - $relPath = $legacyFile['path']; - $rawPath = $this->userId . '/files/' . $plainFile['path']; + $rawPath = $legacyFile['path']; + $relPath = $this->stripUserFilesPath($rawPath); // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['key'] ); - + Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['filekey'] ); + + // Save sharekeys to user folders + Keymanager::setShareKeys( $this->view, $relPath, $recrypted['sharekeys'] ); + // Overwrite the existing file with the encrypted one $this->view->file_put_contents( $rawPath, $recrypted['data'] ); From bf04a21973b2ca88ea35cca3261a0f415cc36559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 13:16:52 +0200 Subject: [PATCH 240/575] set migration status after successful upgrade --- apps/files_encryption/hooks/hooks.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index a91bd9183f..76a19ff968 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -98,9 +98,8 @@ class Hooks { } - // DISABLED JUST FOR TESTING PURPOSE, ACTIVATE AGAIN! // Register successful migration in DB - //$util->setMigrationStatus( 1 ); + $util->setMigrationStatus( 1 ); } From 93771f735b2347eb851941a414220af7b6ccd066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 14:13:05 +0200 Subject: [PATCH 241/575] gremove unused code --- apps/files_encryption/lib/crypt.php | 68 ++-------------- apps/files_encryption/lib/util.php | 113 ++++++++++++++------------ apps/files_encryption/tests/crypt.php | 41 ---------- 3 files changed, 68 insertions(+), 154 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 74f8a1ffa3..708d1719d7 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -472,61 +472,7 @@ class Crypt { return $result; } - - /** - * @brief Encrypts content symmetrically and generates keyfile asymmetrically - * @returns array containing catfile and new keyfile. - * keys: data, key - * @note this method is a wrapper for combining other crypt class methods - */ - public static function keyEncryptKeyfile( $plainContent, $publicKey, $path ) { - - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'); - $util = new Util($view, $user); - - // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile( $plainContent ); - // Encrypt keyfile - - $sharingEnabled = \OCP\Share::isEnabled(); - - // if file exists try to get sharing users - if($view->file_exists($path)) { - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $path, $user ); - } else { - $uniqueUserIds[] = $user; - } - - // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); - - // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); - - return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); - - } - - /** - * @brief Takes catfile, keyfile, and private key, and - * performs decryption - * @returns decrypted content - * @note this method is a wrapper for combining other crypt class methods - */ - public static function keyDecryptKeyfile( $catfile, $keyfile, $privateKey ) { - - // Decrypt the keyfile with the user's private key - $decryptedKeyfile = self::keyDecrypt( $keyfile, $privateKey ); - - // Decrypt the catfile symmetrically using the decrypted keyfile - $decryptedData = self::symmetricDecryptFileContent( $catfile, $decryptedKeyfile ); - - return $decryptedData; - - } - /** * @brief Symmetrically encrypt a file by combining encrypted component data blocks */ @@ -743,13 +689,17 @@ class Crypt { } - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKey, $newPassphrase, $path ) { + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { $decrypted = self::legacyDecrypt( $legacyEncryptedContent, $legacyPassphrase ); - - $recrypted = self::keyEncryptKeyfile( $decrypted, $publicKey, $path ); - - return $recrypted; + + // Encrypt plain data, generate keyfile & encrypted file + $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); + + // Encrypt plain keyfile to multiple sharefiles + $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); + + return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index b312b502c1..a2dee1ca71 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -656,103 +656,108 @@ class Util { * @param string $dirPath the directory whose files will be encrypted * @note Encryption is recursive */ - public function encryptAll( $publicKey, $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { - - if ( $found = $this->findEncFiles( $dirPath ) ) { - + public function encryptAll($publicKey, $dirPath, $legacyPassphrase = null, $newPassphrase = null) { + + if ($found = $this->findEncFiles($dirPath)) { + // Disable proxy to prevent file being encrypted twice \OC_FileProxy::$enabled = false; - + // Encrypt unencrypted files - foreach ( $found['plain'] as $plainFile ) { - + foreach ($found['plain'] as $plainFile) { + //relative to data//file $relPath = $plainFile['path']; - + //relative to /data - $rawPath = $this->userId . '/files/' . $plainFile['path']; - + $rawPath = $this->userId . '/files/' . $plainFile['path']; + // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); - + $plainHandle1 = $this->view->fopen($rawPath, 'rb'); + // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); - + $plainHandle2 = $this->view->fopen($rawPath . '.plaintmp', 'wb'); + // Move plain file to a temporary location - stream_copy_to_stream( $plainHandle1, $plainHandle2 ); - + stream_copy_to_stream($plainHandle1, $plainHandle2); + // Close access to original file // $this->view->fclose( $plainHandle1 ); // not implemented in view{} - // Delete original plain file so we can rename enc file later - $this->view->unlink( $rawPath ); - + $this->view->unlink($rawPath); + // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); - + $encHandle = fopen('crypt://' . $relPath, 'wb'); + // Save data from plain stream to new encrypted file via enc stream // NOTE: Stream{} will be invoked for handling // the encryption, and should handle all keys // and their generation etc. automatically - $size = stream_copy_to_stream( $plainHandle2, $encHandle ); - + $size = stream_copy_to_stream($plainHandle2, $encHandle); + // Delete temporary plain copy of file - $this->view->unlink( $rawPath . '.plaintmp' ); - + $this->view->unlink($rawPath . '.plaintmp'); + // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted'=>true, 'size' => $size ), '' ); - + \OC\Files\Filesystem::putFileInfo($plainFile['path'], array('encrypted' => true, 'size' => $size), ''); } - + // Encrypt legacy encrypted files - if ( - ! empty( $legacyPassphrase ) - && ! empty( $newPassphrase ) + if ( + !empty($legacyPassphrase) + && !empty($newPassphrase) ) { - - foreach ( $found['legacy'] as $legacyFile ) { - + + foreach ($found['legacy'] as $legacyFile) { + // Fetch data from file - $legacyData = $this->view->file_get_contents( $legacyFile['path'] ); + $legacyData = $this->view->file_get_contents($legacyFile['path']); + + $sharingEnabled = \OCP\Share::isEnabled(); + + // if file exists try to get sharing users + if ($view->file_exists($legacyFile['path'])) { + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); + } else { + $uniqueUserIds[] = $this->userId; + } + + // Fetch public keys for all users who will share the file + $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKey, $newPassphrase, $legacyFile['path'] ); - + $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKey, $newPassphrase, $legacyFile['path'], $publicKeys); + $rawPath = $legacyFile['path']; $relPath = $this->stripUserFilesPath($rawPath); - + // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['filekey'] ); + Keymanager::setFileKey($this->view, $relPath, $this->userId, $recrypted['filekey']); // Save sharekeys to user folders - Keymanager::setShareKeys( $this->view, $relPath, $recrypted['sharekeys'] ); + Keymanager::setShareKeys($this->view, $relPath, $recrypted['sharekeys']); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents( $rawPath, $recrypted['data'] ); - - $size = strlen( $recrypted['data'] ); - + $this->view->file_put_contents($rawPath, $recrypted['data']); + + $size = strlen($recrypted['data']); + // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $rawPath, array( 'encrypted'=>true, 'size' => $size ), '' ); - + \OC\Files\Filesystem::putFileInfo($rawPath, array('encrypted' => true, 'size' => $size), ''); } - } - + \OC_FileProxy::$enabled = true; - + // If files were found, return true return true; - } else { - + // If no files were found, return false return false; - } - } - + /** * @brief Return important encryption related paths * @param string $pathName Name of the directory to return the path of diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index bfb5ca0ec8..69fd99d9a8 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -513,48 +513,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataUrl, $decrypt ); } - - // What is the point of this test? It doesn't use keyEncryptKeyfile() - function testKeyEncryptKeyfile() { - - # TODO: Don't repeat encryption from previous tests, use PHPUnit test interdependency instead - // Generate keypair - $pair1 = Encryption\Crypt::createKeypair(); - - // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); - - // Encrypt keyfile - $cryptedKey = Encryption\Crypt::keyEncrypt( $cryptedData['key'], $pair1['publicKey'] ); - - // Decrypt keyfile - $decryptKey = Encryption\Crypt::keyDecrypt( $cryptedKey, $pair1['privateKey'] ); - - // Decrypt encrypted file - $decryptData = Encryption\Crypt::symmetricDecryptFileContent( $cryptedData['encrypted'], $decryptKey ); - - $this->assertEquals( $this->dataUrl, $decryptData ); - - } - - /** - * @brief test functionality of keyEncryptKeyfile() and - * keyDecryptKeyfile() - */ - function testKeyDecryptKeyfile() { - - $encrypted = Encryption\Crypt::keyEncryptKeyfile( $this->dataShort, $this->genPublicKey ); - - $this->assertNotEquals( $encrypted['data'], $this->dataShort ); - - $decrypted = Encryption\Crypt::keyDecryptKeyfile( $encrypted['data'], $encrypted['key'], $this->genPrivateKey ); - - $this->assertEquals( $decrypted, $this->dataShort ); - - } - - /** * @brief test encryption using legacy blowfish method */ From 002445e23d8dcefe2545f22e6914d7cfa7ebbbd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 14:49:54 +0200 Subject: [PATCH 242/575] some typo fixed --- 3rdparty | 1 - apps/files_encryption/lib/util.php | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 160000 3rdparty diff --git a/3rdparty b/3rdparty deleted file mode 160000 index 2d59ac4f7b..0000000000 --- a/3rdparty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2d59ac4f7bd354d9ea7ebea05f863d9f50ccb6ee diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index a2dee1ca71..f1042ed759 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -716,8 +716,8 @@ class Util { $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ($view->file_exists($legacyFile['path'])) { - $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); + if ($this->view->file_exists($legacyFile['path'])) { + $uniqueUserIds = $this->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); } else { $uniqueUserIds[] = $this->userId; } @@ -726,7 +726,7 @@ class Util { $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKey, $newPassphrase, $legacyFile['path'], $publicKeys); + $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path']); $rawPath = $legacyFile['path']; $relPath = $this->stripUserFilesPath($rawPath); From bdf74090fc073a9968a14ff53e7d70954f5920e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 14:56:37 +0200 Subject: [PATCH 243/575] re-add 3rdparty submodule --- .gitmodules | 2 +- 3rdparty | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 160000 3rdparty diff --git a/.gitmodules b/.gitmodules index b9c1a3702c..6e5521b6f5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "3rdparty"] path = 3rdparty - url = git://github.com/owncloud/3rdparty.git + url = git@github.com:owncloud/3rdparty.git diff --git a/3rdparty b/3rdparty new file mode 160000 index 0000000000..2d59ac4f7b --- /dev/null +++ b/3rdparty @@ -0,0 +1 @@ +Subproject commit 2d59ac4f7bd354d9ea7ebea05f863d9f50ccb6ee From c3779555aa38940cb16790407c71bc852b9bd742 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Fri, 17 May 2013 16:18:40 +0200 Subject: [PATCH 244/575] Dialogs: Home folder icon instead of '/'. --- core/css/styles.css | 5 +++++ core/js/oc-dialogs.js | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/css/styles.css b/core/css/styles.css index 71b1c1fab8..70a840d689 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -383,6 +383,11 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin /* ---- DIALOGS ---- */ #oc-dialog-filepicker-content .dirtree {width:92%; overflow:hidden; } +#oc-dialog-filepicker-content .dirtree .home { + background-image:url('../img/places/home.svg'); + background-repeat:no-repeat; + background-position: left center; +} #oc-dialog-filepicker-content .dirtree span:not(:last-child) { cursor: pointer; } #oc-dialog-filepicker-content .dirtree span:last-child { font-weight: bold; } #oc-dialog-filepicker-content .dirtree span:not(:last-child)::after { content: '>'; padding: 3px;} diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 674df05635..e05b3b0207 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -314,10 +314,10 @@ var OCdialogs = { })); }); } - this.$dirTree.prepend($template.octemplate({ + $template.octemplate({ dir: '', - name: '/' - })); + name: '    ' // Ugly but works ;) + }, {escapeFunction: null}).addClass('home svg').prependTo(this.$dirTree); }, /** * handle selection made in the tree list From eaa61b8539bcd1f428d8fad1d67894e8cb4f271a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 17:29:32 +0200 Subject: [PATCH 245/575] fix migration to new encryption --- apps/files_encryption/ajax/encryptall.php | 40 ----------------------- apps/files_encryption/hooks/hooks.php | 2 +- apps/files_encryption/lib/crypt.php | 21 +++++++++--- apps/files_encryption/lib/util.php | 3 +- 4 files changed, 18 insertions(+), 48 deletions(-) delete mode 100644 apps/files_encryption/ajax/encryptall.php diff --git a/apps/files_encryption/ajax/encryptall.php b/apps/files_encryption/ajax/encryptall.php deleted file mode 100644 index ce613ca443..0000000000 --- a/apps/files_encryption/ajax/encryptall.php +++ /dev/null @@ -1,40 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or later. - * See the COPYING-README file. - * - * @brief Script to handle manual trigger of \OCA\Encryption\Util{}->encryptAll() - */ - -use OCA\Encryption; - -\OCP\JSON::checkAppEnabled( 'files_encryption' ); -\OCP\JSON::callCheck(); - -$return = false; - -if ( - isset( $_POST['encryptAll'] ) - && ! empty( $_POST['userPassword'] ) -) { - - $view = new \OC_FilesystemView( '' ); - $userId = \OCP\User::getUser(); - $util = new \OCA\Encryption\Util( $view, $userId ); - $session = new \OCA\Encryption\Session( $view ); - $publicKey = \OCA\Encryption\Keymanager::getPublicKey( $view, $userId ); - $path = '/' . $userId . '/' . 'files'; - - $util->encryptAll( $publicKey, $path, $session->getLegacyKey(), $_POST['userPassword'] ); - - $return = true; - -} else { - - $return = false; - -} - -// Return success or failure -( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 76a19ff968..72334559b8 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -88,7 +88,7 @@ class Hooks { // This serves to upgrade old versions of the encryption // app (see appinfo/spec.txt) if ( - $util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) + $util->encryptAll( '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) ) { \OC_Log::write( diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 708d1719d7..56dacc94b0 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -169,7 +169,7 @@ class Crypt { * @return true / false */ public static function isLegacyEncryptedContent( $data, $relPath ) { - + // Fetch all file metadata from DB $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); @@ -683,15 +683,26 @@ class Crypt { $decrypted = $bf->decrypt( $content ); - $trimmed = rtrim( $decrypted, "\0" ); - - return $trimmed; + return $decrypted; } + + private static function legacyBlockDecrypt($data, $key='',$maxLength=0) { + $result = ''; + while (strlen($data)) { + $result.=self::legacyDecrypt(substr($data, 0, 8192), $key); + $data = substr($data, 8192); + } + if ($maxLength > 0) { + return substr($result, 0, $maxLength); + } else { + return rtrim($result, "\0"); + } + } public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { - $decrypted = self::legacyDecrypt( $legacyEncryptedContent, $legacyPassphrase ); + $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); // Encrypt plain data, generate keyfile & encrypted file $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index f1042ed759..9588db8d64 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -652,11 +652,10 @@ class Util { /** * @brief Encrypt all files in a directory - * @param string $publicKey the public key to encrypt files with * @param string $dirPath the directory whose files will be encrypted * @note Encryption is recursive */ - public function encryptAll($publicKey, $dirPath, $legacyPassphrase = null, $newPassphrase = null) { + public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) { if ($found = $this->findEncFiles($dirPath)) { From e7d1fe82aa21a1add52794f26260d8952a276773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 17 May 2013 18:01:32 +0200 Subject: [PATCH 246/575] fix path to class --- apps/files_encryption/ajax/adminrecovery.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index dc13bc57c1..a32225d036 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -21,14 +21,14 @@ $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ - $return = \Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); + $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); // Disable recoveryAdmin } elseif ( isset($_POST['adminEnableRecovery']) && 0 == $_POST['adminEnableRecovery'] ) { - $return = \Helper::adminDisableRecovery($_POST['recoveryPassword']); + $return = \OCA\Encryption\Helper::adminDisableRecovery($_POST['recoveryPassword']); } // Return success or failure From 9bebf9b4c81e12cd7ce47852538f6f8f10654e5b Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Fri, 17 May 2013 14:14:12 -0400 Subject: [PATCH 247/575] Don't set Content-Length header if size is unknown --- lib/files.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/files.php b/lib/files.php index ab7fa1ed09..abb1617c25 100644 --- a/lib/files.php +++ b/lib/files.php @@ -123,8 +123,11 @@ class OC_Files { header('Content-Length: ' . filesize($filename)); self::addSendfileHeader($filename); }else{ + $filesize = \OC\Files\Filesystem::filesize($filename); header('Content-Type: '.\OC\Files\Filesystem::getMimeType($filename)); - header("Content-Length: ".\OC\Files\Filesystem::filesize($filename)); + if ($filesize > -1) { + header("Content-Length: ".$filesize); + } list($storage) = \OC\Files\Filesystem::resolvePath($filename); if ($storage instanceof \OC\Files\Storage\Local) { self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename)); From cea9208ceccda86a33ec294926d39adecb962ed2 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 21:59:53 +0200 Subject: [PATCH 248/575] fix broken legacy tests --- apps/files_encryption/lib/crypt.php | 4 ++-- apps/files_encryption/tests/crypt.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 56dacc94b0..046b4601b0 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -652,7 +652,7 @@ class Crypt { return $legacyEncKey; } - + /** * @brief encrypts content using legacy blowfish system * @param $content the cleartext message you want to encrypt @@ -683,7 +683,7 @@ class Crypt { $decrypted = $bf->decrypt( $content ); - return $decrypted; + return rtrim($decrypted, "\0");; } diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 69fd99d9a8..9737eefb96 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -595,7 +595,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, $this->genPublicKey, $this->pass ); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); From b6572cedac8aa26d75ae09062b9e5500b00e845a Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 22:16:56 +0200 Subject: [PATCH 249/575] added folder move test --- apps/files_encryption/tests/crypt.php | 35 ++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 9737eefb96..16cdc88f1c 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -649,7 +649,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataLong, $decrypt ); - $newFolder = '/newfolder1'; + $newFolder = '/newfolder'.time(); $newFilename = 'tmp-new-'.time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->mkdir($newFolder); @@ -664,6 +664,39 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { $view->unlink( $newFolder ); } + function testMoveFolder() { + + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + $filename = '/tmp-'.time(); + $folder = '/folder'.time(); + + $view->mkdir($folder); + + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + + // Test that data was successfully written + $this->assertTrue( is_int( $cryptedFile ) ); + + // Get file decrypted contents + $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + + $this->assertEquals( $this->dataLong, $decrypt ); + + $newFolder = '/newfolder'.time(); + + $view->rename( $folder, $newFolder ); + + // Get file decrypted contents + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + + $this->assertEquals( $this->dataLong, $newDecrypt ); + + // tear down + $view->unlink( $newFolder ); + } + function testRenameFolder() { $filename = '/tmp-'.time(); From 3aa48616a6cc960896d8a17e7854a71ee6f308a7 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 22:44:45 +0200 Subject: [PATCH 250/575] remove unused code --- apps/files_encryption/lib/crypt.php | 123 ++-------------------------- 1 file changed, 9 insertions(+), 114 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 046b4601b0..ba588819d0 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -155,7 +155,7 @@ class Crypt { // TODO: Use DI to get \OC\Files\Filesystem out of here // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $path, '' ); + $metadata = \OC\Files\Filesystem::getFileInfo( $path); // Return encryption status return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; @@ -474,78 +474,9 @@ class Crypt { } /** - * @brief Symmetrically encrypt a file by combining encrypted component data blocks - */ - public static function symmetricBlockEncryptFileContent( $plainContent, $key ) { - - $crypted = ''; - - $remaining = $plainContent; - - $testarray = array(); - - while( strlen( $remaining ) ) { - - //echo "\n\n\$block = ".substr( $remaining, 0, 6126 ); - - // Encrypt a chunk of unencrypted data and add it to the rest - $block = self::symmetricEncryptFileContent( substr( $remaining, 0, 6126 ), $key ); - - $padded = self::addPadding( $block ); - - $crypted .= $block; - - $testarray[] = $block; - - // Remove the data already encrypted from remaining unencrypted data - $remaining = substr( $remaining, 6126 ); - - } - - //echo "hags "; - - //echo "\n\n\n\$crypted = $crypted\n\n\n"; - - //print_r($testarray); - - return $crypted; - - } - - - /** - * @brief Symmetrically decrypt a file by combining encrypted component data blocks - */ - public static function symmetricBlockDecryptFileContent( $crypted, $key ) { - - $decrypted = ''; - - $remaining = $crypted; - - $testarray = array(); - - while( strlen( $remaining ) ) { - - $testarray[] = substr( $remaining, 0, 8192 ); - - // Decrypt a chunk of unencrypted data and add it to the rest - $decrypted .= self::symmetricDecryptFileContent( $remaining, $key ); - - // Remove the data already encrypted from remaining unencrypted data - $remaining = substr( $remaining, 8192 ); - - } - - //echo "\n\n\$testarray = "; print_r($testarray); - - return $decrypted; - - } - - /** - * @brief Generates a pseudo random initialisation vector - * @return String $iv generated IV - */ + * @brief Generates a pseudo random initialisation vector + * @return String $iv generated IV + */ public static function generateIv() { if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { @@ -571,10 +502,10 @@ class Crypt { } - /** - * @brief Generate a pseudo random 1024kb ASCII key - * @returns $key Generated key - */ + /** + * @brief Generate a pseudo random 1024kb ASCII key + * @returns $key Generated key + */ public static function generateKey() { // Generate key @@ -597,29 +528,6 @@ class Crypt { } - public static function changekeypasscode( $oldPassword, $newPassword ) { - - if ( \OCP\User::isLoggedIn() ) { - - $key = Keymanager::getPrivateKey( $user, $view ); - - if ( ( $key = Crypt::symmetricDecryptFileContent($key,$oldpasswd) ) ) { - - if ( ( $key = Crypt::symmetricEncryptFileContent( $key, $newpasswd ) ) ) { - - Keymanager::setPrivateKey( $key ); - - return true; - } - - } - - } - - return false; - - } - /** * @brief Get the blowfish encryption handeler for a key * @param $key string (optional) @@ -713,18 +621,5 @@ class Crypt { return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); } - - /** - * @brief Re-encryptes a legacy blowfish encrypted file using AES with integrated IV - * @param $legacyContent the legacy encrypted content to re-encrypt - * @returns cleartext content - * - * This function decrypts an content - */ - public static function legacyRecrypt( $legacyContent, $legacyPassphrase, $newPassphrase ) { - - // TODO: write me - - } - + } \ No newline at end of file From 41165afa598e828f86c07440350a5b2453dd5ddc Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 17 May 2013 22:45:09 +0200 Subject: [PATCH 251/575] improved tests --- apps/files_encryption/tests/crypt.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 16cdc88f1c..2dd644e07b 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -340,7 +340,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { //print_r($r); // Join IVs and their respective data chunks - $e = array( $r[0].$r[1], $r[2].$r[3], $r[4].$r[5], $r[6].$r[7], $r[8].$r[9], $r[10].$r[11], $r[12].$r[13] );//.$r[11], $r[12].$r[13], $r[14] ); + $e = array( $r[0].$r[1], $r[2].$r[3], $r[4].$r[5], $r[6].$r[7], $r[8].$r[9], $r[10].$r[11]);//.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); @@ -395,6 +395,14 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $this->assertTrue(Encryption\Crypt::isEncryptedMeta($filename)); + + \OC_FileProxy::$enabled = $proxyStatus; + // Get file decrypted contents $decrypt = file_get_contents( 'crypt://' . $filename ); @@ -616,7 +624,7 @@ class Test_Crypt extends \PHPUnit_Framework_TestCase { // Test that data was successfully written $this->assertTrue( is_int( $cryptedFile ) ); - // Get file decrypted contents + // Get file decrypted contents $decrypt = file_get_contents( 'crypt://' . $filename ); $this->assertEquals( $this->dataLong, $decrypt ); From f70240f4308d89183e00c9620b9703d30f905a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Sat, 18 May 2013 10:33:33 +0200 Subject: [PATCH 252/575] display a warning if the user has enabled file recovery but the admin tries to change the users password without a recovery password --- settings/ajax/changepassword.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index 6b5bf9c66b..cb66c57c74 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -28,8 +28,13 @@ if(is_null($userstatus)) { exit(); } -$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); -if ( $recoveryPassword && ! $util->checkRecoveryPassword($recoveryPassword) ) { +$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $username); +$recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); +$recoveryEnabledForUser = $util->recoveryEnabledForUser(); + +if ($recoveryAdminEnabled && $recoveryEnabledForUser && $recoveryPassword == '') { + OC_JSON::error(array("data" => array( "message" => "Please provide a admin recovery password, otherwise all user data will be lost" ))); +}elseif ( $recoveryPassword && ! $util->checkRecoveryPassword($recoveryPassword) ) { OC_JSON::error(array("data" => array( "message" => "Wrong admin recovery password. Please check the password and try again." ))); }elseif(!is_null($password) && OC_User::setPassword( $username, $password, $recoveryPassword )) { OC_JSON::success(array("data" => array( "username" => $username ))); @@ -37,4 +42,3 @@ if ( $recoveryPassword && ! $util->checkRecoveryPassword($recoveryPassword) ) { else{ OC_JSON::error(array("data" => array( "message" => "Unable to change password" ))); } -error_log("bliub"); From 6980f59b2fcb05cb1d888f03af60b440a58d47ab Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 21:12:53 +0200 Subject: [PATCH 253/575] fixed typos --- apps/files_encryption/appinfo/spec.txt | 2 +- apps/files_encryption/hooks/hooks.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/appinfo/spec.txt b/apps/files_encryption/appinfo/spec.txt index 4a7b3fc6ad..ddd3983a9e 100644 --- a/apps/files_encryption/appinfo/spec.txt +++ b/apps/files_encryption/appinfo/spec.txt @@ -16,7 +16,7 @@ Encrypted files - Sharekey are stored in /data/user/files_encryption/share-files - File extensions: - - Catfiles have keep the file extension of the original file, pre-encryption + - Catfiles have to keep the file extension of the original file, pre-encryption - Keyfiles use .keyfile - Sharekeys have .shareKey diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 72334559b8..087ba3d893 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -320,7 +320,7 @@ class Hooks { $sharingEnabled = \OCP\Share::isEnabled(); - // if a folder was shared, get a list if all (sub-)folders + // if a folder was shared, get a list of all (sub-)folders if ($params['itemType'] === 'folder') { $allFiles = $util->getAllFiles($path); } else { From 80f9c5bb6d7d453a4a5b81abf346e8e20d10a5af Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 21:37:00 +0200 Subject: [PATCH 254/575] removed mockery from tests and changed class names --- apps/files_encryption/tests/crypt.php | 14 +- apps/files_encryption/tests/keymanager.php | 9 +- apps/files_encryption/tests/util.php | 160 ++------------------- 3 files changed, 12 insertions(+), 171 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 2dd644e07b..18faaceb03 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,7 +7,6 @@ * See the COPYING-README file. */ -//require_once "PHPUnit/Framework/TestCase.php"; require_once realpath( dirname(__FILE__).'/../../../3rdparty/Crypt_Blowfish/Blowfish.php' ); require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); @@ -20,18 +19,7 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; -// This has to go here because otherwise session errors arise, and the private -// encryption key needs to be saved in the session - -/** - * @note It would be better to use Mockery here for mocking out the session - * handling process, and isolate calls to session class and data from the unit - * tests relating to them (stream etc.). However getting mockery to work and - * overload classes whilst also using the OC autoloader is difficult due to - * load order Pear errors. - */ - -class Test_Crypt extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 3f6b936373..415f332094 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -5,8 +5,7 @@ * later. * See the COPYING-README file. */ - -//require_once "PHPUnit/Framework/TestCase.php"; + require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); @@ -18,11 +17,7 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; -// This has to go here because otherwise session errors arise, and the private -// encryption key needs to be saved in the session -//\OC_User::login( 'admin', 'admin' ); - -class Test_Keymanager extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 2d637e2053..648ca2486d 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,7 +6,6 @@ * See the COPYING-README file. */ -//require_once "PHPUnit/Framework/TestCase.php"; require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); @@ -15,16 +14,9 @@ require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); require_once realpath( dirname(__FILE__).'/../lib/util.php' ); require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); -// Load mockery files -require_once 'Mockery/Loader.php'; -require_once 'Hamcrest/Hamcrest.php'; -$loader = new \Mockery\Loader; -$loader->register(); - -use \Mockery as m; use OCA\Encryption; -class Test_Enc_Util extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { function setUp() { // reset backend @@ -72,28 +64,20 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $params['password'] = $this->pass; OCA\Encryption\Hooks::login($params); - $mockView = m::mock('OC_FilesystemView'); - $this->util = new Encryption\Util( $mockView, $this->userId ); - + $this->util = new Encryption\Util( $this->view, $this->userId ); } function tearDown(){ - m::close(); \OC_FileProxy::clearProxies(); } /** * @brief test that paths set during User construction are correct - * - * - * */ function testKeyPaths() { - $mockView = m::mock('OC_FilesystemView'); - - $util = new Encryption\Util( $mockView, $this->userId ); + $util = new Encryption\Util( $this->view, $this->userId ); $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); @@ -104,87 +88,19 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { } /** - * @brief test setup of encryption directories when they don't yet exist + * @brief test setup of encryption directories */ - function testSetupServerSideNotSetup() { - - $mockView = m::mock('OC_FilesystemView'); - - $mockView->shouldReceive( 'file_exists' )->times(7)->andReturn( false ); - $mockView->shouldReceive( 'mkdir' )->times(6)->andReturn( true ); - $mockView->shouldReceive( 'file_put_contents' )->withAnyArgs(); - - $util = new Encryption\Util( $mockView, $this->userId ); - - $this->assertEquals( true, $util->setupServerSide( $this->pass ) ); + function testSetupServerSide() { + $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); } /** - * @brief test setup of encryption directories when they already exist + * @brief test checking whether account is ready for encryption, */ - function testSetupServerSideIsSetup() { + function testUserIsReady() { - $mockView = m::mock('OC_FilesystemView'); - - $mockView->shouldReceive( 'file_exists' )->times(8)->andReturn( true ); - $mockView->shouldReceive( 'file_put_contents' )->withAnyArgs(); - - $util = new Encryption\Util( $mockView, $this->userId ); - - $this->assertEquals( true, $util->setupServerSide( $this->pass ) ); - - } - - /** - * @brief test checking whether account is ready for encryption, when it isn't ready - */ - function testReadyNotReady() { - - $mockView = m::mock('OC_FilesystemView'); - - $mockView->shouldReceive( 'file_exists' )->times(1)->andReturn( false ); - - $util = new Encryption\Util( $mockView, $this->userId ); - - $this->assertEquals( false, $util->ready() ); - - # TODO: Add more tests here to check that if any of the dirs are - # then false will be returned. Use strict ordering? - - } - - /** - * @brief test checking whether account is ready for encryption, when it is ready - */ - function testReadyIsReady() { - - $mockView = m::mock('OC_FilesystemView'); - - $mockView->shouldReceive( 'file_exists' )->times(5)->andReturn( true ); - - $util = new Encryption\Util( $mockView, $this->userId ); - - $this->assertEquals( true, $util->ready() ); - - # TODO: Add more tests here to check that if any of the dirs are - # then false will be returned. Use strict ordering? - - } - - function testFindEncFiles() { - -// $this->view->chroot( "/data/{$this->userId}/files" ); - - $util = new Encryption\Util( $this->view, $this->userId ); - - $files = $util->findEncFiles( '/'.$this->userId.'/'); - - //var_dump( $files ); - - # TODO: Add more tests here to check that if any of the dirs are - # then false will be returned. Use strict ordering? - + $this->assertEquals( true, $this->util->ready() ); } function testRecoveryEnabledForUser() { @@ -230,62 +146,4 @@ class Test_Enc_Util extends \PHPUnit_Framework_TestCase { $this->assertEquals($file, $filename); } - -// /** -// * @brief test decryption using legacy blowfish method -// * @depends testLegacyEncryptLong -// */ -// function testLegacyKeyRecryptKeyfileDecrypt( $recrypted ) { -// -// $decrypted = Encryption\Crypt::keyDecryptKeyfile( $recrypted['data'], $recrypted['key'], $this->genPrivateKey ); -// -// $this->assertEquals( $this->dataLong, $decrypted ); -// -// } - -// // Cannot use this test for now due to hidden dependencies in OC_FileCache -// function testIsLegacyEncryptedContent() { -// -// $keyfileContent = OCA\Encryption\Crypt::symmetricEncryptFileContent( $this->legacyEncryptedData, 'hat' ); -// -// $this->assertFalse( OCA\Encryption\Crypt::isLegacyEncryptedContent( $keyfileContent, '/files/admin/test.txt' ) ); -// -// OC_FileCache::put( '/admin/files/legacy-encrypted-test.txt', $this->legacyEncryptedData ); -// -// $this->assertTrue( OCA\Encryption\Crypt::isLegacyEncryptedContent( $this->legacyEncryptedData, '/files/admin/test.txt' ) ); -// -// } - -// // Cannot use this test for now due to need for different root in OC_Filesystem_view class -// function testGetLegacyKey() { -// -// $c = new \OCA\Encryption\Util( $view, false ); -// -// $bool = $c->getLegacyKey( 'admin' ); -// -// $this->assertTrue( $bool ); -// -// $this->assertTrue( $c->legacyKey ); -// -// $this->assertTrue( is_int( $c->legacyKey ) ); -// -// $this->assertTrue( strlen( $c->legacyKey ) == 20 ); -// -// } - -// // Cannot use this test for now due to need for different root in OC_Filesystem_view class -// function testLegacyDecrypt() { -// -// $c = new OCA\Encryption\Util( $this->view, false ); -// -// $bool = $c->getLegacyKey( 'admin' ); -// -// $encrypted = $c->legacyEncrypt( $this->data, $c->legacyKey ); -// -// $decrypted = $c->legacyDecrypt( $encrypted, $c->legacyKey ); -// -// $this->assertEquals( $decrypted, $this->data ); -// -// } - } \ No newline at end of file From e0e89602a24c151cd27095f355812a200acbbb83 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 22:00:35 +0200 Subject: [PATCH 255/575] fixed key-manager tests --- apps/files_encryption/tests/keymanager.php | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 415f332094..151f6813e0 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -88,20 +88,27 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass); - // Will this length vary? Perhaps we should use a range instead - $this->assertGreaterThan( 27, strlen( $privateKey ) ); + $res = openssl_pkey_get_private($privateKey); - $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $privateKey, 0, 27 ) ); + $this->assertTrue(is_resource($res)); + + $sslInfo = openssl_pkey_get_details($res); + + $this->assertArrayHasKey('key', $sslInfo); } function testGetPublicKey() { - $key = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); - - $this->assertGreaterThan( 26, strlen( $key ) ); - - $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $key, 0, 26 ) ); + $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); + + $res = openssl_pkey_get_public($publiceKey); + + $this->assertTrue(is_resource($res)); + + $sslInfo = openssl_pkey_get_details($res); + + $this->assertArrayHasKey('key', $sslInfo); } function testSetFileKey() { From 681252669a237a2383bcdc05892e368785103ad2 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 22:10:00 +0200 Subject: [PATCH 256/575] changed migrationStatus to migration_status for pgsql --- apps/files_encryption/appinfo/database.xml | 2 +- apps/files_encryption/lib/util.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/appinfo/database.xml b/apps/files_encryption/appinfo/database.xml index 64c9ef65fa..1935a4df6a 100644 --- a/apps/files_encryption/appinfo/database.xml +++ b/apps/files_encryption/appinfo/database.xml @@ -28,7 +28,7 @@ Whether encryption key recovery is enabled - migrationStatus + migration_status boolean true 0 diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9588db8d64..4e32cf6da1 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1033,7 +1033,7 @@ class Util { $sql = 'UPDATE *PREFIX*encryption SET - migrationStatus = ? + migration_status = ? WHERE uid = ?'; @@ -1062,7 +1062,7 @@ class Util { public function getMigrationStatus() { $sql = 'SELECT - migrationStatus + migration_status FROM `*PREFIX*encryption` WHERE @@ -1078,7 +1078,7 @@ class Util { while( $row = $result->fetchRow() ) { - $migrationStatus[] = $row['migrationStatus']; + $migrationStatus[] = $row['migration_status']; } From 227b122947dc92f3d9d3984c1fe00919dc473b8b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 22:25:47 +0200 Subject: [PATCH 257/575] fixed again key-manager tests --- apps/files_encryption/tests/keymanager.php | 34 +++++++++------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 151f6813e0..48e370d3a5 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -163,29 +163,23 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { function testGetUserKeys() { $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); - - $this->assertGreaterThan( 26, strlen( $keys['publicKey'] ) ); - $this->assertEquals( '-----BEGIN PUBLIC KEY-----', substr( $keys['publicKey'], 0, 26 ) ); + $resPublic = openssl_pkey_get_public($keys['publicKey']); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass); + $this->assertTrue(is_resource($resPublic)); - $this->assertGreaterThan( 27, strlen( $keys['privateKey'] ) ); + $sslInfoPublic = openssl_pkey_get_details($resPublic); - $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $privateKey, 0, 27 ) ); - + $this->assertArrayHasKey('key', $sslInfoPublic); + + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass); + + $resPrivate = openssl_pkey_get_private($privateKey); + + $this->assertTrue(is_resource($resPrivate)); + + $sslInfoPrivate = openssl_pkey_get_details($resPrivate); + + $this->assertArrayHasKey('key', $sslInfoPrivate); } - - function testGetPublicKeys() { - - # TODO: write me - - } - - function testGetFileKey() { - -// Encryption\Keymanager::getFileKey( $this->view, $this->userId, $this->filePath ); - - } - } From 2a038baee0de882877defb131b5a97821e10a0b9 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 18 May 2013 22:33:31 +0200 Subject: [PATCH 258/575] updated authors info --- apps/files_encryption/appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/appinfo/info.xml b/apps/files_encryption/appinfo/info.xml index 39ea155488..9de2798dd7 100644 --- a/apps/files_encryption/appinfo/info.xml +++ b/apps/files_encryption/appinfo/info.xml @@ -4,7 +4,7 @@ Encryption Server side encryption of files. Warning: You will lose your data if you enable this App and forget your password. Encryption is not yet compatible with LDAP. AGPL - Sam Tuke + Sam Tuke, Bjoern Schiessle, Florin Peter 4 true From ddda2a1f795122518d13b8654ab4a738d6fa526f Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 19 May 2013 07:04:31 +0200 Subject: [PATCH 259/575] changed database column 'recovery' to 'recovery_enabled' because recovery is a pgsql keyword more info about pgsql keywords http://www.postgresql.org/docs/9.1/static/sql-keywords-appendix.html --- apps/files_encryption/appinfo/database.xml | 2 +- apps/files_encryption/lib/util.php | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/appinfo/database.xml b/apps/files_encryption/appinfo/database.xml index 1935a4df6a..ca149f0c69 100644 --- a/apps/files_encryption/appinfo/database.xml +++ b/apps/files_encryption/appinfo/database.xml @@ -21,7 +21,7 @@ What client-side / server-side configuration is used - recovery + recovery_enabled boolean true 0 diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 4e32cf6da1..82f789c520 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -228,7 +228,7 @@ class Util { if ( false === $this->recoveryEnabledForUser() ) { // create database configuration - $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery`) VALUES (?,?,?)'; + $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; $args = array( $this->userId, 'server-side', 0); $query = \OCP\DB::prepare( $sql ); $query->execute( $args ); @@ -252,7 +252,7 @@ class Util { public function recoveryEnabledForUser() { $sql = 'SELECT - recovery + recovery_enabled FROM `*PREFIX*encryption` WHERE @@ -268,7 +268,7 @@ class Util { while( $row = $result->fetchRow() ) { - $recoveryEnabled[] = $row['recovery']; + $recoveryEnabled[] = $row['recovery_enabled']; } @@ -299,7 +299,7 @@ class Util { if ( false === $recoveryStatus ) { $sql = 'INSERT INTO `*PREFIX*encryption` - (`uid`,`mode`,`recovery`) + (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; $args = array( $this->userId, 'server-side', $enabled ); @@ -310,7 +310,7 @@ class Util { $sql = 'UPDATE *PREFIX*encryption SET - recovery = ? + recovery_enabled = ? WHERE uid = ?'; From 41e2d64c86fffc3e507a1ad0788bcb498db2c640 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sun, 19 May 2013 14:15:49 -0400 Subject: [PATCH 260/575] Add support for copying/moving folders between storages, move isIgnoredDir() to Filesystem --- lib/files/cache/scanner.php | 14 +------------- lib/files/filesystem.php | 13 +++++++++++++ lib/files/view.php | 32 ++++++++++++++++++++++++-------- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index 661bc48633..0b1947f17c 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -115,7 +115,7 @@ class Scanner { \OC_DB::beginTransaction(); while ($file = readdir($dh)) { $child = ($path) ? $path . '/' . $file : $file; - if (!$this->isIgnoredDir($file)) { + if (!\OC\Files\Filesystem::isIgnoredDir($file)) { $data = $this->scanFile($child, $recursive === self::SCAN_SHALLOW); if ($data) { if ($data['size'] === -1) { @@ -149,18 +149,6 @@ class Scanner { return $size; } - /** - * @brief check if the directory should be ignored when scanning - * NOTE: the special directories . and .. would cause never ending recursion - * @param String $dir - * @return boolean - */ - private function isIgnoredDir($dir) { - if ($dir === '.' || $dir === '..') { - return true; - } - return false; - } /** * @brief check if the file should be ignored when scanning * NOTE: files with a '.part' extension are ignored as well! diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d60d430d77..99d87011df 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -453,6 +453,19 @@ class Filesystem { return (in_array($filename, $blacklist)); } + /** + * @brief check if the directory should be ignored when scanning + * NOTE: the special directories . and .. would cause never ending recursion + * @param String $dir + * @return boolean + */ + static public function isIgnoredDir($dir) { + if ($dir === '.' || $dir === '..') { + return true; + } + return false; + } + /** * following functions are equivalent to their php builtin equivalents for arguments/return values. */ diff --git a/lib/files/view.php b/lib/files/view.php index f35e1e3dc1..875a6c1a1f 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -372,11 +372,18 @@ class View { $result = false; } } else { - $source = $this->fopen($path1 . $postFix1, 'r'); - $target = $this->fopen($path2 . $postFix2, 'w'); - list($count, $result) = \OC_Helper::streamCopy($source, $target); - list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); - $storage1->unlink($internalPath1); + if ($this->is_dir($path1)) { + $result = $this->copy($path1, $path2); + if ($result === true) { + $result = $this->deleteAll($path1); + } + } else { + $source = $this->fopen($path1 . $postFix1, 'r'); + $target = $this->fopen($path2 . $postFix2, 'w'); + list($count, $result) = \OC_Helper::streamCopy($source, $target); + list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); + $storage1->unlink($internalPath1); + } } if ($this->fakeRoot == Filesystem::getRoot() && !Cache\Scanner::isPartialFile($path1)) { \OC_Hook::emit( @@ -459,9 +466,18 @@ class View { $result = false; } } else { - $source = $this->fopen($path1 . $postFix1, 'r'); - $target = $this->fopen($path2 . $postFix2, 'w'); - list($count, $result) = \OC_Helper::streamCopy($source, $target); + if ($this->is_dir($path1) && ($dh = $this->opendir($path1))) { + $this->mkdir($path2); + while ($file = readdir($dh)) { + if (!Filesystem::isIgnoredDir($file)) { + $result = $this->copy($path1 . '/' . $file, $path2 . '/' . $file); + } + } + } else { + $source = $this->fopen($path1 . $postFix1, 'r'); + $target = $this->fopen($path2 . $postFix2, 'w'); + list($count, $result) = \OC_Helper::streamCopy($source, $target); + } } if ($this->fakeRoot == Filesystem::getRoot()) { \OC_Hook::emit( From e9b71eed691050e23d78910abdd8bf313f2f83cb Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sun, 19 May 2013 14:20:46 -0400 Subject: [PATCH 261/575] Add tests for copying/moving between storages --- tests/lib/files/view.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index a064e44f3e..554bc7291a 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -228,6 +228,40 @@ class View extends \PHPUnit_Framework_TestCase { $this->assertEquals(3, $cachedData['size']); } + function testCopyBetweenStorages() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + + $rootView = new \OC\Files\View(''); + $rootView->copy('substorage', 'anotherfolder'); + $this->assertTrue($rootView->is_dir('/anotherfolder')); + $this->assertTrue($rootView->is_dir('/substorage')); + $this->assertTrue($rootView->file_exists('/anotherfolder/foo.txt')); + $this->assertTrue($rootView->file_exists('/anotherfolder/foo.png')); + $this->assertTrue($rootView->file_exists('/anotherfolder/folder/bar.txt')); + $this->assertTrue($rootView->file_exists('/substorage/foo.txt')); + $this->assertTrue($rootView->file_exists('/substorage/foo.png')); + $this->assertTrue($rootView->file_exists('/substorage/folder/bar.txt')); + } + + function testMoveBetweenStorages() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + + $rootView = new \OC\Files\View(''); + $rootView->rename('foo.txt', 'substorage/folder/foo.txt'); + $this->assertFalse($rootView->file_exists('foo.txt')); + $this->assertTrue($rootView->file_exists('substorage/folder/foo.txt')); + $rootView->rename('substorage/folder', 'anotherfolder'); + $this->assertFalse($rootView->is_dir('substorage/folder')); + $this->assertTrue($rootView->file_exists('anotherfolder/foo.txt')); + $this->assertTrue($rootView->file_exists('anotherfolder/bar.txt')); + } + /** * @param bool $scan * @return \OC\Files\Storage\Storage From fc5bce1f76a3a67a4ac9095d15441e363dfd03d1 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sun, 19 May 2013 15:04:41 -0400 Subject: [PATCH 262/575] Fix undefined variable for copying empty folders --- lib/files/view.php | 2 +- tests/lib/files/view.php | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/files/view.php b/lib/files/view.php index 875a6c1a1f..8a37a0bcc6 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -467,7 +467,7 @@ class View { } } else { if ($this->is_dir($path1) && ($dh = $this->opendir($path1))) { - $this->mkdir($path2); + $result = $this->mkdir($path2); while ($file = readdir($dh)) { if (!Filesystem::isIgnoredDir($file)) { $result = $this->copy($path1 . '/' . $file, $path2 . '/' . $file); diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index 554bc7291a..a51d99e793 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -235,9 +235,12 @@ class View extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); $rootView = new \OC\Files\View(''); + $rootView->mkdir('substorage/emptyfolder'); $rootView->copy('substorage', 'anotherfolder'); $this->assertTrue($rootView->is_dir('/anotherfolder')); $this->assertTrue($rootView->is_dir('/substorage')); + $this->assertTrue($rootView->is_dir('/anotherfolder/emptyfolder')); + $this->assertTrue($rootView->is_dir('/substorage/emptyfolder')); $this->assertTrue($rootView->file_exists('/anotherfolder/foo.txt')); $this->assertTrue($rootView->file_exists('/anotherfolder/foo.png')); $this->assertTrue($rootView->file_exists('/anotherfolder/folder/bar.txt')); From bdd2127f19db92d7f3eccfa0cee402add23529f6 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 19 May 2013 22:28:48 +0200 Subject: [PATCH 263/575] cleanup tests --- apps/files_encryption/tests/crypt.php | 64 ++++++++++------------ apps/files_encryption/tests/keymanager.php | 14 ++++- apps/files_encryption/tests/share.php | 42 ++++++++++++-- apps/files_encryption/tests/util.php | 22 +++++++- 4 files changed, 101 insertions(+), 41 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 18faaceb03..c669aec122 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -19,8 +19,25 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; +/** + * Class Test_Encryption_Crypt + */ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { - + + public $userId; + public $pass; + public $stateFilesTrashbin; + public $dataLong; + public $dataUrl; + public $dataShort; + /** + * @var OC_FilesystemView + */ + public $view; + public $legacyEncryptedData; + public $genPrivateKey; + public $genPublicKey; + function setUp() { // reset backend \OC_User::clearBackends(); @@ -93,7 +110,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertTrue( strlen( $key ) > 16 ); } - + + /** + * @return String + */ function testGenerateIv() { $iv = Encryption\Crypt::generateIv(); @@ -150,7 +170,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); } - + + /** + * @return string padded + */ function testAddPadding() { $padded = Encryption\Crypt::addPadding( $this->dataLong ); @@ -214,34 +237,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataShort, $decrypt ); } - - // These aren't used for now -// function testSymmetricBlockEncryptShortFileContent() { -// -// $crypted = Encryption\Crypt::symmetricBlockEncryptFileContent( $this->dataShort, $this->randomKey ); -// -// $this->assertNotEquals( $this->dataShort, $crypted ); -// -// -// $decrypt = Encryption\Crypt::symmetricBlockDecryptFileContent( $crypted, $this->randomKey ); -// -// $this->assertEquals( $this->dataShort, $decrypt ); -// -// } -// -// function testSymmetricBlockEncryptLongFileContent() { -// -// $crypted = Encryption\Crypt::symmetricBlockEncryptFileContent( $this->dataLong, $this->randomKey ); -// -// $this->assertNotEquals( $this->dataLong, $crypted ); -// -// -// $decrypt = Encryption\Crypt::symmetricBlockDecryptFileContent( $crypted, $this->randomKey ); -// -// $this->assertEquals( $this->dataLong, $decrypt ); -// -// } - + function testSymmetricStreamEncryptShortFileContent() { $filename = 'tmp-'.time().'.test'; @@ -351,9 +347,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $decrypt = ''; // Manually decrypt chunk - foreach ($e as $e) { + foreach ($e as $chunk) { - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $e, $plainKeyfile ); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; @@ -741,7 +737,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals( $this->dataLong, $decrypt ); // change password - \OC_User::setPassword($this->userId, 'test'); + \OC_User::setPassword($this->userId, 'test', null); // relogin $params['uid'] = $this->userId; diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 48e370d3a5..8ca8b0287e 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -17,8 +17,20 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; +/** + * Class Test_Encryption_Keymanager + */ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { - + + public $userId; + public $pass; + public $stateFilesTrashbin; + /** + * @var OC_FilesystemView + */ + public $view; + public $randomKey; + function setUp() { // reset backend \OC_User::clearBackends(); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index a40a992b80..de02513dea 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -32,10 +32,24 @@ require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; +/** + * Class Test_Encryption_Share + */ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { - function setUp() + public $stateFilesTrashbin; + public $filename; + public $dataShort; + /** + * @var OC_FilesystemView + */ + public $view; + public $folder1; + public $subfolder; + public $subsubfolder; + + function setUp() { // reset backend \OC_User::clearBackends(); @@ -106,7 +120,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase \OC_FileProxy::clearProxies(); } - function testShareFile($withTeardown = true) + /** + * @param bool $withTeardown + */ + function testShareFile($withTeardown = true) { // login as admin $this->loginHelper('admin'); @@ -171,7 +188,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase } } - function testReShareFile($withTeardown = true) + /** + * @param bool $withTeardown + */ + function testReShareFile($withTeardown = true) { $this->testShareFile(false); @@ -228,7 +248,11 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase } } - function testShareFolder($withTeardown = true) + /** + * @param bool $withTeardown + * @return array + */ + function testShareFolder($withTeardown = true) { // login as admin $this->loginHelper('admin'); @@ -297,7 +321,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase return $fileInfo; } - function testReShareFolder($withTeardown = true) + /** + * @param bool $withTeardown + */ + function testReShareFolder($withTeardown = true) { $fileInfoFolder1 = $this->testShareFolder(false); @@ -664,6 +691,11 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertTrue($util->setRecoveryForUser(false)); } + /** + * @param $user + * @param bool $create + * @param bool $password + */ function loginHelper($user, $create = false, $password = false) { if ($create) { diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 648ca2486d..53ac8ee8d6 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -16,8 +16,28 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); use OCA\Encryption; +/** + * Class Test_Encryption_Util + */ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { - + + public $userId; + public $encryptionDir; + public $publicKeyDir; + public $pass; + /** + * @var OC_FilesystemView + */ + public $view; + public $keyfilesPath; + public $publicKeyPath; + public $privateKeyPath; + /** + * @var \OCA\Encryption\Util + */ + public $util; + public $dataShort; + function setUp() { // reset backend \OC_User::useBackend('database'); From 079f918d5ca0d242e77717aaeac82bcf011dc745 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 19 May 2013 22:30:03 +0200 Subject: [PATCH 264/575] fix for webdav and wrong reference for findByStorageId --- lib/files/cache/backgroundwatcher.php | 2 +- lib/files/filesystem.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/files/cache/backgroundwatcher.php b/lib/files/cache/backgroundwatcher.php index 7549745e7d..b5770d0582 100644 --- a/lib/files/cache/backgroundwatcher.php +++ b/lib/files/cache/backgroundwatcher.php @@ -30,7 +30,7 @@ class BackgroundWatcher { return; } list($storageId, $internalPath) = $cacheItem; - $mounts = Mount::findByStorageId($storageId); + $mounts = Mount\Manager::findByStorageId($storageId); if (count($mounts) === 0) { //if the storage we need isn't mounted on default, try to find a user that has access to the storage diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d60d430d77..d0cac9dc1d 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -236,7 +236,9 @@ class Filesystem { } static public function initMounts(){ - self::$mounts = new Mount\Manager(); + if(!self::$mounts) { + self::$mounts = new Mount\Manager(); + } } /** From 5d572c344925e4599741ada08b70e48c88fb9011 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 19 May 2013 22:31:00 +0200 Subject: [PATCH 265/575] update phpdoc --- apps/files_encryption/lib/keymanager.php | 6 ++++-- apps/files_encryption/lib/session.php | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 74462a0d1e..b422ff099b 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -28,10 +28,12 @@ namespace OCA\Encryption; * @note Where a method requires a view object, it's root must be '/' */ class Keymanager { - + /** * @brief retrieve the ENCRYPTED private key from a user - * + * + * @param \OC_FilesystemView $view + * @param string $user * @return string private key or false (hopefully) * @note the key returned by this method must be decrypted before use */ diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index f02315f95d..8d604dc721 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -97,8 +97,8 @@ class Session { /** * @brief Sets user private key to session + * @param string $privateKey * @return bool - * */ public function setPrivateKey( $privateKey ) { From dc39ef378e0ffd76d8105ae14822c1e3cc0d01a1 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 00:38:23 +0200 Subject: [PATCH 266/575] changed recovery_enabled and migration_status columns to integer and fix tests --- apps/files_encryption/appinfo/database.xml | 4 ++-- apps/files_encryption/tests/share.php | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/files_encryption/appinfo/database.xml b/apps/files_encryption/appinfo/database.xml index ca149f0c69..4587930da0 100644 --- a/apps/files_encryption/appinfo/database.xml +++ b/apps/files_encryption/appinfo/database.xml @@ -22,14 +22,14 @@ recovery_enabled - boolean + integer true 0 Whether encryption key recovery is enabled migration_status - boolean + integer true 0 Whether encryption migration has been performed diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index de02513dea..efff8e322e 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -452,7 +452,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, false); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); // login as admin $this->loginHelper('admin'); @@ -572,7 +572,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertTrue($util->checkRecoveryPassword('test123')); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(true)); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure $this->view->mkdir('/admin/files' . $this->folder1); @@ -594,7 +594,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); // disable recovery for admin - $this->assertTrue($util->setRecoveryForUser(false)); + $this->assertTrue($util->setRecoveryForUser(0)); // remove all recovery keys $util->removeRecoveryKeys('/'); @@ -604,7 +604,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(true)); + $this->assertTrue($util->setRecoveryForUser(1)); // remove all recovery keys $util->addRecoveryKeys('/'); @@ -639,7 +639,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'user1'); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(true)); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure $this->view->mkdir('/user1/files' . $this->folder1); @@ -688,7 +688,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(false)); + $this->assertTrue($util->setRecoveryForUser(0)); } /** From b1d0e8f40b97974591c42b3779d949c745a23351 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 00:47:00 +0200 Subject: [PATCH 267/575] removed /l10n/.tx/ from .gitignore --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index bc0c1d53a5..fe89c74ab3 100644 --- a/.gitignore +++ b/.gitignore @@ -76,5 +76,4 @@ nbproject data-autotest /tests/coverage* /tests/autoconfig* -/tests/autotest* -/l10n/.tx/ \ No newline at end of file +/tests/autotest* \ No newline at end of file From 3b850a2524471030da27227cba18b31ffc998aa4 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 01:24:36 +0200 Subject: [PATCH 268/575] reformat code added and changed phpdoc --- apps/files_encryption/lib/crypt.php | 863 +++++++------ apps/files_encryption/lib/helper.php | 114 +- apps/files_encryption/lib/keymanager.php | 517 ++++---- apps/files_encryption/lib/proxy.php | 669 +++++----- apps/files_encryption/lib/session.php | 163 +-- apps/files_encryption/lib/stream.php | 578 ++++----- apps/files_encryption/lib/util.php | 1322 +++++++++++--------- apps/files_encryption/tests/crypt.php | 903 ++++++------- apps/files_encryption/tests/keymanager.php | 149 +-- apps/files_encryption/tests/share.php | 640 +++++----- apps/files_encryption/tests/util.php | 192 +-- 11 files changed, 3175 insertions(+), 2935 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index ba588819d0..783c19d254 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -4,8 +4,8 @@ * ownCloud * * @author Sam Tuke, Frank Karlitschek, Robin Appelman - * @copyright 2012 Sam Tuke samtuke@owncloud.com, - * Robin Appelman icewind@owncloud.com, Frank Karlitschek + * @copyright 2012 Sam Tuke samtuke@owncloud.com, + * Robin Appelman icewind@owncloud.com, Frank Karlitschek * frank@owncloud.org * * This library is free software; you can redistribute it and/or @@ -27,505 +27,532 @@ namespace OCA\Encryption; require_once 'Crypt_Blowfish/Blowfish.php'; -// Todo: -// - Add a setting "Don´t encrypt files larger than xx because of performance" -// - Don't use a password directly as encryption key. but a key which is -// stored on the server and encrypted with the user password. -> change pass -// faster - /** * Class for common cryptography functionality */ -class Crypt { +class Crypt +{ /** * @brief return encryption mode client or server side encryption - * @param string user name (use system wide setting if name=null) + * @param string $user name (use system wide setting if name=null) * @return string 'client' or 'server' */ - public static function mode( $user = null ) { + public static function mode($user = null) + { return 'server'; - + } - - /** - * @brief Create a new encryption keypair - * @return array publicKey, privatekey - */ - public static function createKeypair() { - + + /** + * @brief Create a new encryption keypair + * @return array publicKey, privatekey + */ + public static function createKeypair() + { + $res = openssl_pkey_new(array('private_key_bits' => 4096)); // Get private key - openssl_pkey_export( $res, $privateKey ); + openssl_pkey_export($res, $privateKey); // Get public key - $publicKey = openssl_pkey_get_details( $res ); - + $publicKey = openssl_pkey_get_details($res); + $publicKey = $publicKey['key']; - - return( array( 'publicKey' => $publicKey, 'privateKey' => $privateKey ) ); - + + return (array('publicKey' => $publicKey, 'privateKey' => $privateKey)); + } - - /** - * @brief Add arbitrary padding to encrypted data - * @param string $data data to be padded - * @return padded data - * @note In order to end up with data exactly 8192 bytes long we must - * add two letters. It is impossible to achieve exactly 8192 length - * blocks with encryption alone, hence padding is added to achieve the - * required length. - */ - public static function addPadding( $data ) { - + + /** + * @brief Add arbitrary padding to encrypted data + * @param string $data data to be padded + * @return string padded data + * @note In order to end up with data exactly 8192 bytes long we must + * add two letters. It is impossible to achieve exactly 8192 length + * blocks with encryption alone, hence padding is added to achieve the + * required length. + */ + public static function addPadding($data) + { + $padded = $data . 'xx'; - + return $padded; - + } - - /** - * @brief Remove arbitrary padding to encrypted data - * @param string $padded padded data to remove padding from - * @return unpadded data on success, false on error - */ - public static function removePadding( $padded ) { - - if ( substr( $padded, -2 ) == 'xx' ) { - - $data = substr( $padded, 0, -2 ); - + + /** + * @brief Remove arbitrary padding to encrypted data + * @param string $padded padded data to remove padding from + * @return string unpadded data on success, false on error + */ + public static function removePadding($padded) + { + + if (substr($padded, -2) == 'xx') { + + $data = substr($padded, 0, -2); + return $data; - + } else { - + // TODO: log the fact that unpadded data was submitted for removal of padding return false; - + } - + } - - /** - * @brief Check if a file's contents contains an IV and is symmetrically encrypted - * @return true / false - * @note see also OCA\Encryption\Util->isEncryptedPath() - */ - public static function isCatfileContent( $content ) { - - if ( !$content ) { - + + /** + * @brief Check if a file's contents contains an IV and is symmetrically encrypted + * @param $content + * @return boolean + * @note see also OCA\Encryption\Util->isEncryptedPath() + */ + public static function isCatfileContent($content) + { + + if (!$content) { + return false; - + } - - $noPadding = self::removePadding( $content ); - + + $noPadding = self::removePadding($content); + // Fetch encryption metadata from end of file - $meta = substr( $noPadding, -22 ); - + $meta = substr($noPadding, -22); + // Fetch IV from end of file - $iv = substr( $meta, -16 ); - + $iv = substr($meta, -16); + // Fetch identifier from start of metadata - $identifier = substr( $meta, 0, 6 ); - - if ( $identifier == '00iv00') { - + $identifier = substr($meta, 0, 6); + + if ($identifier == '00iv00') { + return true; - + } else { - + return false; - + } - + } - + /** * Check if a file is encrypted according to database file cache * @param string $path * @return bool */ - public static function isEncryptedMeta( $path ) { - + public static function isEncryptedMeta($path) + { + // TODO: Use DI to get \OC\Files\Filesystem out of here - - // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $path); - - // Return encryption status - return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; - - } - - /** - * @brief Check if a file is encrypted via legacy system - * @param string $relPath The path of the file, relative to user/data; - * e.g. filename or /Docs/filename, NOT admin/files/filename - * @return true / false - */ - public static function isLegacyEncryptedContent( $data, $relPath ) { // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); - + $metadata = \OC\Files\Filesystem::getFileInfo($path); + + // Return encryption status + return isset($metadata['encrypted']) and ( bool )$metadata['encrypted']; + + } + + /** + * @brief Check if a file is encrypted via legacy system + * @param $data + * @param string $relPath The path of the file, relative to user/data; + * e.g. filename or /Docs/filename, NOT admin/files/filename + * @return boolean + */ + public static function isLegacyEncryptedContent($data, $relPath) + { + + // Fetch all file metadata from DB + $metadata = \OC\Files\Filesystem::getFileInfo($relPath, ''); + // If a file is flagged with encryption in DB, but isn't a // valid content + IV combination, it's probably using the // legacy encryption system - if ( - isset( $metadata['encrypted'] ) - and $metadata['encrypted'] === true - and ! self::isCatfileContent( $data ) + if ( + isset($metadata['encrypted']) + and $metadata['encrypted'] === true + and !self::isCatfileContent($data) ) { - + return true; - + } else { - + return false; - + } - + } - - /** - * @brief Symmetrically encrypt a string - * @returns encrypted file - */ - public static function encrypt( $plainContent, $iv, $passphrase = '' ) { - - if ( $encryptedContent = openssl_encrypt( $plainContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + + /** + * @brief Symmetrically encrypt a string + * @return string encrypted file content + */ + public static function encrypt($plainContent, $iv, $passphrase = '') + { + + if ($encryptedContent = openssl_encrypt($plainContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $encryptedContent; - + } else { - - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR ); - + + \OC_Log::write('Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR); + return false; - + } - + } - - /** - * @brief Symmetrically decrypt a string - * @returns decrypted file - */ - public static function decrypt( $encryptedContent, $iv, $passphrase ) { - - if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + + /** + * @brief Symmetrically decrypt a string + * @return string decrypted file content + */ + public static function decrypt($encryptedContent, $iv, $passphrase) + { + + if ($plainContent = openssl_decrypt($encryptedContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $plainContent; - - + + } else { - - throw new \Exception( 'Encryption library: Decryption (symmetric) of content failed' ); - + + throw new \Exception('Encryption library: Decryption (symmetric) of content failed'); + return false; - + } - + } - - /** - * @brief Concatenate encrypted data with its IV and padding - * @param string $content content to be concatenated - * @param string $iv IV to be concatenated - * @returns string concatenated content - */ - public static function concatIv ( $content, $iv ) { - + + /** + * @brief Concatenate encrypted data with its IV and padding + * @param string $content content to be concatenated + * @param string $iv IV to be concatenated + * @returns string concatenated content + */ + public static function concatIv($content, $iv) + { + $combined = $content . '00iv00' . $iv; - + return $combined; - + } - - /** - * @brief Split concatenated data and IV into respective parts - * @param string $catFile concatenated data to be split - * @returns array keys: encrypted, iv - */ - public static function splitIv ( $catFile ) { - + + /** + * @brief Split concatenated data and IV into respective parts + * @param string $catFile concatenated data to be split + * @returns array keys: encrypted, iv + */ + public static function splitIv($catFile) + { + // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); - + $meta = substr($catFile, -22); + // Fetch IV from end of file - $iv = substr( $meta, -16 ); - + $iv = substr($meta, -16); + // Remove IV and IV identifier text to expose encrypted content - $encrypted = substr( $catFile, 0, -22 ); - + $encrypted = substr($catFile, 0, -22); + $split = array( 'encrypted' => $encrypted - , 'iv' => $iv + , 'iv' => $iv ); - + return $split; - + } - - /** - * @brief Symmetrically encrypts a string and returns keyfile content - * @param $plainContent content to be encrypted in keyfile - * @returns encrypted content combined with IV - * @note IV need not be specified, as it will be stored in the returned keyfile - * and remain accessible therein. - */ - public static function symmetricEncryptFileContent( $plainContent, $passphrase = '' ) { - - if ( !$plainContent ) { - + + /** + * @brief Symmetrically encrypts a string and returns keyfile content + * @param string $plainContent content to be encrypted in keyfile + * @param string $passphrase + * @return bool|string + * @return string encrypted content combined with IV + * @note IV need not be specified, as it will be stored in the returned keyfile + * and remain accessible therein. + */ + public static function symmetricEncryptFileContent($plainContent, $passphrase = '') + { + + if (!$plainContent) { + return false; - + } - + $iv = self::generateIv(); - - if ( $encryptedContent = self::encrypt( $plainContent, $iv, $passphrase ) ) { - - // Combine content to encrypt with IV identifier and actual IV - $catfile = self::concatIv( $encryptedContent, $iv ); - - $padded = self::addPadding( $catfile ); - - return $padded; - + + if ($encryptedContent = self::encrypt($plainContent, $iv, $passphrase)) { + + // Combine content to encrypt with IV identifier and actual IV + $catfile = self::concatIv($encryptedContent, $iv); + + $padded = self::addPadding($catfile); + + return $padded; + } else { - - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR ); - + + \OC_Log::write('Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR); + return false; - + } - + } /** - * @brief Symmetrically decrypts keyfile content - * @param string $source - * @param string $target - * @param string $key the decryption key - * @returns decrypted content - * - * This function decrypts a file - */ - public static function symmetricDecryptFileContent( $keyfileContent, $passphrase = '' ) { - - if ( !$keyfileContent ) { - - throw new \Exception( 'Encryption library: no data provided for decryption' ); - + * @brief Symmetrically decrypts keyfile content + * @param $keyfileContent + * @param string $passphrase + * @throws \Exception + * @return bool|string + * @internal param string $source + * @internal param string $target + * @internal param string $key the decryption key + * @returns string decrypted content + * + * This function decrypts a file + */ + public static function symmetricDecryptFileContent($keyfileContent, $passphrase = '') + { + + if (!$keyfileContent) { + + throw new \Exception('Encryption library: no data provided for decryption'); + } - + // Remove padding - $noPadding = self::removePadding( $keyfileContent ); - + $noPadding = self::removePadding($keyfileContent); + // Split into enc data and catfile - $catfile = self::splitIv( $noPadding ); - - if ( $plainContent = self::decrypt( $catfile['encrypted'], $catfile['iv'], $passphrase ) ) { - + $catfile = self::splitIv($noPadding); + + if ($plainContent = self::decrypt($catfile['encrypted'], $catfile['iv'], $passphrase)) { + return $plainContent; - + } - + } - + /** - * @brief Creates symmetric keyfile content using a generated key - * @param string $plainContent content to be encrypted - * @returns array keys: key, encrypted - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file - */ - public static function symmetricEncryptFileContentKeyfile( $plainContent ) { - + * @brief Creates symmetric keyfile content using a generated key + * @param string $plainContent content to be encrypted + * @returns array keys: key, encrypted + * @note symmetricDecryptFileContent() can be used to decrypt files created using this method + * + * This function decrypts a file + */ + public static function symmetricEncryptFileContentKeyfile($plainContent) + { + $key = self::generateKey(); - - if( $encryptedContent = self::symmetricEncryptFileContent( $plainContent, $key ) ) { - + + if ($encryptedContent = self::symmetricEncryptFileContent($plainContent, $key)) { + return array( 'key' => $key - , 'encrypted' => $encryptedContent + , 'encrypted' => $encryptedContent ); - + } else { - + return false; - + } - + } - + /** - * @brief Create asymmetrically encrypted keyfile content using a generated key - * @param string $plainContent content to be encrypted - * @param array $publicKeys array keys must be the userId of corresponding user - * @returns array keys: keys (array, key = userId), data - * @note symmetricDecryptFileContent() can decrypt files created using this method - */ - public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { - + * @brief Create asymmetrically encrypted keyfile content using a generated key + * @param string $plainContent content to be encrypted + * @param array $publicKeys array keys must be the userId of corresponding user + * @returns array keys: keys (array, key = userId), data + * @note symmetricDecryptFileContent() can decrypt files created using this method + */ + public static function multiKeyEncrypt($plainContent, array $publicKeys) + { + // openssl_seal returns false without errors if $plainContent // is empty, so trigger our own error - if ( empty( $plainContent ) ) { - - trigger_error( "Cannot mutliKeyEncrypt empty plain content" ); - throw new \Exception( 'Cannot mutliKeyEncrypt empty plain content' ); - + if (empty($plainContent)) { + + trigger_error("Cannot mutliKeyEncrypt empty plain content"); + throw new \Exception('Cannot mutliKeyEncrypt empty plain content'); + } - + // Set empty vars to be set by openssl by reference $sealed = ''; $shareKeys = array(); - - if( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { - + + if (openssl_seal($plainContent, $sealed, $shareKeys, $publicKeys)) { + $i = 0; - + // Ensure each shareKey is labelled with its // corresponding userId - foreach ( $publicKeys as $userId => $publicKey ) { - + foreach ($publicKeys as $userId => $publicKey) { + $mappedShareKeys[$userId] = $shareKeys[$i]; $i++; - + } - + return array( 'keys' => $mappedShareKeys - , 'data' => $sealed + , 'data' => $sealed ); - - } else { - - return false; - - } - - } - - /** - * @brief Asymmetrically encrypt a file using multiple public keys - * @param string $plainContent content to be encrypted - * @returns string $plainContent decrypted string - * @note symmetricDecryptFileContent() can be used to decrypt files created using this method - * - * This function decrypts a file - */ - public static function multiKeyDecrypt( $encryptedContent, $shareKey, $privateKey ) { - - if ( !$encryptedContent ) { - - return false; - - } - - if ( openssl_open( $encryptedContent, $plainContent, $shareKey, $privateKey ) ) { - - return $plainContent; - - } else { - - \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); - - return false; - - } - - } - - /** - * @brief Asymetrically encrypt a string using a public key - * @returns encrypted file - */ - public static function keyEncrypt( $plainContent, $publicKey ) { - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); - - return $encryptedContent; - + } else { + + return false; + + } + } - - /** - * @brief Asymetrically decrypt a file using a private key - * @returns decrypted file - */ - public static function keyDecrypt( $encryptedContent, $privatekey ) { - - $result = @openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); - - if ( $result ) { + + /** + * @brief Asymmetrically encrypt a file using multiple public keys + * @param $encryptedContent + * @param $shareKey + * @param $privateKey + * @return bool + * @internal param string $plainContent content to be encrypted + * @returns string $plainContent decrypted string + * @note symmetricDecryptFileContent() can be used to decrypt files created using this method + * + * This function decrypts a file + */ + public static function multiKeyDecrypt($encryptedContent, $shareKey, $privateKey) + { + + if (!$encryptedContent) { + + return false; + + } + + if (openssl_open($encryptedContent, $plainContent, $shareKey, $privateKey)) { + + return $plainContent; + + } else { + + \OC_Log::write('Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR); + + return false; + + } + + } + + /** + * @brief Asymetrically encrypt a string using a public key + * @return string encrypted file + */ + public static function keyEncrypt($plainContent, $publicKey) + { + + openssl_public_encrypt($plainContent, $encryptedContent, $publicKey); + + return $encryptedContent; + + } + + /** + * @brief Asymetrically decrypt a file using a private key + * @return string decrypted file + */ + public static function keyDecrypt($encryptedContent, $privatekey) + { + + $result = @openssl_private_decrypt($encryptedContent, $plainContent, $privatekey); + + if ($result) { return $plainContent; } return $result; - + } - + /** * @brief Generates a pseudo random initialisation vector * @return String $iv generated IV */ - public static function generateIv() { - - if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { - - if ( !$strong ) { - + public static function generateIv() + { + + if ($random = openssl_random_pseudo_bytes(12, $strong)) { + + if (!$strong) { + // If OpenSSL indicates randomness is insecure, log error - \OC_Log::write( 'Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN ); - + \OC_Log::write('Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN); + } - + // We encode the iv purely for string manipulation // purposes - it gets decoded before use - $iv = base64_encode( $random ); - + $iv = base64_encode($random); + return $iv; - + } else { - - throw new Exception( 'Generating IV failed' ); - + + throw new \Exception('Generating IV failed'); + } - + } - + /** * @brief Generate a pseudo random 1024kb ASCII key * @returns $key Generated key */ - public static function generateKey() { - + public static function generateKey() + { + // Generate key - if ( $key = base64_encode( openssl_random_pseudo_bytes( 183, $strong ) ) ) { - - if ( !$strong ) { - + if ($key = base64_encode(openssl_random_pseudo_bytes(183, $strong))) { + + if (!$strong) { + // If OpenSSL indicates randomness is insecure, log error - throw new Exception ( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); - + throw new \Exception('Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()'); + } - + return $key; - + } else { - + return false; - + } - + } /** @@ -535,70 +562,89 @@ class Crypt { * * if the key is left out, the default handeler will be used */ - public static function getBlowfish( $key = '' ) { - - if ( $key ) { - - return new \Crypt_Blowfish( $key ); - + public static function getBlowfish($key = '') + { + + if ($key) { + + return new \Crypt_Blowfish($key); + } else { - + return false; - + } - + } - - public static function legacyCreateKey( $passphrase ) { - + + /** + * @param $passphrase + * @return mixed + */ + public static function legacyCreateKey($passphrase) + { + // Generate a random integer - $key = mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ); + $key = mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999); // Encrypt the key with the passphrase - $legacyEncKey = self::legacyEncrypt( $key, $passphrase ); + $legacyEncKey = self::legacyEncrypt($key, $passphrase); return $legacyEncKey; - + } /** * @brief encrypts content using legacy blowfish system - * @param $content the cleartext message you want to encrypt - * @param $key the encryption key (optional) - * @returns encrypted content + * @param string $content the cleartext message you want to encrypt + * @param string $passphrase + * @return + * @internal param \OCA\Encryption\the $key encryption key (optional) + * @returns string encrypted content * * This function encrypts an content */ - public static function legacyEncrypt( $content, $passphrase = '' ) { - - $bf = self::getBlowfish( $passphrase ); - - return $bf->encrypt( $content ); - - } - - /** - * @brief decrypts content using legacy blowfish system - * @param $content the cleartext message you want to decrypt - * @param $key the encryption key (optional) - * @returns cleartext content - * - * This function decrypts an content - */ - public static function legacyDecrypt( $content, $passphrase = '' ) { - - $bf = self::getBlowfish( $passphrase ); - - $decrypted = $bf->decrypt( $content ); - - return rtrim($decrypted, "\0");; - + public static function legacyEncrypt($content, $passphrase = '') + { + + $bf = self::getBlowfish($passphrase); + + return $bf->encrypt($content); + } - private static function legacyBlockDecrypt($data, $key='',$maxLength=0) { + /** + * @brief decrypts content using legacy blowfish system + * @param string $content the cleartext message you want to decrypt + * @param string $passphrase + * @return string + * @internal param \OCA\Encryption\the $key encryption key (optional) + * @return string cleartext content + * + * This function decrypts an content + */ + public static function legacyDecrypt($content, $passphrase = '') + { + + $bf = self::getBlowfish($passphrase); + + $decrypted = $bf->decrypt($content); + + return rtrim($decrypted, "\0");; + + } + + /** + * @param $data + * @param string $key + * @param int $maxLength + * @return string + */ + private static function legacyBlockDecrypt($data, $key = '', $maxLength = 0) + { $result = ''; while (strlen($data)) { - $result.=self::legacyDecrypt(substr($data, 0, 8192), $key); + $result .= self::legacyDecrypt(substr($data, 0, 8192), $key); $data = substr($data, 8192); } if ($maxLength > 0) { @@ -607,19 +653,28 @@ class Crypt { return rtrim($result, "\0"); } } - - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { - - $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); + + /** + * @param $legacyEncryptedContent + * @param $legacyPassphrase + * @param $publicKeys + * @param $newPassphrase + * @param $path + * @return array + */ + public static function legacyKeyRecryptKeyfile($legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path) + { + + $decrypted = self::legacyBlockDecrypt($legacyEncryptedContent, $legacyPassphrase); // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); + $cryptedData = self::symmetricEncryptFileContentKeyfile($decrypted); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt($cryptedData['key'], $publicKeys); + + return array('data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys']); - return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); - } } \ No newline at end of file diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index a04c65e251..c57f0bc009 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -23,76 +23,82 @@ namespace OCA\Encryption; -/** - * @brief Class to manage registration of hooks an various helper methods - */ + /** + * @brief Class to manage registration of hooks an various helper methods + */ /** * Class Helper * @package OCA\Encryption */ -class Helper { - +class Helper +{ + /** * @brief register share related hooks - * + * */ - public static function registerShareHooks() { + public static function registerShareHooks() + { - \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); + \OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared'); + \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared'); + \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare'); } - /** - * @brief register user related hooks - * - */ - public static function registerUserHooks() { + /** + * @brief register user related hooks + * + */ + public static function registerUserHooks() + { - \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); - \OCP\Util::connectHook( 'OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); - \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); - \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); - } + \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); + \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); + \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); + \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); + } - /** - * @brief register webdav related hooks - * - */ - public static function registerWebdavHooks() { + /** + * @brief register webdav related hooks + * + */ + public static function registerWebdavHooks() + { - } + } - /** - * @brief register filesystem related hooks - * - */ - public static function registerFilesystemHooks() { + /** + * @brief register filesystem related hooks + * + */ + public static function registerFilesystemHooks() + { - \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); - } + \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); + } - /** - * @brief setup user for files_encryption - * - * @param Util $util - * @param string $password - * @return bool - */ - public static function setupUser($util, $password) { - // Check files_encryption infrastructure is ready for action - if ( ! $util->ready() ) { + /** + * @brief setup user for files_encryption + * + * @param Util $util + * @param string $password + * @return bool + */ + public static function setupUser($util, $password) + { + // Check files_encryption infrastructure is ready for action + if (!$util->ready()) { - \OC_Log::write( 'Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); + \OC_Log::write('Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG); - if(!$util->setupServerSide( $password )) { - return false; - } - } + if (!$util->setupServerSide($password)) { + return false; + } + } - return true; - } + return true; + } /** * @brief enable recovery @@ -103,7 +109,8 @@ class Helper { * @internal param string $password * @return bool */ - public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { + public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) + { $view = new \OC\Files\View('/'); if ($recoveryKeyId === null) { @@ -139,7 +146,7 @@ class Helper { $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); if (!$view->is_dir('/control-file')) { $view->mkdir('/control-file'); } @@ -170,7 +177,8 @@ class Helper { * @param $recoveryPassword * @return bool */ - public static function adminDisableRecovery($recoveryPassword) { + public static function adminDisableRecovery($recoveryPassword) + { $util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); $return = $util->checkRecoveryPassword($recoveryPassword); diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index b422ff099b..1bc334e7a1 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -27,7 +27,8 @@ namespace OCA\Encryption; * @brief Class to manage storage and retrieval of encryption keys * @note Where a method requires a view object, it's root must be '/' */ -class Keymanager { +class Keymanager +{ /** * @brief retrieve the ENCRYPTED private key from a user @@ -37,17 +38,18 @@ class Keymanager { * @return string private key or false (hopefully) * @note the key returned by this method must be decrypted before use */ - public static function getPrivateKey( \OC_FilesystemView $view, $user ) { - - $path = '/' . $user . '/' . 'files_encryption' . '/' . $user.'.private.key'; + public static function getPrivateKey(\OC_FilesystemView $view, $user) + { - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $path = '/' . $user . '/' . 'files_encryption' . '/' . $user . '.private.key'; - $key = $view->file_get_contents( $path ); + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $key = $view->file_get_contents($path); + + \OC_FileProxy::$enabled = $proxyStatus; - \OC_FileProxy::$enabled = $proxyStatus; - return $key; } @@ -57,104 +59,111 @@ class Keymanager { * @param $userId * @return string public key or false */ - public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + public static function getPublicKey(\OC_FilesystemView $view, $userId) + { - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - - $result = $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); - + + $result = $view->file_get_contents('/public-keys/' . $userId . '.public.key'); + \OC_FileProxy::$enabled = $proxyStatus; - return $result; - + return $result; + } - + /** * @brief Retrieve a user's public and private key * @param \OC_FilesystemView $view * @param $userId * @return array keys: privateKey, publicKey */ - public static function getUserKeys( \OC_FilesystemView $view, $userId ) { - + public static function getUserKeys(\OC_FilesystemView $view, $userId) + { + return array( - 'publicKey' => self::getPublicKey( $view, $userId ) - , 'privateKey' => self::getPrivateKey( $view, $userId ) + 'publicKey' => self::getPublicKey($view, $userId) + , 'privateKey' => self::getPrivateKey($view, $userId) ); - + } - + /** * @brief Retrieve public keys for given users * @param \OC_FilesystemView $view * @param array $userIds * @return array of public keys for the specified users */ - public static function getPublicKeys( \OC_FilesystemView $view, array $userIds ) { - + public static function getPublicKeys(\OC_FilesystemView $view, array $userIds) + { + $keys = array(); - - foreach ( $userIds as $userId ) { - - $keys[$userId] = self::getPublicKey( $view, $userId ); - + + foreach ($userIds as $userId) { + + $keys[$userId] = self::getPublicKey($view, $userId); + } - + return $keys; - + } - + /** * @brief store file encryption key * + * @param \OC_FilesystemView $view * @param string $path relative path of the file, including filename - * @param string $key + * @param $userId + * @param $catfile + * @internal param string $key * @return bool true/false - * @note The keyfile is not encrypted here. Client code must + * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { - + public static function setFileKey(\OC_FilesystemView $view, $path, $userId, $catfile) + { + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + $util = new Util($view, \OCP\User::getUser()); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/keyfiles'; - - $targetPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); - - if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { + + $targetPath = self::keySetPreparation($view, $filename, $basePath, $owner); + + if (!$view->is_dir($basePath . '/' . $targetPath)) { // create all parent folders - $info = pathinfo( $basePath . '/' . $targetPath ); - $keyfileFolderName = $view->getLocalFolder( $info['dirname'] ); - - if ( ! file_exists( $keyfileFolderName ) ) { - - mkdir( $keyfileFolderName, 0750, true ); - + $info = pathinfo($basePath . '/' . $targetPath); + $keyfileFolderName = $view->getLocalFolder($info['dirname']); + + if (!file_exists($keyfileFolderName)) { + + mkdir($keyfileFolderName, 0750, true); + } } // try reusing key file if part file - if ( self::isPartialFilePath( $targetPath ) ) { - - $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath( $targetPath ) . '.key', $catfile ); - + if (self::isPartialFilePath($targetPath)) { + + $result = $view->file_put_contents($basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile); + } else { - - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); - + + $result = $view->file_put_contents($basePath . '/' . $targetPath . '.key', $catfile); + } - + \OC_FileProxy::$enabled = $proxyStatus; - + return $result; - + } /** @@ -163,15 +172,16 @@ class Keymanager { * @return string File path without .part extension * @note this is needed for reusing keys */ - public static function fixPartialFilePath( $path ) { - + public static function fixPartialFilePath($path) + { + if (preg_match('/\.part$/', $path)) { $newLength = strlen($path) - 5; $fPath = substr($path, 0, $newLength); return $fPath; - + } else { return $path; @@ -185,19 +195,21 @@ class Keymanager { * @param string $path Path that may identify a .part file * @return bool */ - public static function isPartialFilePath( $path ) { - - if ( preg_match('/\.part$/', $path ) ) { - + public static function isPartialFilePath($path) + { + + if (preg_match('/\.part$/', $path)) { + return true; - + } else { - + return false; - + } } + /** * @brief retrieve keyfile for an encrypted file * @param \OC_FilesystemView $view @@ -208,227 +220,239 @@ class Keymanager { * @note The keyfile returned is asymmetrically encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getFileKey(\OC_FilesystemView $view, $userId, $filePath) + { // try reusing key file if part file - if ( self::isPartialFilePath( $filePath ) ) { - - $result = self::getFileKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); - - if ( $result ) { - + if (self::isPartialFilePath($filePath)) { + + $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); + + if ($result) { + return $result; - + } - + } $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); - $filePath_f = ltrim( $filename, '/' ); + $filePath_f = ltrim($filename, '/'); $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - - if ( $view->file_exists( $keyfilePath ) ) { - $result = $view->file_get_contents( $keyfilePath ); - + if ($view->file_exists($keyfilePath)) { + + $result = $view->file_get_contents($keyfilePath); + } else { - - $result = false; - + + $result = false; + } - + \OC_FileProxy::$enabled = $proxyStatus; - + return $result; - + } - + /** * @brief Delete a keyfile * - * @param OC_FilesystemView $view + * @param \OC_FilesystemView $view * @param string $userId username * @param string $path path of the file the key belongs to * @return bool Outcome of unlink operation * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT * /data/admin/files/mydoc.txt */ - public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { - - $trimmed = ltrim( $path, '/' ); - $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; + public static function deleteFileKey(\OC_FilesystemView $view, $userId, $path) + { + + $trimmed = ltrim($path, '/'); + $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; $result = false; - if ( $view->is_dir($keyPath) ) { + if ($view->is_dir($keyPath)) { $result = $view->unlink($keyPath); - } else if ( $view->file_exists( $keyPath.'.key' ) ) { + } else if ($view->file_exists($keyPath . '.key')) { - $result = $view->unlink( $keyPath.'.key' ); + $result = $view->unlink($keyPath . '.key'); } - if ( !$result ) { - - \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); + if (!$result) { + + \OC_Log::write('Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR); } return $result; - + } - + /** * @brief store private key from the user - * @param string key + * @param string $key * @return bool * @note Encryption of the private key must be performed by client code * as no encryption takes place here */ - public static function setPrivateKey( $key ) { - + public static function setPrivateKey($key) + { + $user = \OCP\User::getUser(); - - $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); + + $view = new \OC_FilesystemView('/' . $user . '/files_encryption'); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - $result = $view->file_put_contents( $user . '.private.key', $key ); - + + if (!$view->file_exists('')) $view->mkdir(''); + + $result = $view->file_put_contents($user . '.private.key', $key); + \OC_FileProxy::$enabled = $proxyStatus; return $result; - + } - + /** * @brief store private keys from the user * - * @param string privatekey - * @param string publickey + * @param string $privatekey + * @param string $publickey * @return bool true/false */ - public static function setUserKeys($privatekey, $publickey) { - - return ( self::setPrivateKey( $privatekey ) && self::setPublicKey( $publickey ) ); - + public static function setUserKeys($privatekey, $publickey) + { + + return (self::setPrivateKey($privatekey) && self::setPublicKey($publickey)); + } - + /** * @brief store public key of the user * - * @param string key + * @param string $key * @return bool true/false */ - public static function setPublicKey( $key ) { - - $view = new \OC_FilesystemView( '/public-keys' ); + public static function setPublicKey($key) + { + + $view = new \OC_FilesystemView('/public-keys'); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - - if ( !$view->file_exists( '' ) ) $view->mkdir( '' ); - - $result = $view->file_put_contents( \OCP\User::getUser() . '.public.key', $key ); - + + if (!$view->file_exists('')) $view->mkdir(''); + + $result = $view->file_put_contents(\OCP\User::getUser() . '.public.key', $key); + \OC_FileProxy::$enabled = $proxyStatus; return $result; - + } - + /** * @brief store share key * + * @param \OC_FilesystemView $view * @param string $path relative path of the file, including filename - * @param string $key - * @param null $view - * @param string $dbClassName + * @param $userId + * @param $shareKey + * @internal param string $key + * @internal param string $dbClassName * @return bool true/false * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + public static function setShareKey(\OC_FilesystemView $view, $path, $userId, $shareKey) + { // Here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/share-keys'; - - $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); + + $shareKeyPath = self::keySetPreparation($view, $filename, $basePath, $owner); // try reusing key file if part file - if(self::isPartialFilePath($shareKeyPath)) { - + if (self::isPartialFilePath($shareKeyPath)) { + $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; - + } else { - + $writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey'; - + } $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_put_contents( $writePath, $shareKey ); + $result = $view->file_put_contents($writePath, $shareKey); \OC_FileProxy::$enabled = $proxyStatus; - if ( - is_int( $result ) + if ( + is_int($result) && $result > 0 ) { - + return true; - + } else { - + return false; - + } - + } - + /** * @brief store multiple share keys for a single file + * @param \OC_FilesystemView $view + * @param $path + * @param array $shareKeys * @return bool */ - public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { + public static function setShareKeys(\OC_FilesystemView $view, $path, array $shareKeys) + { // $shareKeys must be an array with the following format: // [userId] => [encrypted key] - + $result = true; - - foreach ( $shareKeys as $userId => $shareKey ) { - - if ( ! self::setShareKey( $view, $path, $userId, $shareKey ) ) { - + + foreach ($shareKeys as $userId => $shareKey) { + + if (!self::setShareKey($view, $path, $userId, $shareKey)) { + // If any of the keys are not set, flag false $result = false; - + } - + } - + // Returns false if any of the keys weren't set return $result; - + } - + /** * @brief retrieve shareKey for an encrypted file * @param \OC_FilesystemView $view @@ -439,59 +463,61 @@ class Keymanager { * @note The sharekey returned is encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getShareKey(\OC_FilesystemView $view, $userId, $filePath) + { // try reusing key file if part file - if(self::isPartialFilePath($filePath)) { - + if (self::isPartialFilePath($filePath)) { + $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); - - if($result) { - + + if ($result) { + return $result; - + } - + } $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); - if ( $view->file_exists( $shareKeyPath ) ) { - - $result = $view->file_get_contents( $shareKeyPath ); - + if ($view->file_exists($shareKeyPath)) { + + $result = $view->file_get_contents($shareKeyPath); + } else { - + $result = false; - + } - + \OC_FileProxy::$enabled = $proxyStatus; - + return $result; - + } /** * @brief delete all share keys of a given file * @param \OC_FilesystemView $view - * @param type $userId owner of the file - * @param type $filePath path to the file, relative to the owners file dir + * @param string $userId owner of the file + * @param string $filePath path to the file, relative to the owners file dir */ - public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) { - - if ($view->is_dir($userId.'/files/'.$filePath)) { - $view->unlink($userId.'/files_encryption/share-keys/'.$filePath); + public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) + { + + if ($view->is_dir($userId . '/files/' . $filePath)) { + $view->unlink($userId . '/files_encryption/share-keys/' . $filePath); } else { - $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$filePath); - $matches = glob(preg_quote($localKeyPath).'*.shareKey'); + $localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $filePath); + $matches = glob(preg_quote($localKeyPath) . '*.shareKey'); foreach ($matches as $ma) { unlink($ma); } @@ -501,13 +527,14 @@ class Keymanager { /** * @brief Delete a single user's shareKey for a single file */ - public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { + public static function delShareKey(\OC_FilesystemView $view, $userIds, $filePath) + { - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); list($owner, $filename) = $util->getUidAndFilename($filePath); @@ -515,7 +542,7 @@ class Keymanager { $result = false; - if ( $view->is_dir($shareKeyPath) ) { + if ($view->is_dir($shareKeyPath)) { $localPath = \OC_Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); $result = self::recursiveDelShareKeys($localPath, $userIds); @@ -523,40 +550,42 @@ class Keymanager { } else { foreach ($userIds as $userId) { - $view->unlink($shareKeyPath.'.'.$userId.'.shareKey'); + $view->unlink($shareKeyPath . '.' . $userId . '.shareKey'); } $result = true; } - if ( ! $result ) { - - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR ); - + if (!$result) { + + \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR); + } - + \OC_FileProxy::$enabled = $proxyStatus; - + return $result; - + } /** * @brief recursively delete share keys from given users * - * @param type $dir directory - * @param type $userIds user ids for which the share keys should be deleted + * @param string $dir directory + * @param array $userIds user ids for which the share keys should be deleted */ - private static function recursiveDelShareKeys($dir, $userIds) { + private static function recursiveDelShareKeys($dir, $userIds) + { foreach ($userIds as $userId) { - $completePath = $dir.'/.*'.'.'.$userId.'.shareKey'; - $matches = glob(preg_quote($dir).'/*'.preg_quote('.'.$userId.'.shareKey')); + $completePath = $dir . '/.*' . '.' . $userId . '.shareKey'; + $matches = glob(preg_quote($dir) . '/*' . preg_quote('.' . $userId . '.shareKey')); } - foreach ($matches as $ma) { + /** @var $matches array */ + foreach ($matches as $ma) { unlink($ma); } - $subdirs = $directories = glob(preg_quote($dir) . '/*' , GLOB_ONLYDIR); - foreach ( $subdirs as $subdir ) { + $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR); + foreach ($subdirs as $subdir) { self::recursiveDelShareKeys($subdir, $userIds); } return true; @@ -565,16 +594,17 @@ class Keymanager { /** * @brief Make preparations to vars and filesystem for saving a keyfile */ - public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { - - $targetPath = ltrim( $path, '/' ); - - $path_parts = pathinfo( $targetPath ); - + public static function keySetPreparation(\OC_FilesystemView $view, $path, $basePath, $userId) + { + + $targetPath = ltrim($path, '/'); + + $path_parts = pathinfo($targetPath); + // If the file resides within a subdirectory, create it - if ( - isset( $path_parts['dirname'] ) - && ! $view->file_exists( $basePath . '/' . $path_parts['dirname'] ) + if ( + isset($path_parts['dirname']) + && !$view->file_exists($basePath . '/' . $path_parts['dirname']) ) { $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']); $dir = ''; @@ -585,41 +615,26 @@ class Keymanager { } } } - + return $targetPath; - + } - - /** - * @brief change password of private encryption key - * - * @param string $oldpasswd old password - * @param string $newpasswd new password - * @return bool true/false - */ - public static function changePasswd($oldpasswd, $newpasswd) { - - if ( \OCP\User::checkPassword(\OCP\User::getUser(), $newpasswd) ) { - return Crypt::changekeypasscode($oldpasswd, $newpasswd); - } - return false; - - } - + /** * @brief Fetch the legacy encryption key from user files - * @param string $login used to locate the legacy key - * @param string $passphrase used to decrypt the legacy key - * @return true / false + * @internal param string $login used to locate the legacy key + * @internal param string $passphrase used to decrypt the legacy key + * @return boolean * * if the key is left out, the default handeler will be used */ - public function getLegacyKey() { - + public function getLegacyKey() + { + $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView( '/' . $user ); - return $view->file_get_contents( 'encryption.key' ); - + $view = new \OC_FilesystemView('/' . $user); + return $view->file_get_contents('encryption.key'); + } - + } \ No newline at end of file diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 1d60770b4d..55ad882a8f 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -1,41 +1,46 @@ . -* -*/ + * ownCloud + * + * @author Sam Tuke, Robin Appelman + * @copyright 2012 Sam Tuke samtuke@owncloud.com, 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 . + * + */ /** -* @brief Encryption proxy which handles filesystem operations before and after -* execution and encrypts, and handles keyfiles accordingly. Used for -* webui. -*/ + * @brief Encryption proxy which handles filesystem operations before and after + * execution and encrypts, and handles keyfiles accordingly. Used for + * webui. + */ namespace OCA\Encryption; -class Proxy extends \OC_FileProxy { +/** + * Class Proxy + * @package OCA\Encryption + */ +class Proxy extends \OC_FileProxy +{ private static $blackList = null; //mimetypes blacklisted from encryption - + private static $enableEncryption = null; - + /** * Check if a file requires encryption * @param string $path @@ -43,461 +48,481 @@ class Proxy extends \OC_FileProxy { * * Tests if server side encryption is enabled, and file is allowed by blacklists */ - private static function shouldEncrypt( $path ) { - - if ( is_null( self::$enableEncryption ) ) { - - if ( - \OCP\Config::getAppValue( 'files_encryption', 'enable_encryption', 'true' ) == 'true' - && Crypt::mode() == 'server' + private static function shouldEncrypt($path) + { + + if (is_null(self::$enableEncryption)) { + + if ( + \OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true') == 'true' + && Crypt::mode() == 'server' ) { - + self::$enableEncryption = true; - + } else { - + self::$enableEncryption = false; - + } - + } - - if ( !self::$enableEncryption ) { - + + if (!self::$enableEncryption) { + return false; - + } - - if ( is_null(self::$blackList ) ) { - - self::$blackList = explode(',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); - + + if (is_null(self::$blackList)) { + + self::$blackList = explode(',', \OCP\Config::getAppValue('files_encryption', 'type_blacklist', '')); + } - - if ( Crypt::isCatfileContent( $path ) ) { - + + if (Crypt::isCatfileContent($path)) { + return true; - + } - - $extension = substr( $path, strrpos( $path, '.' ) +1 ); - - if ( array_search( $extension, self::$blackList ) === false ) { - + + $extension = substr($path, strrpos($path, '.') + 1); + + if (array_search($extension, self::$blackList) === false) { + return true; - + } - + return false; } - - public function preFile_put_contents( $path, &$data ) { - if ( self::shouldEncrypt( $path ) ) { + /** + * @param $path + * @param $data + * @return bool + */ + public function preFile_put_contents($path, &$data) + { + + if (self::shouldEncrypt($path)) { // Stream put contents should have been converted to fopen - if ( !is_resource( $data ) ) { + if (!is_resource($data)) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); - $session = new Session( $view ); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); + $session = new Session($view); $privateKey = $session->getPrivateKey(); - $filePath = $util->stripUserFilesPath( $path ); + $filePath = $util->stripUserFilesPath($path); // Set the filesize for userland, before encrypting - $size = strlen( $data ); - + $size = strlen($data); + // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - + // Check if there is an existing key we can reuse - if ( $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ) ) { - + if ($encKeyfile = Keymanager::getFileKey($view, $userId, $filePath)) { + // Fetch shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); - + $shareKey = Keymanager::getShareKey($view, $userId, $filePath); + // Decrypt the keyfile - $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - + $plainKey = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + } else { - + // Make a new key $plainKey = Crypt::generateKey(); - + } - + // Encrypt data - $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); - + $encData = Crypt::symmetricEncryptFileContent($data, $plainKey); + $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if($view->file_exists($path)) { - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); + if ($view->file_exists($path)) { + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $filePath, $userId); } else { $uniqueUserIds[] = $userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($view, $uniqueUserIds); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); - + $multiEncrypted = Crypt::multiKeyEncrypt($plainKey, $publicKeys); + // Save sharekeys to user folders - Keymanager::setShareKeys( $view, $filePath, $multiEncrypted['keys'] ); - + Keymanager::setShareKeys($view, $filePath, $multiEncrypted['keys']); + // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; - + // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $view, $filePath, $userId, $encKey ); + Keymanager::setFileKey($view, $filePath, $userId, $encKey); // Replace plain content with encrypted content by reference $data = $encData; - + // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted'=>true, 'size' => strlen($size), 'unencrypted_size' => $size), '' ); + \OC\Files\Filesystem::putFileInfo($filePath, array('encrypted' => true, 'size' => strlen($size), 'unencrypted_size' => $size), ''); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - + } } return true; - + } - + /** * @param string $path Path of file from which has been read * @param string $data Data that has been read from file */ - public function postFile_get_contents( $path, $data ) { + public function postFile_get_contents($path, $data) + { + + // FIXME: $path for shared files is just /uid/files/Shared/filepath - // FIXME: $path for shared files is just /uid/files/Shared/filepath - $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); - - $relPath = $util->stripUserFilesPath( $path ); - - + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); + + $relPath = $util->stripUserFilesPath($path); + + // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // If data is a catfile - if ( - Crypt::mode() == 'server' - && Crypt::isCatfileContent( $data ) // TODO: Do we really need this check? Can't we assume it is properly encrypted? + // If data is a catfile + if ( + Crypt::mode() == 'server' + && Crypt::isCatfileContent($data) // TODO: Do we really need this check? Can't we assume it is properly encrypted? ) { - + // TODO: use get owner to find correct location of key files for shared files - $session = new Session( $view ); - $privateKey = $session->getPrivateKey( $userId ); - + $session = new Session($view); + $privateKey = $session->getPrivateKey($userId); + // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $relPath ); - + $encKeyfile = Keymanager::getFileKey($view, $userId, $relPath); + // Attempt to fetch the user's shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); - + $shareKey = Keymanager::getShareKey($view, $userId, $relPath); + // Decrypt keyfile with shareKey - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - - $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + + $plainData = Crypt::symmetricDecryptFileContent($data, $plainKeyfile); } elseif ( - Crypt::mode() == 'server' - && isset( $_SESSION['legacyenckey'] ) - && Crypt::isEncryptedMeta( $path ) + Crypt::mode() == 'server' + && isset($_SESSION['legacyenckey']) + && Crypt::isEncryptedMeta($path) ) { - - $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); - + + $plainData = Crypt::legacyDecrypt($data, $session->getLegacyKey()); + } - + \OC_FileProxy::$enabled = $proxyStatus; - - if ( ! isset( $plainData ) ) { - + + if (!isset($plainData)) { + $plainData = $data; - + } - + return $plainData; - + } - + /** * @brief When a file is deleted, remove its keyfile also */ - public function preUnlink( $path ) { - + public function preUnlink($path) + { + // let the trashbin handle this - if ( \OCP\App::isEnabled('files_trashbin') ) { - return true; + if (\OCP\App::isEnabled('files_trashbin')) { + return true; } - + // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $view = new \OC_FilesystemView( '/' ); + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $view = new \OC_FilesystemView('/'); $userId = \OCP\USER::getUser(); - $util = new Util( $view, $userId ); + $util = new Util($view, $userId); // Format path to be relative to user files dir - $relPath = $util->stripUserFilesPath( $path ); + $relPath = $util->stripUserFilesPath($path); - list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); + list($owner, $ownerPath) = $util->getUidAndFilename($relPath); // Delete keyfile & shareKey so it isn't orphaned if ( - ! ( - Keymanager::deleteFileKey( $view, $owner, $ownerPath ) - && Keymanager::delAllShareKeys( $view, $owner, $ownerPath ) + !( + Keymanager::deleteFileKey($view, $owner, $ownerPath) + && Keymanager::delAllShareKeys($view, $owner, $ownerPath) ) ) { - - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "'.$ownerPath.'"', \OC_Log::ERROR ); - + + \OC_Log::write('Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR); + } - + \OC_FileProxy::$enabled = $proxyStatus; - + // If we don't return true then file delete will fail; better // to leave orphaned keyfiles than to disallow file deletion return true; - + } /** - * @brief When a file is renamed, rename its keyfile also - * @return bool Result of rename() - * @note This is pre rather than post because using post didn't work - */ - public function postWrite( $path ) - { - $this->handleFile($path); + * @brief When a file is renamed, rename its keyfile also + * @param $path + * @return bool Result of rename() + * @note This is pre rather than post because using post didn't work + */ + public function postWrite($path) + { + $this->handleFile($path); - return true; - } + return true; + } - public function postTouch( $path ) - { - $this->handleFile($path); + /** + * @param $path + * @return bool + */ + public function postTouch($path) + { + $this->handleFile($path); - return true; - } + return true; + } - public function postFopen( $path, &$result ){ + /** + * @param $path + * @param $result + * @return resource + */ + public function postFopen($path, &$result) + { + + if (!$result) { - if ( !$result ) { - return $result; - + } - // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + // Reformat path for use with OC_FSV + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); - // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted - if($path_split[2] == 'cache') { - return $result; - } + // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted + if ($path_split[2] == 'cache') { + return $result; + } // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $meta = stream_get_meta_data($result); + + $view = new \OC_FilesystemView(''); + + $util = new Util($view, \OCP\USER::getUser()); - $meta = stream_get_meta_data( $result ); - - $view = new \OC_FilesystemView( '' ); - - $util = new Util( $view, \OCP\USER::getUser()); - // If file is already encrypted, decrypt using crypto protocol - if ( - Crypt::mode() == 'server' - && $util->isEncryptedPath( $path ) + if ( + Crypt::mode() == 'server' + && $util->isEncryptedPath($path) ) { - + // Close the original encrypted file - fclose( $result ); - + fclose($result); + // Open the file using the crypto stream wrapper // protocol and let it do the decryption work instead - $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); - - - } elseif ( - self::shouldEncrypt( $path ) - and $meta ['mode'] != 'r' - and $meta['mode'] != 'rb' - ) { - // If the file is not yet encrypted, but should be - // encrypted when it's saved (it's not read only) - - // NOTE: this is the case for new files saved via WebDAV - -// if ( -// $view->file_exists( $path ) -// and $view->filesize( $path ) > 0 -// ) { -// $x = $view->file_get_contents( $path ); -// -// $tmp = tmpfile(); - -// // Make a temporary copy of the original file -// \OCP\Files::streamCopy( $result, $tmp ); -// -// // Close the original stream, we'll return another one -// fclose( $result ); -// -// $view->file_put_contents( $path_f, $tmp ); -// -// fclose( $tmp ); - -// } + $result = fopen('crypt://' . $path_f, $meta['mode']); - $result = fopen( 'crypt://'.$path_f, $meta['mode'] ); - + + } elseif ( + self::shouldEncrypt($path) + and $meta ['mode'] != 'r' + and $meta['mode'] != 'rb' + ) { + $result = fopen('crypt://' . $path_f, $meta['mode']); } - + // Re-enable the proxy \OC_FileProxy::$enabled = $proxyStatus; - + return $result; - + } - public function postGetMimeType( $path, $mime ) { + /** + * @param $path + * @param $mime + * @return string + */ + public function postGetMimeType($path, $mime) + { + + if (Crypt::isCatfileContent($path)) { + + $mime = \OCP\Files::getMimeType('crypt://' . $path, 'w'); - if ( Crypt::isCatfileContent( $path ) ) { - - $mime = \OCP\Files::getMimeType( 'crypt://' . $path, 'w' ); - } - + return $mime; - + } - public function postGetFileInfo( $path, $data ) { + /** + * @param $path + * @param $data + * @return array + */ + public function postGetFileInfo($path, $data) + { - // if path is a folder do nothing - if(is_array($data) && array_key_exists('size', $data)) { + // if path is a folder do nothing + if (is_array($data) && array_key_exists('size', $data)) { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // get file size - $data['size'] = self::postFileSize($path, $data['size']); + // get file size + $data['size'] = self::postFileSize($path, $data['size']); - // Re-enable the proxy - \OC_FileProxy::$enabled = $proxyStatus; - } + // Re-enable the proxy + \OC_FileProxy::$enabled = $proxyStatus; + } - return $data; - } + return $data; + } - public function postStat($path, $data) - { - // check if file is encrypted - if (Crypt::isCatfileContent($path)) { + /** + * @param $path + * @param $data + * @return mixed + */ + public function postStat($path, $data) + { + // check if file is encrypted + if (Crypt::isCatfileContent($path)) { - // get file info from cache - $cached = \OC\Files\Filesystem::getFileInfo($path, ''); + // get file info from cache + $cached = \OC\Files\Filesystem::getFileInfo($path, ''); - // set the real file size - $data['size'] = $cached['unencrypted_size']; - } + // set the real file size + $data['size'] = $cached['unencrypted_size']; + } - return $data; - } + return $data; + } - public function postFileSize($path, $size) - { + /** + * @param $path + * @param $size + * @return bool + */ + public function postFileSize($path, $size) + { - $view = new \OC_FilesystemView('/'); + $view = new \OC_FilesystemView('/'); - // if path is a folder do nothing - if ($view->is_dir($path)) { - return $size; - } + // if path is a folder do nothing + if ($view->is_dir($path)) { + return $size; + } - // Reformat path for use with OC_FSV - $path_split = explode('/', $path); - $path_f = implode('/', array_slice($path_split, 3)); + // Reformat path for use with OC_FSV + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); - // if path is empty we cannot resolve anything - if(empty($path_f)) { - return $size; - } + // if path is empty we cannot resolve anything + if (empty($path_f)) { + return $size; + } - // get file info from database/cache - $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); + // get file info from database/cache + $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); - // if file is encrypted return real file size - if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { - $size = $fileInfo['unencrypted_size']; - } else { - // self healing if file was removed from file cache - if(is_array($fileInfo)) { - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $fixSize = $util->getFileSize($path); - if($fixSize > 0) { - $size = $fixSize; + // if file is encrypted return real file size + if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { + $size = $fileInfo['unencrypted_size']; + } else { + // self healing if file was removed from file cache + if (is_array($fileInfo)) { + $userId = \OCP\User::getUser(); + $util = new Util($view, $userId); + $fixSize = $util->getFileSize($path); + if ($fixSize > 0) { + $size = $fixSize; - $fileInfo['encrypted'] = true; - $fileInfo['unencrypted_size'] = $size; + $fileInfo['encrypted'] = true; + $fileInfo['unencrypted_size'] = $size; - // put file info - $view->putFileInfo( $path_f, $fileInfo ); - } - } - } - return $size; - } + // put file info + $view->putFileInfo($path_f, $fileInfo); + } + } + } + return $size; + } - public function handleFile($path) { + /** + * @param $path + */ + public function handleFile($path) + { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView('/'); - $session = new Session($view); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); + $view = new \OC_FilesystemView('/'); + $session = new Session($view); + $userId = \OCP\User::getUser(); + $util = new Util($view, $userId); - // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + // Reformat path for use with OC_FSV + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); - // only if file is on 'files' folder fix file size and sharing - if($path_split[2] == 'files' && $util->fixFileSize($path)) { + // only if file is on 'files' folder fix file size and sharing + if ($path_split[2] == 'files' && $util->fixFileSize($path)) { - // get sharing app state - $sharingEnabled = \OCP\Share::isEnabled(); + // get sharing app state + $sharingEnabled = \OCP\Share::isEnabled(); - // get users - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); + // get users + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); - // update sharing-keys - $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); - } + // update sharing-keys + $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); + } - \OC_FileProxy::$enabled = $proxyStatus; - } - } + \OC_FileProxy::$enabled = $proxyStatus; + } +} diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 8d604dc721..8425cedd99 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -26,73 +26,75 @@ namespace OCA\Encryption; * Class for handling encryption related session data */ -class Session { +class Session +{ private $view; - + /** * @brief if session is started, check if ownCloud key pair is set up, if not create it - * - * The ownCloud key pair is used to allow public link sharing even if encryption is enabled + * @param \OC_FilesystemView $view + * + * @note The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ - public function __construct( $view ) { - + public function __construct($view) + { + $this->view = $view; + if (!$this->view->is_dir('owncloud_private_key')) { + + $this->view->mkdir('owncloud_private_key'); - if ( ! $this->view->is_dir( 'owncloud_private_key' ) ) { - - $this->view->mkdir( 'owncloud_private_key' ); - } $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); if ($publicShareKeyId === null) { - $publicShareKeyId = 'pubShare_'.substr(md5(time()),0,8); + $publicShareKeyId = 'pubShare_' . substr(md5(time()), 0, 8); \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); } - - if ( - ! $this->view->file_exists( "/public-keys/".$publicShareKeyId.".public.key" ) - || ! $this->view->file_exists( "/owncloud_private_key/".$publicShareKeyId.".private.key" ) + + if ( + !$this->view->file_exists("/public-keys/" . $publicShareKeyId . ".public.key") + || !$this->view->file_exists("/owncloud_private_key/" . $publicShareKeyId . ".private.key") ) { - - $keypair = Crypt::createKeypair(); - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $keypair = Crypt::createKeypair(); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // Save public key + + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); + } + + $this->view->file_put_contents('/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey']); + + // Encrypt private key empthy passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], ''); + + // Save private key + $this->view->file_put_contents('/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey); - // Save public key - - if (!$view->is_dir('/public-keys')) { - $view->mkdir('/public-keys'); - } - - $this->view->file_put_contents( '/public-keys/'.$publicShareKeyId.'.public.key', $keypair['publicKey'] ); - - // Encrypt private key empthy passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); - - // Save private key - $this->view->file_put_contents( '/owncloud_private_key/'.$publicShareKeyId.'.private.key', $encryptedPrivateKey ); - \OC_FileProxy::$enabled = $proxyStatus; - + } - if(\OCP\USER::getUser() === false) { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + if (\OCP\USER::getUser() === false) { + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/'.$publicShareKeyId.'.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); - $this->setPrivateKey($privateKey); + $encryptedKey = $this->view->file_get_contents('/owncloud_private_key/' . $publicShareKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, ''); + $this->setPrivateKey($privateKey); - \OC_FileProxy::$enabled = $proxyStatus; - } + \OC_FileProxy::$enabled = $proxyStatus; + } } /** @@ -100,71 +102,72 @@ class Session { * @param string $privateKey * @return bool */ - public function setPrivateKey( $privateKey ) { - + public function setPrivateKey($privateKey) + { + $_SESSION['privateKey'] = $privateKey; - + return true; - + } - + /** * @brief Gets user private key from session * @returns string $privateKey The user's plaintext private key * */ - public function getPrivateKey() { - - if ( - isset( $_SESSION['privateKey'] ) - && !empty( $_SESSION['privateKey'] ) + public function getPrivateKey() + { + + if ( + isset($_SESSION['privateKey']) + && !empty($_SESSION['privateKey']) ) { - + return $_SESSION['privateKey']; - + } else { - + return false; - + } - + } - + /** * @brief Sets user legacy key to session + * @param $legacyKey * @return bool - * */ - public function setLegacyKey( $legacyKey ) { - - if ( $_SESSION['legacyKey'] = $legacyKey ) { - - return true; - - } - + public function setLegacyKey($legacyKey) + { + + $_SESSION['legacyKey'] = $legacyKey; + + return true; } - + /** * @brief Gets user legacy key from session * @returns string $legacyKey The user's plaintext legacy key * */ - public function getLegacyKey() { - - if ( - isset( $_SESSION['legacyKey'] ) - && !empty( $_SESSION['legacyKey'] ) + public function getLegacyKey() + { + + if ( + isset($_SESSION['legacyKey']) + && !empty($_SESSION['legacyKey']) ) { - + return $_SESSION['legacyKey']; - + } else { - + return false; - + } - + } } \ No newline at end of file diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index ab96783508..31546a2cc5 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -3,7 +3,7 @@ * ownCloud * * @author Robin Appelman - * @copyright 2012 Sam Tuke , 2011 Robin Appelman + * @copyright 2012 Sam Tuke , 2011 Robin Appelman * * * This library is free software; you can redistribute it and/or @@ -32,30 +32,31 @@ namespace OCA\Encryption; /** * @brief Provides 'crypt://' stream wrapper protocol. - * @note We use a stream wrapper because it is the most secure way to handle + * @note We use a stream wrapper because it is the most secure way to handle * decrypted content transfers. There is no safe way to decrypt the entire file * somewhere on the server, so we have to encrypt and decrypt blocks on the fly. * @note Paths used with this protocol MUST BE RELATIVE. Use URLs like: - * crypt://filename, or crypt://subdirectory/filename, NOT - * crypt:///home/user/owncloud/data. Otherwise keyfiles will be put in - * [owncloud]/data/user/files_encryption/keyfiles/home/user/owncloud/data and + * crypt://filename, or crypt://subdirectory/filename, NOT + * crypt:///home/user/owncloud/data. Otherwise keyfiles will be put in + * [owncloud]/data/user/files_encryption/keyfiles/home/user/owncloud/data and * will not be accessible to other methods. - * @note Data read and written must always be 8192 bytes long, as this is the - * buffer size used internally by PHP. The encryption process makes the input - * data longer, and input is chunked into smaller pieces in order to result in + * @note Data read and written must always be 8192 bytes long, as this is the + * buffer size used internally by PHP. The encryption process makes the input + * data longer, and input is chunked into smaller pieces in order to result in * a 8192 encrypted block size. - * @note When files are deleted via webdav, or when they are updated and the - * previous version deleted, this is handled by OC\Files\View, and thus the + * @note When files are deleted via webdav, or when they are updated and the + * previous version deleted, this is handled by OC\Files\View, and thus the * encryption proxies are used and keyfiles deleted. */ -class Stream { +class Stream +{ public static $sourceStreams = array(); + private $plainKey; + private $encKeyfiles; - // TODO: make all below properties private again once unit testing is - // configured correctly - public $rawPath; // The raw path relative to the data dir - public $relPath; // rel path to users file dir + private $rawPath; // The raw path relative to the data dir + private $relPath; // rel path to users file dir private $userId; private $handle; // Resource returned by fopen private $path; @@ -63,226 +64,238 @@ class Stream { private $meta = array(); // Header / meta for source stream private $count; private $writeCache; - public $size; - public $unencryptedSize; + private $size; + private $unencryptedSize; private $publicKey; private $keyfile; private $encKeyfile; private static $view; // a fsview object set to user dir private $rootView; // a fsview object set to '/' - public function stream_open( $path, $mode, $options, &$opened_path ) { + /** + * @param $path + * @param $mode + * @param $options + * @param $opened_path + * @return bool + */ + public function stream_open($path, $mode, $options, &$opened_path) + { - if ( ! isset( $this->rootView ) ) { - $this->rootView = new \OC_FilesystemView( '/' ); + if (!isset($this->rootView)) { + $this->rootView = new \OC_FilesystemView('/'); } - $util = new Util( $this->rootView, \OCP\USER::getUser()); + $util = new Util($this->rootView, \OCP\USER::getUser()); - $this->userId = $util->getUserId(); + $this->userId = $util->getUserId(); + + // Strip identifier text from path, this gives us the path relative to data//files + $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace('crypt://', '', $path)); - // Strip identifier text from path, this gives us the path relative to data//files - $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace( 'crypt://', '', $path )); - // rawPath is relative to the data directory $this->rawPath = $util->getUserFilesDir() . $this->relPath; - + if ( - dirname( $this->rawPath ) == 'streams' - and isset( self::$sourceStreams[basename( $this->rawPath )] ) + dirname($this->rawPath) == 'streams' + and isset(self::$sourceStreams[basename($this->rawPath)]) ) { - + // Is this just for unit testing purposes? - $this->handle = self::$sourceStreams[basename( $this->rawPath )]['stream']; + $this->handle = self::$sourceStreams[basename($this->rawPath)]['stream']; - $this->path = self::$sourceStreams[basename( $this->rawPath )]['path']; + $this->path = self::$sourceStreams[basename($this->rawPath)]['path']; - $this->size = self::$sourceStreams[basename( $this->rawPath )]['size']; + $this->size = self::$sourceStreams[basename($this->rawPath)]['size']; } else { - // Disable fileproxies so we can get the file size and open the source file without recursive encryption - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable fileproxies so we can get the file size and open the source file without recursive encryption + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - if ( - $mode == 'w' - or $mode == 'w+' - or $mode == 'wb' - or $mode == 'wb+' + if ( + $mode == 'w' + or $mode == 'w+' + or $mode == 'wb' + or $mode == 'wb+' ) { // We're writing a new file so start write counter with 0 bytes $this->size = 0; - $this->unencryptedSize = 0; + $this->unencryptedSize = 0; } else { - - $this->size = $this->rootView->filesize( $this->rawPath, $mode ); - - //$this->size = filesize( $this->rawPath ); - + + $this->size = $this->rootView->filesize($this->rawPath, $mode); + } - //$this->handle = fopen( $this->rawPath, $mode ); - - $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); - + $this->handle = $this->rootView->fopen($this->rawPath, $mode); + \OC_FileProxy::$enabled = $proxyStatus; - if ( ! is_resource( $this->handle ) ) { + if (!is_resource($this->handle)) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR ); + \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); } else { - - $this->meta = stream_get_meta_data( $this->handle ); - + + $this->meta = stream_get_meta_data($this->handle); + } } - return is_resource( $this->handle ); + return is_resource($this->handle); } - - public function stream_seek( $offset, $whence = SEEK_SET ) { - + + /** + * @param $offset + * @param int $whence + */ + public function stream_seek($offset, $whence = SEEK_SET) + { + $this->flush(); - - fseek( $this->handle, $offset, $whence ); - + + fseek($this->handle, $offset, $whence); + } - - public function stream_tell() { + + /** + * @return int + */ + public function stream_tell() + { return ftell($this->handle); } - - public function stream_read( $count ) { - + + /** + * @param $count + * @return bool|string + * @throws \Exception + */ + public function stream_read($count) + { + $this->writeCache = ''; - if ( $count != 8192 ) { - + if ($count != 8192) { + // $count will always be 8192 https://bugs.php.net/bug.php?id=21641 // This makes this function a lot simpler, but will break this class if the above 'bug' gets 'fixed' - \OCP\Util::writeLog( 'files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL ); + \OCP\Util::writeLog('files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); die(); } -// $pos = ftell( $this->handle ); -// // Get the data from the file handle - $data = fread( $this->handle, 8192 ); - - $result = ''; - - if ( strlen( $data ) ) { - - if ( ! $this->getKey() ) { - - // Error! We don't have a key to decrypt the file with - throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream' ); - - } - - // Decrypt data - $result = Crypt::symmetricDecryptFileContent( $data, $this->plainKey ); - - } + $data = fread($this->handle, 8192); -// $length = $this->size - $pos; -// -// if ( $length < 8192 ) { -// -// $result = substr( $result, 0, $length ); -// -// } + $result = ''; + + if (strlen($data)) { + + if (!$this->getKey()) { + + // Error! We don't have a key to decrypt the file with + throw new \Exception('Encryption key not found for "' . $this->rawPath . '" during attempted read via stream'); + + } + + // Decrypt data + $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); + + } return $result; } - + /** * @brief Encrypt and pad data ready for writing to disk * @param string $plainData data to be encrypted * @param string $key key to use for encryption - * @return encrypted data on success, false on failure + * @return string encrypted data on success, false on failure */ - public function preWriteEncrypt( $plainData, $key ) { - + public function preWriteEncrypt($plainData, $key) + { + // Encrypt data to 'catfile', which includes IV - if ( $encrypted = Crypt::symmetricEncryptFileContent( $plainData, $key ) ) { - - return $encrypted; - + if ($encrypted = Crypt::symmetricEncryptFileContent($plainData, $key)) { + + return $encrypted; + } else { - + return false; - + } - + } - + /** * @brief Fetch the plain encryption key for the file and set it as plainKey property - * @param bool $generate if true, a new key will be generated if none can be found + * @internal param bool $generate if true, a new key will be generated if none can be found * @return bool true on key found and set, false on key not found and new key generated and set */ - public function getKey() { - + public function getKey() + { + // Check if key is already set - if ( isset( $this->plainKey ) && isset( $this->encKeyfile ) ) { - + if (isset($this->plainKey) && isset($this->encKeyfile)) { + return true; - + } - + // Fetch and decrypt keyfile - // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); + // Fetch existing keyfile + $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->userId, $this->relPath); // If a keyfile already exists - if ( $this->encKeyfile ) { + if ($this->encKeyfile) { $this->setUserProperty(); - - $session = new Session( $this->rootView ); - - $privateKey = $session->getPrivateKey( $this->userId ); - - $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); - - $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); - + + $session = new Session($this->rootView); + + $privateKey = $session->getPrivateKey($this->userId); + + $shareKey = Keymanager::getShareKey($this->rootView, $this->userId, $this->relPath); + + $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $privateKey); + return true; - + } else { - + return false; - + } - + } - - public function setUserProperty() { - + + public function setUserProperty() + { + // Only get the user again if it isn't already set - if ( empty( $this->userId ) ) { - + if (empty($this->userId)) { + // TODO: Move this user call out of here - it belongs // elsewhere $this->userId = \OCP\User::getUser(); - + } - + // TODO: Add a method for getting the user in case OCP\User:: // getUser() doesn't work (can that scenario ever occur?) - + } - + /** * @brief Handle plain data from the stream, and write it in 8192 byte blocks * @param string $data data to be written to disk @@ -292,89 +305,64 @@ class Stream { * @note Padding is added to each encrypted block to ensure that the resulting block is exactly 8192 bytes. This is removed during stream_read * @note PHP automatically updates the file pointer after writing data to reflect it's length. There is generally no need to update the poitner manually using fseek */ - public function stream_write( $data ) { - + public function stream_write($data) + { + // Disable the file proxies so that encryption is not // automatically attempted when the file is written to disk - // we are handling that separately here and we don't want to // get into an infinite loop - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - + // Get the length of the unencrypted data that we are handling - $length = strlen( $data ); - + $length = strlen($data); + // So far this round, no data has been written $written = 0; - + // Find out where we are up to in the writing of data to the // file - $pointer = ftell( $this->handle ); - + $pointer = ftell($this->handle); + // Make sure the userId is set $this->setUserProperty(); - + // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile - if ( ! $this->getKey() ) { - - $this->plainKey = Crypt::generateKey(); - - } - + if (!$this->getKey()) { + + $this->plainKey = Crypt::generateKey(); + + } + - // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block - if ( $this->writeCache ) { - + if ($this->writeCache) { + // Concat writeCache to start of $data $data = $this->writeCache . $data; - + // Clear the write cache, ready for resuse - it has been // flushed and its old contents processed $this->writeCache = ''; } -// -// // Make sure we always start on a block start - if ( 0 != ( $pointer % 8192 ) ) { - // if the current position of - // file indicator is not aligned to a 8192 byte block, fix it - // so that it is -// fseek( $this->handle, - ( $pointer % 8192 ), SEEK_CUR ); -// -// $pointer = ftell( $this->handle ); -// -// $unencryptedNewBlock = fread( $this->handle, 8192 ); -// -// fseek( $this->handle, - ( $currentPos % 8192 ), SEEK_CUR ); -// -// $block = Crypt::symmetricDecryptFileContent( $unencryptedNewBlock, $this->plainKey ); -// -// $x = substr( $block, 0, $currentPos % 8192 ); -// -// $data = $x . $data; -// -// fseek( $this->handle, - ( $currentPos % 8192 ), SEEK_CUR ); -// - } -// $currentPos = ftell( $this->handle ); - -// // While there still remains somed data to be processed & written - while( strlen( $data ) > 0 ) { - -// // Remaining length for this iteration, not of the -// // entire file (may be greater than 8192 bytes) -// $remainingLength = strlen( $data ); -// -// // If data remaining to be written is less than the -// // size of 1 6126 byte block - if ( strlen( $data ) < 6126 ) { - + // While there still remains somed data to be processed & written + while (strlen($data) > 0) { + + // Remaining length for this iteration, not of the + // entire file (may be greater than 8192 bytes) + $remainingLength = strlen( $data ); + + // If data remaining to be written is less than the + // size of 1 6126 byte block + if (strlen($data) < 6126) { + // Set writeCache to contents of $data // The writeCache will be carried over to the // next write round, and added to the start of @@ -387,148 +375,174 @@ class Stream { // Clear $data ready for next round $data = ''; - + } else { - + // Read the chunk from the start of $data - $chunk = substr( $data, 0, 6126 ); - - $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); - + $chunk = substr($data, 0, 6126); + + $encrypted = $this->preWriteEncrypt($chunk, $this->plainKey); + // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes - fwrite( $this->handle, $encrypted ); - - $writtenLen = strlen( $encrypted ); - //fseek( $this->handle, $writtenLen, SEEK_CUR ); + fwrite($this->handle, $encrypted); + + $writtenLen = strlen($encrypted); // Remove the chunk we just processed from // $data, leaving only unprocessed data in $data // var, for handling on the next round - $data = substr( $data, 6126 ); + $data = substr($data, 6126); } - - } - - $this->size = max( $this->size, $pointer + $length ); - $this->unencryptedSize += $length; - \OC_FileProxy::$enabled = $proxyStatus; + } + + $this->size = max($this->size, $pointer + $length); + $this->unencryptedSize += $length; + + \OC_FileProxy::$enabled = $proxyStatus; return $length; } - public function stream_set_option( $option, $arg1, $arg2 ) { - switch($option) { + /** + * @param $option + * @param $arg1 + * @param $arg2 + */ + public function stream_set_option($option, $arg1, $arg2) + { + switch ($option) { case STREAM_OPTION_BLOCKING: - stream_set_blocking( $this->handle, $arg1 ); + stream_set_blocking($this->handle, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - stream_set_timeout( $this->handle, $arg1, $arg2 ); + stream_set_timeout($this->handle, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - stream_set_write_buffer( $this->handle, $arg1, $arg2 ); + stream_set_write_buffer($this->handle, $arg1, $arg2); } } - public function stream_stat() { + /** + * @return array + */ + public function stream_stat() + { return fstat($this->handle); } - - public function stream_lock( $mode ) { - flock( $this->handle, $mode ); - } - - public function stream_flush() { - - return fflush( $this->handle ); - // Not a typo: http://php.net/manual/en/function.fflush.php - + + /** + * @param $mode + */ + public function stream_lock($mode) + { + flock($this->handle, $mode); } - public function stream_eof() { + /** + * @return bool + */ + public function stream_flush() + { + + return fflush($this->handle); + // Not a typo: http://php.net/manual/en/function.fflush.php + + } + + /** + * @return bool + */ + public function stream_eof() + { return feof($this->handle); } - private function flush() { - - if ( $this->writeCache ) { - + private function flush() + { + + if ($this->writeCache) { + // Set keyfile property for file in question $this->getKey(); - - $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->plainKey ); - - fwrite( $this->handle, $encrypted ); - + + $encrypted = $this->preWriteEncrypt($this->writeCache, $this->plainKey); + + fwrite($this->handle, $encrypted); + $this->writeCache = ''; - + } - + } - public function stream_close() { + /** + * @return bool + */ + public function stream_close() + { - $this->flush(); - - if ( - $this->meta['mode']!='r' - and $this->meta['mode']!='rb' - and $this->size > 0 + $this->flush(); + + if ( + $this->meta['mode'] != 'r' + and $this->meta['mode'] != 'rb' + and $this->size > 0 ) { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // Fetch user's public key - $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); + // Fetch user's public key + $this->publicKey = Keymanager::getPublicKey($this->rootView, $this->userId); - // Check if OC sharing api is enabled - $sharingEnabled = \OCP\Share::isEnabled(); + // Check if OC sharing api is enabled + $sharingEnabled = \OCP\Share::isEnabled(); - $util = new Util( $this->rootView, $this->userId ); + $util = new Util($this->rootView, $this->userId); - // Get all users sharing the file includes current user - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId); + // Get all users sharing the file includes current user + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $this->relPath, $this->userId); - // Fetch public keys for all sharing users - $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + // Fetch public keys for all sharing users + $publicKeys = Keymanager::getPublicKeys($this->rootView, $uniqueUserIds); - // Encrypt enc key for all sharing users - $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); + // Encrypt enc key for all sharing users + $this->encKeyfiles = Crypt::multiKeyEncrypt($this->plainKey, $publicKeys); - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); - // Save the new encrypted file key - Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); + // Save the new encrypted file key + Keymanager::setFileKey($this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data']); - // Save the sharekeys - Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + // Save the sharekeys + Keymanager::setShareKeys($view, $this->relPath, $this->encKeyfiles['keys']); - // get file info - $fileInfo = $view->getFileInfo($this->rawPath); - if(!is_array($fileInfo)) { - $fileInfo = array(); - } + // get file info + $fileInfo = $view->getFileInfo($this->rawPath); + if (!is_array($fileInfo)) { + $fileInfo = array(); + } - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; - // set encryption data - $fileInfo['encrypted'] = true; - $fileInfo['size'] = $this->size; - $fileInfo['unencrypted_size'] = $this->unencryptedSize; + // set encryption data + $fileInfo['encrypted'] = true; + $fileInfo['size'] = $this->size; + $fileInfo['unencrypted_size'] = $this->unencryptedSize; - // set fileinfo - $view->putFileInfo( $this->rawPath, $fileInfo); + // set fileinfo + $view->putFileInfo($this->rawPath, $fileInfo); } - return fclose( $this->handle ); - + return fclose($this->handle); + } } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 82f789c520..9ba7b3b3a3 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -3,7 +3,7 @@ * ownCloud * * @author Sam Tuke, Frank Karlitschek - * @copyright 2012 Sam Tuke , + * @copyright 2012 Sam Tuke , * Frank Karlitschek * * This library is free software; you can redistribute it and/or @@ -55,49 +55,49 @@ namespace OCA\Encryption; * unused, likely to become obsolete shortly */ -class Util { - - +class Util +{ + // Web UI: - + //// DONE: files created via web ui are encrypted //// DONE: file created & encrypted via web ui are readable in web ui //// DONE: file created & encrypted via web ui are readable via webdav - - + + // WebDAV: - + //// DONE: new data filled files added via webdav get encrypted //// DONE: new data filled files added via webdav are readable via webdav //// DONE: reading unencrypted files when encryption is enabled works via //// webdav //// DONE: files created & encrypted via web ui are readable via webdav - - + + // Legacy support: - + //// DONE: add method to check if file is encrypted using new system //// DONE: add method to check if file is encrypted using old system //// DONE: add method to fetch legacy key //// DONE: add method to decrypt legacy encrypted data - - + + // Admin UI: - + //// DONE: changing user password also changes encryption passphrase - + //// TODO: add support for optional recovery in case of lost passphrase / keys //// TODO: add admin optional required long passphrase for users //// TODO: implement flag system to allow user to specify encryption by folder, subfolder, etc. - - + + // Integration testing: - + //// TODO: test new encryption with versioning //// DONE: test new encryption with sharing //// TODO: test new encryption with proxies - - + + private $view; // OC_FilesystemView object for filesystem operations private $userId; // ID of the currently logged-in user private $pwd; // User Password @@ -110,228 +110,246 @@ class Util { private $privateKeyPath; // Path to user's private key private $publicShareKeyId; private $recoveryKeyId; - private $isPublic; + private $isPublic; - public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { + /** + * @param \OC_FilesystemView $view + * @param $userId + * @param bool $client + */ + public function __construct(\OC_FilesystemView $view, $userId, $client = false) + { $this->view = $view; $this->userId = $userId; $this->client = $client; - $this->isPublic = false; + $this->isPublic = false; - $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); - // if we are anonymous/public - if($this->userId === false) { - $this->userId = $this->publicShareKeyId; + // if we are anonymous/public + if ($this->userId === false) { + $this->userId = $this->publicShareKeyId; - // only handle for files_sharing app - if($GLOBALS['app'] === 'files_sharing') { - $this->userDir = '/' . $GLOBALS['fileOwner']; - $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? - $this->publicKeyDir = '/' . 'public-keys'; - $this->encryptionDir = '/' . $GLOBALS['fileOwner'] . '/' . 'files_encryption'; - $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; - $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->isPublic = true; - } - - } else { - $this->userDir = '/' . $this->userId; - $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? - $this->publicKeyDir = '/' . 'public-keys'; - $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; - $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; - $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - } - } - - public function ready() { - - if( - ! $this->view->file_exists( $this->encryptionDir ) - or ! $this->view->file_exists( $this->keyfilesPath ) - or ! $this->view->file_exists( $this->shareKeysPath ) - or ! $this->view->file_exists( $this->publicKeyPath ) - or ! $this->view->file_exists( $this->privateKeyPath ) - ) { - - return false; - - } else { - - return true; - - } - - } - - /** - * @brief Sets up user folders and keys for serverside encryption - * @param $passphrase passphrase to encrypt server-stored private key with - */ - public function setupServerSide( $passphrase = null ) { - - // Set directories to check / create - $setUpDirs = array( - $this->userDir - , $this->userFilesDir - , $this->publicKeyDir - , $this->encryptionDir - , $this->keyfilesPath - , $this->shareKeysPath - ); - - // Check / create all necessary dirs - foreach ( $setUpDirs as $dirPath ) { - - if( !$this->view->file_exists( $dirPath ) ) { - - $this->view->mkdir( $dirPath ); - + // only handle for files_sharing app + if ($GLOBALS['app'] === 'files_sharing') { + $this->userDir = '/' . $GLOBALS['fileOwner']; + $this->fileFolderName = 'files'; + $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->publicKeyDir = '/' . 'public-keys'; + $this->encryptionDir = '/' . $GLOBALS['fileOwner'] . '/' . 'files_encryption'; + $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; + $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; + $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->isPublic = true; } - + + } else { + $this->userDir = '/' . $this->userId; + $this->fileFolderName = 'files'; + $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->publicKeyDir = '/' . 'public-keys'; + $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; + $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; + $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; + $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key } - - // Create user keypair - if ( - ! $this->view->file_exists( $this->publicKeyPath ) - or ! $this->view->file_exists( $this->privateKeyPath ) + } + + /** + * @return bool + */ + public function ready() + { + + if ( + !$this->view->file_exists($this->encryptionDir) + or !$this->view->file_exists($this->keyfilesPath) + or !$this->view->file_exists($this->shareKeysPath) + or !$this->view->file_exists($this->publicKeyPath) + or !$this->view->file_exists($this->privateKeyPath) ) { - + + return false; + + } else { + + return true; + + } + + } + + /** + * @brief Sets up user folders and keys for serverside encryption + * @param string $passphrase passphrase to encrypt server-stored private key with + */ + public function setupServerSide($passphrase = null) + { + + // Set directories to check / create + $setUpDirs = array( + $this->userDir + , $this->userFilesDir + , $this->publicKeyDir + , $this->encryptionDir + , $this->keyfilesPath + , $this->shareKeysPath + ); + + // Check / create all necessary dirs + foreach ($setUpDirs as $dirPath) { + + if (!$this->view->file_exists($dirPath)) { + + $this->view->mkdir($dirPath); + + } + + } + + // Create user keypair + if ( + !$this->view->file_exists($this->publicKeyPath) + or !$this->view->file_exists($this->privateKeyPath) + ) { + // Generate keypair $keypair = Crypt::createKeypair(); - + \OC_FileProxy::$enabled = false; - + // Save public key - $this->view->file_put_contents( $this->publicKeyPath, $keypair['publicKey'] ); - + $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); + // Encrypt private key with user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $passphrase ); - + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); + // Save private key - $this->view->file_put_contents( $this->privateKeyPath, $encryptedPrivateKey ); - + $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); + \OC_FileProxy::$enabled = true; - + } - + // If there's no record for this user's encryption preferences - if ( false === $this->recoveryEnabledForUser() ) { - + if (false === $this->recoveryEnabledForUser()) { + // create database configuration $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array( $this->userId, 'server-side', 0); - $query = \OCP\DB::prepare( $sql ); - $query->execute( $args ); - + $args = array($this->userId, 'server-side', 0); + $query = \OCP\DB::prepare($sql); + $query->execute($args); + } - + return true; - + } - public function getPublicShareKeyId() { + /** + * @return string + */ + public function getPublicShareKeyId() + { return $this->publicShareKeyId; } - + /** * @brief Check whether pwd recovery is enabled for a given user - * @return 1 = yes, 0 = no, false = no record - * @note If records are not being returned, check for a hidden space + * @return bool 1 = yes, 0 = no, false = no record + * + * @note If records are not being returned, check for a hidden space * at the start of the uid in db */ - public function recoveryEnabledForUser() { - + public function recoveryEnabledForUser() + { + $sql = 'SELECT recovery_enabled FROM `*PREFIX*encryption` WHERE uid = ?'; - - $args = array( $this->userId ); - $query = \OCP\DB::prepare( $sql ); - - $result = $query->execute( $args ); - + $args = array($this->userId); + + $query = \OCP\DB::prepare($sql); + + $result = $query->execute($args); + $recoveryEnabled = array(); - - while( $row = $result->fetchRow() ) { - + + while ($row = $result->fetchRow()) { + $recoveryEnabled[] = $row['recovery_enabled']; - + } - + // If no record is found - if ( empty( $recoveryEnabled ) ) { - + if (empty($recoveryEnabled)) { + return false; - - // If a record is found + + // If a record is found } else { - + return $recoveryEnabled[0]; - + } - + } - + /** * @brief Enable / disable pwd recovery for a given user * @param bool $enabled Whether to enable or disable recovery * @return bool */ - public function setRecoveryForUser( $enabled ) { - + public function setRecoveryForUser($enabled) + { + $recoveryStatus = $this->recoveryEnabledForUser(); - + // If a record for this user already exists, update it - if ( false === $recoveryStatus ) { - + if (false === $recoveryStatus) { + $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - - $args = array( $this->userId, 'server-side', $enabled ); - - // Create a new record instead + + $args = array($this->userId, 'server-side', $enabled); + + // Create a new record instead } else { - + $sql = 'UPDATE *PREFIX*encryption SET recovery_enabled = ? WHERE uid = ?'; - - $args = array( $enabled, $this->userId ); - + + $args = array($enabled, $this->userId); + } - - $query = \OCP\DB::prepare( $sql ); - - if ( $query->execute( $args ) ) { - + + $query = \OCP\DB::prepare($sql); + + if ($query->execute($args)) { + return true; - + } else { - + return false; - + } - + } - + /** * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search @@ -339,45 +357,46 @@ class Util { * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findEncFiles( $directory ) { - + public function findEncFiles($directory) + { + // Disable proxy - we don't want files to be decrypted before // we handle them \OC_FileProxy::$enabled = false; - - $found = array( 'plain' => array(), 'encrypted' => array(), 'legacy' => array() ); - - if ( - $this->view->is_dir( $directory ) - && $handle = $this->view->opendir( $directory ) + + $found = array('plain' => array(), 'encrypted' => array(), 'legacy' => array()); + + if ( + $this->view->is_dir($directory) + && $handle = $this->view->opendir($directory) ) { - - while ( false !== ( $file = readdir( $handle ) ) ) { - + + while (false !== ($file = readdir($handle))) { + if ( - $file != "." - && $file != ".." + $file != "." + && $file != ".." ) { - - $filePath = $directory . '/' . $this->view->getRelativePath( '/' . $file ); - $relPath = $this->stripUserFilesPath( $filePath ); - + + $filePath = $directory . '/' . $this->view->getRelativePath('/' . $file); + $relPath = $this->stripUserFilesPath($filePath); + // If the path is a directory, search // its contents - if ( $this->view->is_dir( $filePath ) ) { - - $this->findEncFiles( $filePath ); - - // If the path is a file, determine - // its encryption status - } elseif ( $this->view->is_file( $filePath ) ) { - + if ($this->view->is_dir($filePath)) { + + $this->findEncFiles($filePath); + + // If the path is a file, determine + // its encryption status + } elseif ($this->view->is_file($filePath)) { + // Disable proxies again, some- // where they got re-enabled :/ \OC_FileProxy::$enabled = false; - - $data = $this->view->file_get_contents( $filePath ); - + + $data = $this->view->file_get_contents($filePath); + // If the file is encrypted // NOTE: If the userId is // empty or not set, file will @@ -385,128 +404,131 @@ class Util { // NOTE: This is inefficient; // scanning every file like this // will eat server resources :( - if ( - Keymanager::getFileKey( $this->view, $this->userId, $relPath ) - && Crypt::isCatfileContent( $data ) + if ( + Keymanager::getFileKey($this->view, $this->userId, $relPath) + && Crypt::isCatfileContent($data) ) { - - $found['encrypted'][] = array( 'name' => $file, 'path' => $filePath ); - - // If the file uses old - // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { - - $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); - - // If the file is not encrypted + + $found['encrypted'][] = array('name' => $file, 'path' => $filePath); + + // If the file uses old + // encryption system + } elseif (Crypt::isLegacyEncryptedContent($this->tail($filePath, 3), $relPath)) { + + $found['legacy'][] = array('name' => $file, 'path' => $filePath); + + // If the file is not encrypted } else { - - $found['plain'][] = array( 'name' => $file, 'path' => $relPath ); - + + $found['plain'][] = array('name' => $file, 'path' => $relPath); + } - + } - + } - + } - + \OC_FileProxy::$enabled = true; - - if ( empty( $found ) ) { - + + if (empty($found)) { + return false; - + } else { - + return $found; - + } - + } - + \OC_FileProxy::$enabled = true; - + return false; } - - /** - * @brief Fetch the last lines of a file efficiently - * @note Safe to use on large files; does not read entire file to memory - * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php - */ - public function tail( $filename, $numLines ) { - + + /** + * @brief Fetch the last lines of a file efficiently + * @note Safe to use on large files; does not read entire file to memory + * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php + */ + public function tail($filename, $numLines) + { + \OC_FileProxy::$enabled = false; - + $text = ''; $pos = -1; - $handle = $this->view->fopen( $filename, 'r' ); + $handle = $this->view->fopen($filename, 'r'); + + while ($numLines > 0) { - while ( $numLines > 0 ) { - --$pos; - if( fseek( $handle, $pos, SEEK_END ) !== 0 ) { - - rewind( $handle ); + if (fseek($handle, $pos, SEEK_END) !== 0) { + + rewind($handle); $numLines = 0; - - } elseif ( fgetc( $handle ) === "\n" ) { - + + } elseif (fgetc($handle) === "\n") { + --$numLines; - + } - $block_size = ( -$pos ) % 8192; - if ( $block_size === 0 || $numLines === 0 ) { - - $text = fread( $handle, ( $block_size === 0 ? 8192 : $block_size ) ) . $text; - + $block_size = (-$pos) % 8192; + if ($block_size === 0 || $numLines === 0) { + + $text = fread($handle, ($block_size === 0 ? 8192 : $block_size)) . $text; + } } - fclose( $handle ); - + fclose($handle); + \OC_FileProxy::$enabled = true; - + return $text; } - + /** - * @brief Check if a given path identifies an encrypted file - * @return true / false - */ - public function isEncryptedPath( $path ) { - + * @brief Check if a given path identifies an encrypted file + * @param $path + * @return boolean + */ + public function isEncryptedPath($path) + { + // Disable encryption proxy so data retrieved is in its // original form - $proxyStatus = \OC_FileProxy::$enabled; + $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - // we only need 24 byte from the last chunk - $data = ''; - $handle = $this->view->fopen( $path, 'r' ); - if(!fseek($handle, -24, SEEK_END)) { - $data = fgets($handle); - } + // we only need 24 byte from the last chunk + $data = ''; + $handle = $this->view->fopen($path, 'r'); + if (!fseek($handle, -24, SEEK_END)) { + $data = fgets($handle); + } - // re-enable proxy + // re-enable proxy \OC_FileProxy::$enabled = $proxyStatus; - - return Crypt::isCatfileContent( $data ); - + + return Crypt::isCatfileContent($data); + } /** - * @brief get the file size of the unencrypted file - * @param $path absolute path - * @return bool - */ + * @brief get the file size of the unencrypted file + * @param string $path absolute path + * @return bool + */ + public function getFileSize($path) + { - public function getFileSize( $path ) { - $result = 0; // Disable encryption proxy to prevent recursive calls @@ -514,8 +536,8 @@ class Util { \OC_FileProxy::$enabled = false; // Reformat path for use with OC_FSV - $pathSplit = explode( '/', $path ); - $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + $pathSplit = explode('/', $path); + $pathRelative = implode('/', array_slice($pathSplit, 3)); if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { @@ -529,7 +551,7 @@ class Util { // open stream $stream = fopen('crypt://' . $pathRelative, "r"); - if(is_resource($stream)) { + if (is_resource($stream)) { // calculate last chunk position $lastChunckPos = ($lastChunckNr * 8192); @@ -551,36 +573,36 @@ class Util { return $result; } - + /** * @brief fix the file size of the encrypted file * @param $path absolute path * @return true / false if file is encrypted */ + public function fixFileSize($path) + { - public function fixFileSize( $path ) { - $result = false; // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $realSize = $this->getFileSize( $path ); - - if ( $realSize > 0 ) { - - $cached = $this->view->getFileInfo( $path ); + $realSize = $this->getFileSize($path); + + if ($realSize > 0) { + + $cached = $this->view->getFileInfo($path); $cached['encrypted'] = true; // set the size $cached['unencrypted_size'] = $realSize; // put file info - $this->view->putFileInfo( $path, $cached ); + $this->view->putFileInfo($path, $cached); $result = true; - + } \OC_FileProxy::$enabled = $proxyStatus; @@ -592,70 +614,82 @@ class Util { * @brief Format a path to be relative to the /user/files/ directory * @note e.g. turns '/admin/files/test.txt' into 'test.txt' */ - public function stripUserFilesPath( $path ) { - - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 2 ); - $relPath = implode( '/', $sliced ); - + public function stripUserFilesPath($path) + { + + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + $sliced = array_slice($split, 2); + $relPath = implode('/', $sliced); + return $relPath; - + } - + /** * @brief Format a path to be relative to the /user directory * @note e.g. turns '/admin/files/test.txt' into 'files/test.txt' */ - public function stripFilesPath( $path ) { - - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 1 ); - $relPath = implode( '/', $sliced ); - + public function stripFilesPath($path) + { + + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + $sliced = array_slice($split, 1); + $relPath = implode('/', $sliced); + return $relPath; - + } - + /** * @brief Format a shared path to be relative to the /user/files/ directory * @note Expects a path like /uid/files/Shared/filepath */ - public function stripSharedFilePath( $path ) { - - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 3 ); - $relPath = implode( '/', $sliced ); - + public function stripSharedFilePath($path) + { + + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + $sliced = array_slice($split, 3); + $relPath = implode('/', $sliced); + return $relPath; - + } - - public function isSharedPath( $path ) { - - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - - if ( $split[2] == "Shared" ) { - + + /** + * @param $path + * @return bool + */ + public function isSharedPath($path) + { + + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + + if ($split[2] == "Shared") { + return true; - + } else { - + return false; - + } - + } - + /** * @brief Encrypt all files in a directory * @param string $dirPath the directory whose files will be encrypted + * @param null $legacyPassphrase + * @param null $newPassphrase + * @return bool * @note Encryption is recursive */ - public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) { + public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) + { if ($found = $this->findEncFiles($dirPath)) { @@ -762,174 +796,180 @@ class Util { * @param string $pathName Name of the directory to return the path of * @return string path */ - public function getPath( $pathName ) { - - switch ( $pathName ) { - + public function getPath($pathName) + { + + switch ($pathName) { + case 'publicKeyDir': - + return $this->publicKeyDir; - + break; - + case 'encryptionDir': - + return $this->encryptionDir; - + break; - + case 'keyfilesPath': - + return $this->keyfilesPath; - + break; - + case 'publicKeyPath': - + return $this->publicKeyPath; - + break; - + case 'privateKeyPath': - + return $this->privateKeyPath; - + break; - + } - + } - + /** * @brief get path of a file. - * @param $fileId id of the file - * @return path of the file + * @param int $fileId id of the file + * @return string path of the file */ - public static function fileIdToPath( $fileId ) { - - $query = \OC_DB::prepare( 'SELECT `path`' - .' FROM `*PREFIX*filecache`' - .' WHERE `fileid` = ?' ); - - $result = $query->execute( array( $fileId ) ); - + public static function fileIdToPath($fileId) + { + + $query = \OC_DB::prepare('SELECT `path`' + . ' FROM `*PREFIX*filecache`' + . ' WHERE `fileid` = ?'); + + $result = $query->execute(array($fileId)); + $row = $result->fetchRow(); - - return substr( $row['path'], 5 ); - + + return substr($row['path'], 5); + } - + /** * @brief Filter an array of UIDs to return only ones ready for sharing * @param array $unfilteredUsers users to be checked for sharing readiness * @return multi-dimensional array. keys: ready, unready */ - public function filterShareReadyUsers( $unfilteredUsers ) { - + public function filterShareReadyUsers($unfilteredUsers) + { + // This array will collect the filtered IDs $readyIds = $unreadyIds = array(); - + // Loop through users and create array of UIDs that need new keyfiles - foreach ( $unfilteredUsers as $user ) { - - $util = new Util( $this->view, $user ); - + foreach ($unfilteredUsers as $user) { + + $util = new Util($this->view, $user); + // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) - if ( + if ( $user == $this->publicShareKeyId or $user == $this->recoveryKeyId - or $util->ready() + or $util->ready() ) { - + // Construct array of ready UIDs for Keymanager{} $readyIds[] = $user; - + } else { - + // Construct array of unready UIDs for Keymanager{} $unreadyIds[] = $user; - + // Log warning; we can't do necessary setup here // because we don't have the user passphrase - \OC_Log::write( 'Encryption library', '"'.$user.'" is not setup for encryption', \OC_Log::WARN ); - + \OC_Log::write('Encryption library', '"' . $user . '" is not setup for encryption', \OC_Log::WARN); + } - + } - - return array ( + + return array( 'ready' => $readyIds - , 'unready' => $unreadyIds + , 'unready' => $unreadyIds ); - + } - + /** * @brief Decrypt a keyfile without knowing how it was encrypted * @param string $filePath * @param string $fileOwner * @param string $privateKey - * @note Checks whether file was encrypted with openssl_seal or + * @note Checks whether file was encrypted with openssl_seal or * openssl_encrypt, and decrypts accrdingly - * @note This was used when 2 types of encryption for keyfiles was used, + * @note This was used when 2 types of encryption for keyfiles was used, * but now we've switched to exclusively using openssl_seal() */ - public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { + public function decryptUnknownKeyfile($filePath, $fileOwner, $privateKey) + { // Get the encrypted keyfile // NOTE: the keyfile format depends on how it was encrypted! At // this stage we don't know how it was encrypted - $encKeyfile = Keymanager::getFileKey( $this->view, $this->userId, $filePath ); - + $encKeyfile = Keymanager::getFileKey($this->view, $this->userId, $filePath); + // We need to decrypt the keyfile // Has the file been shared yet? - if ( + if ( $this->userId == $fileOwner - && ! Keymanager::getShareKey( $this->view, $this->userId, $filePath ) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true + && !Keymanager::getShareKey($this->view, $this->userId, $filePath) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true ) { - + // The file has no shareKey, and its keyfile must be // decrypted conventionally - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); - - + $plainKeyfile = Crypt::keyDecrypt($encKeyfile, $privateKey); + + } else { - + // The file has a shareKey and must use it for decryption - $shareKey = Keymanager::getShareKey( $this->view, $this->userId, $filePath ); - - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - + $shareKey = Keymanager::getShareKey($this->view, $this->userId, $filePath); + + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + } - + return $plainKeyfile; } - + /** * @brief Encrypt keyfile to multiple users + * @param Session $session * @param array $users list of users which should be able to access the file * @param string $filePath path of the file to be shared - * @return bool + * @return bool */ - public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { - + public function setSharedFileKeyfiles(Session $session, array $users, $filePath) + { + // Make sure users are capable of sharing - $filteredUids = $this->filterShareReadyUsers( $users ); - + $filteredUids = $this->filterShareReadyUsers($users); + // If we're attempting to share to unready users - if ( ! empty( $filteredUids['unready'] ) ) { - - \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"'.print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); - + if (!empty($filteredUids['unready'])) { + + \OC_Log::write('Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"' . print_r($filteredUids['unready'], 1), \OC_Log::WARN); + return false; - + } - + // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); - + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); + // Note proxy status then disable it $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -937,273 +977,279 @@ class Util { // Get the current users's private key for decrypting existing keyfile $privateKey = $session->getPrivateKey(); - $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); - + $fileOwner = \OC\Files\Filesystem::getOwner($filePath); + // Decrypt keyfile - $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); - + $plainKeyfile = $this->decryptUnknownKeyfile($filePath, $fileOwner, $privateKey); + // Re-enc keyfile to (additional) sharekeys - $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); - + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); + // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory - if ( - ! Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) - || ! Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) + if ( + !Keymanager::setFileKey($this->view, $filePath, $fileOwner, $multiEncKey['data']) + || !Keymanager::setShareKeys($this->view, $filePath, $multiEncKey['keys']) ) { - \OC_Log::write( 'Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR ); - + \OC_Log::write('Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR); + return false; } - + // Return proxy to original status \OC_FileProxy::$enabled = $proxyStatus; return true; } - + /** * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle */ - public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { + public function getSharingUsersArray($sharingEnabled, $filePath, $currentUserId = false) + { // Check if key recovery is enabled if ( - \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) + \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled') && $this->recoveryEnabledForUser() ) { - - $recoveryEnabled = true; - - } else { - - $recoveryEnabled = false; - - } - - // Make sure that a share key is generated for the owner too - list( $owner, $ownerPath ) = $this->getUidAndFilename( $filePath ); - if ( $sharingEnabled ) { - + $recoveryEnabled = true; + + } else { + + $recoveryEnabled = false; + + } + + // Make sure that a share key is generated for the owner too + list($owner, $ownerPath) = $this->getUidAndFilename($filePath); + + if ($sharingEnabled) { + // Find out who, if anyone, is sharing the file - $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true ); + $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, true, true, true); $userIds = $result['users']; - if ( $result['public'] ) { + if ($result['public']) { $userIds[] = $this->publicShareKeyId; } - + } - + // If recovery is enabled, add the // Admin UID to list of users to share to - if ( $recoveryEnabled ) { - + if ($recoveryEnabled) { + // Find recoveryAdmin user ID - $recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); - + $recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + // Add recoveryAdmin to list of users sharing $userIds[] = $recoveryKeyId; - + } // add current user if given - if ( $currentUserId != false ) { - + if ($currentUserId != false) { + $userIds[] = $currentUserId; - + } // Remove duplicate UIDs - $uniqueUserIds = array_unique ( $userIds ); - + $uniqueUserIds = array_unique($userIds); + return $uniqueUserIds; } - + /** * @brief Set file migration status for user + * @param $status * @return bool */ - public function setMigrationStatus( $status ) { - + public function setMigrationStatus($status) + { + $sql = 'UPDATE *PREFIX*encryption SET migration_status = ? WHERE uid = ?'; - - $args = array( $status, $this->userId ); - - $query = \OCP\DB::prepare( $sql ); - - if ( $query->execute( $args ) ) { - + + $args = array($status, $this->userId); + + $query = \OCP\DB::prepare($sql); + + if ($query->execute($args)) { + return true; - + } else { - + return false; - + } - + } - + /** * @brief Check whether pwd recovery is enabled for a given user - * @return 1 = yes, 0 = no, false = no record - * @note If records are not being returned, check for a hidden space + * @return bool 1 = yes, 0 = no, false = no record + * @note If records are not being returned, check for a hidden space * at the start of the uid in db */ - public function getMigrationStatus() { - + public function getMigrationStatus() + { + $sql = 'SELECT migration_status FROM `*PREFIX*encryption` WHERE uid = ?'; - - $args = array( $this->userId ); - $query = \OCP\DB::prepare( $sql ); - - $result = $query->execute( $args ); - + $args = array($this->userId); + + $query = \OCP\DB::prepare($sql); + + $result = $query->execute($args); + $migrationStatus = array(); - - while( $row = $result->fetchRow() ) { - + + while ($row = $result->fetchRow()) { + $migrationStatus[] = $row['migration_status']; - + } - + // If no record is found - if ( empty( $migrationStatus ) ) { - + if (empty($migrationStatus)) { + return false; - - // If a record is found + + // If a record is found } else { - + return $migrationStatus[0]; - + } - + } - + /** * @brief get uid of the owners of the file and the path to the file - * @param $path Path of the file to check - * @note $shareFilePath must be relative to data/UID/files. Files + * @param string $path Path of the file to check + * @note $shareFilePath must be relative to data/UID/files. Files * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename( $path ) { + public function getUidAndFilename($path) + { - $view = new \OC\Files\View($this->userFilesDir); - $fileOwnerUid = $view->getOwner( $path ); + $view = new \OC\Files\View($this->userFilesDir); + $fileOwnerUid = $view->getOwner($path); - // handle public access - if($fileOwnerUid === false && $this->isPublic) { - $filename = $path; - $fileOwnerUid = $GLOBALS['fileOwner']; + // handle public access + if ($fileOwnerUid === false && $this->isPublic) { + $filename = $path; + $fileOwnerUid = $GLOBALS['fileOwner']; - return array ( $fileOwnerUid, $filename ); - } else { + return array($fileOwnerUid, $filename); + } else { - // Check that UID is valid - if ( ! \OCP\User::userExists( $fileOwnerUid ) ) { - throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); - } + // Check that UID is valid + if (!\OCP\User::userExists($fileOwnerUid)) { + throw new \Exception('Could not find owner (UID = "' . var_export($fileOwnerUid, 1) . '") of file "' . $path . '"'); + } - // NOTE: Bah, this dependency should be elsewhere - \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); + // NOTE: Bah, this dependency should be elsewhere + \OC\Files\Filesystem::initMountPoints($fileOwnerUid); - // If the file owner is the currently logged in user - if ( $fileOwnerUid == $this->userId ) { + // If the file owner is the currently logged in user + if ($fileOwnerUid == $this->userId) { - // Assume the path supplied is correct - $filename = $path; + // Assume the path supplied is correct + $filename = $path; - } else { + } else { - $info = $view->getFileInfo( $path ); - $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); + $info = $view->getFileInfo($path); + $ownerView = new \OC\Files\View('/' . $fileOwnerUid . '/files'); - // Fetch real file path from DB - $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir + // Fetch real file path from DB + $filename = $ownerView->getPath($info['fileid']); // TODO: Check that this returns a path without including the user data dir - } + } + + return array($fileOwnerUid, $filename); + } - return array ( $fileOwnerUid, $filename ); - } - } /** * @brief geo recursively through a dir and collect all files and sub files. - * @param type $dir relative to the users files folder + * @param string $dir relative to the users files folder * @return array with list of files relative to the users files folder */ - public function getAllFiles( $dir ) { - + public function getAllFiles($dir) + { + $result = array(); - $content = $this->view->getDirectoryContent( $this->userFilesDir . $dir ); + $content = $this->view->getDirectoryContent($this->userFilesDir . $dir); // handling for re shared folders - $path_split = explode( '/', $dir ); + $path_split = explode('/', $dir); $shared = ''; - - if( $path_split[1] === 'Shared' ) { - + + if ($path_split[1] === 'Shared') { + $shared = '/Shared'; - + } - foreach ( $content as $c ) { - - $sharedPart = $path_split[sizeof( $path_split )-1]; - $targetPathSplit = array_reverse( explode( '/', $c['path'] ) ); + foreach ($content as $c) { + + $sharedPart = $path_split[sizeof($path_split) - 1]; + $targetPathSplit = array_reverse(explode('/', $c['path'])); $path = ''; // rebuild path - foreach ( $targetPathSplit as $pathPart ) { - - if ( $pathPart !== $sharedPart ) { - + foreach ($targetPathSplit as $pathPart) { + + if ($pathPart !== $sharedPart) { + $path = '/' . $pathPart . $path; - + } else { - + break; - + } - + } - $path = $dir.$path; + $path = $dir . $path; + + if ($c['type'] === "dir") { + + $result = array_merge($result, $this->getAllFiles($path)); - if ($c['type'] === "dir" ) { - - $result = array_merge( $result, $this->getAllFiles( $path ) ); - } else { - + $result[] = $path; - + } } - + return $result; - + } /** @@ -1211,13 +1257,14 @@ class Util { * @param int $id of the current share * @return array of the parent */ - public static function getShareParent( $id ) { + public static function getShareParent($id) + { - $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' - .' FROM `*PREFIX*share`' - .' WHERE `id` = ?' ); + $query = \OC_DB::prepare('SELECT `file_target`, `item_type`' + . ' FROM `*PREFIX*share`' + . ' WHERE `id` = ?'); - $result = $query->execute( array( $id ) ); + $result = $query->execute(array($id)); $row = $result->fetchRow(); @@ -1230,13 +1277,14 @@ class Util { * @param int $id of the current share * @return array of the parent */ - public static function getParentFromShare( $id ) { + public static function getParentFromShare($id) + { - $query = \OC_DB::prepare( 'SELECT `parent`' - .' FROM `*PREFIX*share`' - .' WHERE `id` = ?' ); + $query = \OC_DB::prepare('SELECT `parent`' + . ' FROM `*PREFIX*share`' + . ' WHERE `id` = ?'); - $result = $query->execute( array( $id ) ); + $result = $query->execute(array($id)); $row = $result->fetchRow(); @@ -1246,57 +1294,70 @@ class Util { /** * @brief get owner of the shared files. - * @param int $Id of a share - * @return owner + * @param $id + * @internal param int $Id of a share + * @return string owner */ - public function getOwnerFromSharedFile( $id ) { - - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $source = $query->execute( array( $id ) )->fetchRow(); + public function getOwnerFromSharedFile($id) + { + + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $source = $query->execute(array($id))->fetchRow(); + + if (isset($source['parent'])) { - if ( isset($source['parent'] ) ) { - $parent = $source['parent']; - - while ( isset( $parent ) ) { - - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $item = $query->execute( array( $parent ) )->fetchRow(); - - if ( isset( $item['parent'] ) ) { - + + while (isset($parent)) { + + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $item = $query->execute(array($parent))->fetchRow(); + + if (isset($item['parent'])) { + $parent = $item['parent']; - + } else { - + $fileOwner = $item['uid_owner']; - + break; - + } } - + } else { - + $fileOwner = $source['uid_owner']; - + } return $fileOwner; - + } - public function getUserId() - { - return $this->userId; - } + /** + * @return string + */ + public function getUserId() + { + return $this->userId; + } - public function getUserFilesDir() - { - return $this->userFilesDir; - } + /** + * @return string + */ + public function getUserFilesDir() + { + return $this->userFilesDir; + } - public function checkRecoveryPassword($password) { + /** + * @param $password + * @return bool + */ + public function checkRecoveryPassword($password) + { $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; $pathControlData = '/control-file/controlfile.enc'; @@ -1315,30 +1376,35 @@ class Util { if ($decryptedControlData === 'ownCloud') { return true; - } - + } + return false; } - public function getRecoveryKeyId() { + /** + * @return string + */ + public function getRecoveryKeyId() + { return $this->recoveryKeyId; } /** * @brief add recovery key to all encrypted files */ - public function addRecoveryKeys($path = '/') { - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath.$path); + public function addRecoveryKeys($path = '/') + { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); foreach ($dirContent as $item) { $filePath = substr($item['path'], 25); if ($item['type'] == 'dir') { - $this->addRecoveryKeys($filePath.'/'); + $this->addRecoveryKeys($filePath . '/'); } else { $session = new Session(new \OC_FilesystemView('/')); $sharingEnabled = \OCP\Share::isEnabled(); $file = substr($filePath, 0, -4); $usersSharing = $this->getSharingUsersArray($sharingEnabled, $file); - $this->setSharedFileKeyfiles( $session, $usersSharing, $file ); + $this->setSharedFileKeyfiles($session, $usersSharing, $file); } } } @@ -1346,25 +1412,27 @@ class Util { /** * @brief remove recovery key to all encrypted files */ - public function removeRecoveryKeys($path = '/') { - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath.$path); + public function removeRecoveryKeys($path = '/') + { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); foreach ($dirContent as $item) { $filePath = substr($item['path'], 25); if ($item['type'] == 'dir') { - $this->removeRecoveryKeys($filePath.'/'); + $this->removeRecoveryKeys($filePath . '/'); } else { $file = substr($filePath, 0, -4); - $this->view->unlink($this->shareKeysPath.'/'.$file.'.'.$this->recoveryKeyId.'.shareKey'); + $this->view->unlink($this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey'); } } } /** * @brief decrypt given file with recovery key and encrypt it again to the owner and his new key - * @param type $file - * @param type $privateKey recovery key to decrypt the file + * @param string $file + * @param string $privateKey recovery key to decrypt the file */ - private function recoverFile($file, $privateKey) { + private function recoverFile($file, $privateKey) + { $sharingEnabled = \OCP\Share::isEnabled(); @@ -1385,17 +1453,17 @@ class Util { \OC_FileProxy::$enabled = false; //decrypt file key - $encKeyfile = $this->view->file_get_contents($this->keyfilesPath.$file.".key"); - $shareKey = $this->view->file_get_contents($this->shareKeysPath.$file.".".$this->recoveryKeyId.".shareKey"); + $encKeyfile = $this->view->file_get_contents($this->keyfilesPath . $file . ".key"); + $shareKey = $this->view->file_get_contents($this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey"); $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // encrypt file key again to all users, this time with the new public key for the recovered use $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); // write new keys to filesystem TDOO! - $this->view->file_put_contents($this->keyfilesPath.$file.'.key', $multiEncKey['data']); + $this->view->file_put_contents($this->keyfilesPath . $file . '.key', $multiEncKey['data']); foreach ($multiEncKey['keys'] as $userId => $shareKey) { - $shareKeyPath = $this->shareKeysPath.$file.'.'.$userId.'.shareKey'; + $shareKeyPath = $this->shareKeysPath . $file . '.' . $userId . '.shareKey'; $this->view->file_put_contents($shareKeyPath, $shareKey); } @@ -1405,10 +1473,11 @@ class Util { /** * @brief collect all files and recover them one by one - * @param type $path to look for files keys - * @param type $privateKey private recovery key which is used to decrypt the files + * @param string $path to look for files keys + * @param string $privateKey private recovery key which is used to decrypt the files */ - private function recoverAllFiles($path, $privateKey) { + private function recoverAllFiles($path, $privateKey) + { $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); foreach ($dirContent as $item) { $filePath = substr($item['path'], 25); @@ -1423,16 +1492,17 @@ class Util { /** * @brief recover users files in case of password lost - * @param type $recoveryPassword + * @param string $recoveryPassword */ - public function recoverUsersFiles($recoveryPassword) { + public function recoverUsersFiles($recoveryPassword) + { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/'.$this->recoveryKeyId.'.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $recoveryPassword ); + $encryptedKey = $this->view->file_get_contents('/owncloud_private_key/' . $this->recoveryKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $recoveryPassword); \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index c669aec122..5b5a2189a4 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,22 +7,23 @@ * See the COPYING-README file. */ -require_once realpath( dirname(__FILE__).'/../../../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); -require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); -require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); -require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); -require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); -require_once realpath( dirname(__FILE__).'/../lib/util.php' ); -require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); -require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Crypt */ -class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase +{ public $userId; public $pass; @@ -38,39 +39,40 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { public $genPrivateKey; public $genPublicKey; - function setUp() { - // reset backend - \OC_User::clearBackends(); - \OC_User::useBackend('database'); + function setUp() + { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); - // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); + // set content for encrypting / decrypting in tests + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); - $this->legacyData = realpath( dirname(__FILE__).'/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname(__FILE__).'/legacy-encrypted-text.txt' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $this->randomKey = Encryption\Crypt::generateKey(); - + $keypair = Encryption\Crypt::createKeypair(); - $this->genPublicKey = $keypair['publicKey']; + $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - - $this->view = new \OC_FilesystemView( '/' ); - - \OC_User::setUserId( 'admin' ); + + $this->view = new \OC_FilesystemView('/'); + + \OC_User::setUserId('admin'); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/'.$this->userId, '', $userHome); + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); // Filesystem related hooks \OCA\Encryption\Helper::registerUserHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // remember files_trashbin state $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); @@ -78,19 +80,20 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { // we don't want to tests with app files_trashbin enabled \OC_App::disable('files_trashbin'); - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); } - - function tearDown() { + + function tearDown() + { \OC_FileProxy::clearProxies(); // reset app files_trashbin @@ -99,285 +102,297 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } else { OC_App::disable('files_trashbin'); } - } + } + + function testGenerateKey() + { - function testGenerateKey() { - # TODO: use more accurate (larger) string length for test confirmation - + $key = Encryption\Crypt::generateKey(); - - $this->assertTrue( strlen( $key ) > 16 ); - + + $this->assertTrue(strlen($key) > 16); + } /** * @return String */ - function testGenerateIv() { - + function testGenerateIv() + { + $iv = Encryption\Crypt::generateIv(); - - $this->assertEquals( 16, strlen( $iv ) ); - + + $this->assertEquals(16, strlen($iv)); + return $iv; - + } - + /** * @depends testGenerateIv */ - function testConcatIv( $iv ) { - - $catFile = Encryption\Crypt::concatIv( $this->dataLong, $iv ); - + function testConcatIv($iv) + { + + $catFile = Encryption\Crypt::concatIv($this->dataLong, $iv); + // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); - - $identifier = substr( $meta, 0, 6); - + $meta = substr($catFile, -22); + + $identifier = substr($meta, 0, 6); + // Fetch IV from end of file - $foundIv = substr( $meta, 6 ); - - $this->assertEquals( '00iv00', $identifier ); - - $this->assertEquals( $iv, $foundIv ); - + $foundIv = substr($meta, 6); + + $this->assertEquals('00iv00', $identifier); + + $this->assertEquals($iv, $foundIv); + // Remove IV and IV identifier text to expose encrypted content - $data = substr( $catFile, 0, -22 ); - - $this->assertEquals( $this->dataLong, $data ); - + $data = substr($catFile, 0, -22); + + $this->assertEquals($this->dataLong, $data); + return array( 'iv' => $iv - , 'catfile' => $catFile + , 'catfile' => $catFile ); - + } - + /** * @depends testConcatIv */ - function testSplitIv( $testConcatIv ) { - + function testSplitIv($testConcatIv) + { + // Split catfile into components - $splitCatfile = Encryption\Crypt::splitIv( $testConcatIv['catfile'] ); - + $splitCatfile = Encryption\Crypt::splitIv($testConcatIv['catfile']); + // Check that original IV and split IV match - $this->assertEquals( $testConcatIv['iv'], $splitCatfile['iv'] ); - + $this->assertEquals($testConcatIv['iv'], $splitCatfile['iv']); + // Check that original data and split data match - $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); - + $this->assertEquals($this->dataLong, $splitCatfile['encrypted']); + } /** * @return string padded */ - function testAddPadding() { - - $padded = Encryption\Crypt::addPadding( $this->dataLong ); - - $padding = substr( $padded, -2 ); - - $this->assertEquals( 'xx' , $padding ); - + function testAddPadding() + { + + $padded = Encryption\Crypt::addPadding($this->dataLong); + + $padding = substr($padded, -2); + + $this->assertEquals('xx', $padding); + return $padded; - + } - + /** * @depends testAddPadding */ - function testRemovePadding( $padded ) { - - $noPadding = Encryption\Crypt::RemovePadding( $padded ); - - $this->assertEquals( $this->dataLong, $noPadding ); - + function testRemovePadding($padded) + { + + $noPadding = Encryption\Crypt::RemovePadding($padded); + + $this->assertEquals($this->dataLong, $noPadding); + } - - function testEncrypt() { - - $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + function testEncrypt() + { - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); + $random = openssl_random_pseudo_bytes(13); + + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + + $this->assertNotEquals($this->dataUrl, $crypted); - $this->assertNotEquals( $this->dataUrl, $crypted ); - } - - function testDecrypt() { - - $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + function testDecrypt() + { - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); - - $decrypt = Encryption\Crypt::decrypt( $crypted, $iv, 'hat' ); + $random = openssl_random_pseudo_bytes(13); + + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + + $decrypt = Encryption\Crypt::decrypt($crypted, $iv, 'hat'); + + $this->assertEquals($this->dataUrl, $decrypt); - $this->assertEquals( $this->dataUrl, $decrypt ); - } - - function testSymmetricEncryptFileContent() { - + + function testSymmetricEncryptFileContent() + { + # TODO: search in keyfile for actual content as IV will ensure this test always passes - - $crypted = Encryption\Crypt::symmetricEncryptFileContent( $this->dataShort, 'hat' ); - $this->assertNotEquals( $this->dataShort, $crypted ); - + $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted, 'hat' ); + $this->assertNotEquals($this->dataShort, $crypted); + + + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); + + $this->assertEquals($this->dataShort, $decrypt); - $this->assertEquals( $this->dataShort, $decrypt ); - } - function testSymmetricStreamEncryptShortFileContent() { - - $filename = 'tmp-'.time().'.test'; + function testSymmetricStreamEncryptShortFileContent() + { + + $filename = 'tmp-' . time() . '.test'; + + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); - // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); + $this->assertNotEquals($this->dataShort, $retreivedCryptedFile); - // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + // Get the encrypted keyfile + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); - // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + // Attempt to fetch the user's shareKey + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); - // get session - $session = new Encryption\Session( $this->view ); + // get session + $session = new Encryption\Session($this->view); - // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + // get private key + $privateKey = $session->getPrivateKey($this->userId); - // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + // Decrypt keyfile with shareKey + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); - // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); + // Manually decrypt + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent($retreivedCryptedFile, $plainKeyfile); // Check that decrypted data matches - $this->assertEquals( $this->dataShort, $manualDecrypt ); + $this->assertEquals($this->dataShort, $manualDecrypt); - // Teardown - $this->view->unlink( $this->userId . '/files/' . $filename ); + // Teardown + $this->view->unlink($this->userId . '/files/' . $filename); - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); } - + /** * @brief Test that data that is written by the crypto stream wrapper * @note Encrypted data is manually prepared and decrypted here to avoid dependency on success of stream_read - * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual + * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testSymmetricStreamEncryptLongFileContent() { - + function testSymmetricStreamEncryptLongFileContent() + { + // Generate a a random filename - $filename = 'tmp-'.time().'.test'; - + $filename = 'tmp-' . time() . '.test'; + // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong.$this->dataLong ); - + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong . $this->dataLong); + // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); - + $this->assertTrue(is_int($cryptedFile)); + // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + // Get file contents without using any wrapper to get it's actual contents on disk + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; - // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataLong.$this->dataLong, $retreivedCryptedFile ); - + // Check that the file was encrypted before being written to disk + $this->assertNotEquals($this->dataLong . $this->dataLong, $retreivedCryptedFile); + // Manuallly split saved file into separate IVs and encrypted chunks $r = preg_split('/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE); - + //print_r($r); - + // Join IVs and their respective data chunks - $e = array( $r[0].$r[1], $r[2].$r[3], $r[4].$r[5], $r[6].$r[7], $r[8].$r[9], $r[10].$r[11]);//.$r[11], $r[12].$r[13], $r[14] ); - + $e = array($r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11]); //.$r[11], $r[12].$r[13], $r[14] ); + //print_r($e); - // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + // Get the encrypted keyfile + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); - // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + // Attempt to fetch the user's shareKey + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); - // get session - $session = new Encryption\Session( $this->view ); + // get session + $session = new Encryption\Session($this->view); - // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + // get private key + $privateKey = $session->getPrivateKey($this->userId); - // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + // Decrypt keyfile with shareKey + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // Set var for reassembling decrypted content $decrypt = ''; - + // Manually decrypt chunk foreach ($e as $chunk) { - - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); - + + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent($chunk, $plainKeyfile); + // Assemble decrypted chunks $decrypt .= $chunkDecrypt; - + } - - $this->assertEquals( $this->dataLong.$this->dataLong, $decrypt ); - + + $this->assertEquals($this->dataLong . $this->dataLong, $decrypt); + // Teardown - - $this->view->unlink( $this->userId . '/files/' . $filename ); - - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); - + + $this->view->unlink($this->userId . '/files/' . $filename); + + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); + } - + /** * @brief Test that data that is read by the crypto stream wrapper */ - function testSymmetricStreamDecryptShortFileContent() { - - $filename = 'tmp-'.time(); - + function testSymmetricStreamDecryptShortFileContent() + { + + $filename = 'tmp-' . time(); + // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); - + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); + // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; @@ -387,34 +402,35 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; - // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); - - $this->assertEquals( $this->dataShort, $decrypt ); + // Get file decrypted contents + $decrypt = file_get_contents('crypt://' . $filename); - // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->assertEquals($this->dataShort, $decrypt); + + // tear down + $this->view->unlink($this->userId . '/files/' . $filename); } - - function testSymmetricStreamDecryptLongFileContent() { - - $filename = 'tmp-'.time(); - + + function testSymmetricStreamDecryptLongFileContent() + { + + $filename = 'tmp-' . time(); + // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); - + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + // Get file decrypted contents + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); - // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + // tear down + $this->view->unlink($this->userId . '/files/' . $filename); } - + // Is this test still necessary? // function testSymmetricBlockStreamDecryptFileContent() { // @@ -438,260 +454,274 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { // // } - function testSymmetricEncryptFileContentKeyfile() { - - # TODO: search in keyfile for actual content as IV will ensure this test always passes - - $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); - - $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); - - - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted['encrypted'], $crypted['key'] ); - - $this->assertEquals( $this->dataUrl, $decrypt ); - - } - - function testIsEncryptedContent() { - - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); - - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); - - $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); + function testSymmetricEncryptFileContentKeyfile() + { - $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); - - } - - function testMultiKeyEncrypt() { - # TODO: search in keyfile for actual content as IV will ensure this test always passes - + + $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->dataUrl); + + $this->assertNotEquals($this->dataUrl, $crypted['encrypted']); + + + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted['encrypted'], $crypted['key']); + + $this->assertEquals($this->dataUrl, $decrypt); + + } + + function testIsEncryptedContent() + { + + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); + + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); + + $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat'); + + $this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); + + } + + function testMultiKeyEncrypt() + { + + # TODO: search in keyfile for actual content as IV will ensure this test always passes + $pair1 = Encryption\Crypt::createKeypair(); - - $this->assertEquals( 2, count( $pair1 ) ); - - $this->assertTrue( strlen( $pair1['publicKey'] ) > 1 ); - - $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); - - $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); - - $this->assertNotEquals( $this->dataShort, $crypted['data'] ); - + $this->assertEquals(2, count($pair1)); + + $this->assertTrue(strlen($pair1['publicKey']) > 1); + + $this->assertTrue(strlen($pair1['privateKey']) > 1); + + + $crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); + + $this->assertNotEquals($this->dataShort, $crypted['data']); + + + $decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); + + $this->assertEquals($this->dataShort, $decrypt); - $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); - - $this->assertEquals( $this->dataShort, $decrypt ); - } - - function testKeyEncrypt() { - + + function testKeyEncrypt() + { + // Generate keypair $pair1 = Encryption\Crypt::createKeypair(); - + // Encrypt data - $crypted = Encryption\Crypt::keyEncrypt( $this->dataUrl, $pair1['publicKey'] ); - - $this->assertNotEquals( $this->dataUrl, $crypted ); - + $crypted = Encryption\Crypt::keyEncrypt($this->dataUrl, $pair1['publicKey']); + + $this->assertNotEquals($this->dataUrl, $crypted); + // Decrypt data - $decrypt = Encryption\Crypt::keyDecrypt( $crypted, $pair1['privateKey'] ); - - $this->assertEquals( $this->dataUrl, $decrypt ); - + $decrypt = Encryption\Crypt::keyDecrypt($crypted, $pair1['privateKey']); + + $this->assertEquals($this->dataUrl, $decrypt); + } - + /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptShort() { - - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataShort, $this->pass ); + function testLegacyEncryptShort() + { + + $crypted = Encryption\Crypt::legacyEncrypt($this->dataShort, $this->pass); + + $this->assertNotEquals($this->dataShort, $crypted); - $this->assertNotEquals( $this->dataShort, $crypted ); - # TODO: search inencrypted text for actual content to ensure it # genuine transformation - + return $crypted; - + } - + /** * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ - function testLegacyDecryptShort( $crypted ) { - - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - - $this->assertEquals( $this->dataShort, $decrypted ); - + function testLegacyDecryptShort($crypted) + { + + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + + $this->assertEquals($this->dataShort, $decrypted); + } /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptLong() { - - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataLong, $this->pass ); + function testLegacyEncryptLong() + { + + $crypted = Encryption\Crypt::legacyEncrypt($this->dataLong, $this->pass); + + $this->assertNotEquals($this->dataLong, $crypted); - $this->assertNotEquals( $this->dataLong, $crypted ); - # TODO: search inencrypted text for actual content to ensure it # genuine transformation - + return $crypted; - + } - + /** * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyDecryptLong( $crypted ) { - - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - - $this->assertEquals( $this->dataLong, $decrypted ); - + function testLegacyDecryptLong($crypted) + { + + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + + $this->assertEquals($this->dataLong, $decrypted); + } - + /** * @brief test generation of legacy encryption key * @depends testLegacyDecryptShort */ - function testLegacyCreateKey() { - + function testLegacyCreateKey() + { + // Create encrypted key - $encKey = Encryption\Crypt::legacyCreateKey( $this->pass ); - + $encKey = Encryption\Crypt::legacyCreateKey($this->pass); + // Decrypt key - $key = Encryption\Crypt::legacyDecrypt( $encKey, $this->pass ); - - $this->assertTrue( is_numeric( $key ) ); - + $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); + + $this->assertTrue(is_numeric($key)); + // Check that key is correct length - $this->assertEquals( 20, strlen( $key ) ); - + $this->assertEquals(20, strlen($key)); + } /** * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { - - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); - - $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); - + function testLegacyKeyRecryptKeyfileEncrypt($crypted) + { + + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); + + $this->assertNotEquals($this->dataLong, $recrypted['data']); + return $recrypted; - + # TODO: search inencrypted text for actual content to ensure it # genuine transformation - + } - function testRenameFile() { + function testRenameFile() + { - $filename = 'tmp-'.time(); + $filename = 'tmp-' . time(); - // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); - // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); - $newFilename = 'tmp-new-'.time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->rename( $filename, $newFilename ); + $newFilename = 'tmp-new-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->rename($filename, $newFilename); - // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); + // Get file decrypted contents + $newDecrypt = file_get_contents('crypt://' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); - // tear down - $view->unlink( $newFilename ); - } + // tear down + $view->unlink($newFilename); + } - function testMoveFileIntoFolder() { + function testMoveFileIntoFolder() + { - $filename = 'tmp-'.time(); + $filename = 'tmp-' . time(); - // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + // Save long data as encrypted file using stream wrapper + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); - // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); - // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + // Get file decrypted contents + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); - $newFolder = '/newfolder'.time(); - $newFilename = 'tmp-new-'.time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->mkdir($newFolder); - $view->rename( $filename, $newFolder . '/' . $newFilename ); + $newFolder = '/newfolder' . time(); + $newFilename = 'tmp-new-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->mkdir($newFolder); + $view->rename($filename, $newFolder . '/' . $newFilename); - // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); + // Get file decrypted contents + $newDecrypt = file_get_contents('crypt://' . $newFolder . '/' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); - // tear down - $view->unlink( $newFolder ); - } + // tear down + $view->unlink($newFolder); + } - function testMoveFolder() { + function testMoveFolder() + { $view = new \OC\Files\View('/' . $this->userId . '/files'); - $filename = '/tmp-'.time(); - $folder = '/folder'.time(); + $filename = '/tmp-' . time(); + $folder = '/folder' . time(); $view->mkdir($folder); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + $decrypt = file_get_contents('crypt://' . $folder . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); - $newFolder = '/newfolder'.time(); + $newFolder = '/newfolder' . time(); - $view->rename( $folder, $newFolder ); + $view->rename($folder, $newFolder); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); + $view->unlink($newFolder); } - function testRenameFolder() { + function testRenameFolder() + { - $filename = '/tmp-'.time(); + $filename = '/tmp-' . time(); $folder = '/folder'; $newFolder = '/newfolder'; @@ -699,42 +729,43 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view->mkdir($folder); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + $decrypt = file_get_contents('crypt://' . $folder . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // rename folder $view->rename($folder, $newFolder); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); + $view->unlink($newFolder); } - function testChangePassphrase() { + function testChangePassphrase() + { - $filename = 'tmp-'.time(); + $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // change password \OC_User::setPassword($this->userId, 'test', null); @@ -745,109 +776,113 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { OCA\Encryption\Hooks::login($params); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $filename ); + $newDecrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down // change password back \OC_User::setPassword($this->userId, $this->pass); $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->unlink( $filename ); + $view->unlink($filename); } - function testViewFilePutAndGetContents() { + function testViewFilePutAndGetContents() + { - $filename = '/tmp-'.time(); + $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // Save long data as encrypted file using stream wrapper - $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); + $cryptedFileLong = $view->file_put_contents($filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFileLong ) ); + $this->assertTrue(is_int($cryptedFileLong)); // Get file decrypted contents - $decryptLong = $view->file_get_contents( $filename ); + $decryptLong = $view->file_get_contents($filename); - $this->assertEquals( $this->dataLong, $decryptLong ); + $this->assertEquals($this->dataLong, $decryptLong); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } - function testTouchExistingFile() { - $filename = '/tmp-'.time(); + function testTouchExistingFile() + { + $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); $view->touch($filename); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } - function testTouchFile() { - $filename = '/tmp-'.time(); + function testTouchFile() + { + $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->touch($filename); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } - function testFopenFile() { - $filename = '/tmp-'.time(); + function testFopenFile() + { + $filename = '/tmp-' . time(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); $handle = $view->fopen($filename, 'r'); // Get file decrypted contents $decrypt = fgets($handle); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } // function testEncryption(){ // @@ -912,5 +947,5 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { // $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key,strlen($source)); // $this->assertEquals($decrypted,$source); // } - + } diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 8ca8b0287e..334cc743f2 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -6,21 +6,22 @@ * See the COPYING-README file. */ -require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); -require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); -require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); -require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); -require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); -require_once realpath( dirname(__FILE__).'/../lib/util.php' ); -require_once realpath( dirname(__FILE__).'/../lib/helper.php' ); -require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Keymanager */ -class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase +{ public $userId; public $pass; @@ -31,38 +32,39 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { public $view; public $randomKey; - function setUp() { - // reset backend - \OC_User::clearBackends(); - \OC_User::useBackend('database'); + function setUp() + { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); \OC_FileProxy::$enabled = false; - + // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); - $this->legacyData = realpath( dirname(__FILE__).'/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname(__FILE__).'/legacy-encrypted-text.txt' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $this->randomKey = Encryption\Crypt::generateKey(); - + $keypair = Encryption\Crypt::createKeypair(); - $this->genPublicKey = $keypair['publicKey']; + $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId('admin'); + $this->userId = 'admin'; + $this->pass = 'admin'; - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/'.$this->userId, '', $userHome); + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // remember files_trashbin state $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); @@ -70,19 +72,20 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { // we don't want to tests with app files_trashbin enabled \OC_App::disable('files_trashbin'); - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); } - - function tearDown(){ - + + function tearDown() + { + \OC_FileProxy::$enabled = true; \OC_FileProxy::clearProxies(); @@ -94,11 +97,12 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { } } - function testGetPrivateKey() { - - $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); + function testGetPrivateKey() + { - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass); + $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); + + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass); $res = openssl_pkey_get_private($privateKey); @@ -107,12 +111,13 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $sslInfo = openssl_pkey_get_details($res); $this->assertArrayHasKey('key', $sslInfo); - - } - - function testGetPublicKey() { - $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); + } + + function testGetPublicKey() + { + + $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); $res = openssl_pkey_get_public($publiceKey); @@ -122,40 +127,41 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->assertArrayHasKey('key', $sslInfo); } - - function testSetFileKey() { - + + function testSetFileKey() + { + # NOTE: This cannot be tested until we are able to break out # of the FileSystemView data directory root - - $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); - - $file = 'unittest-'.time().'.txt'; - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat'); - $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); + $file = 'unittest-' . time() . '.txt'; - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); + + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); + Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink('/'.$this->userId . '/files/' . $file); + $this->view->unlink('/' . $this->userId . '/files/' . $file); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - + } - + // /** // * @depends testGetPrivateKey // */ @@ -171,10 +177,11 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { // $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $decrypted, 0, 27 ) ); // // } - - function testGetUserKeys() { - - $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); + + function testGetUserKeys() + { + + $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); $resPublic = openssl_pkey_get_public($keys['publicKey']); @@ -184,7 +191,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->assertArrayHasKey('key', $sslInfoPublic); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass); $resPrivate = openssl_pkey_get_private($privateKey); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index efff8e322e..a9ee8d0023 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -50,446 +50,446 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase public $subsubfolder; function setUp() - { - // reset backend - \OC_User::clearBackends(); - \OC_User::useBackend('database'); + { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); - $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView('/'); + $this->dataShort = 'hats'; + $this->view = new \OC_FilesystemView('/'); - $userHome = \OC_User::getHome('admin'); - $this->dataDir = str_replace('/admin', '', $userHome); + $userHome = \OC_User::getHome('admin'); + $this->dataDir = str_replace('/admin', '', $userHome); - $this->folder1 = '/folder1'; - $this->subfolder = '/subfolder1'; - $this->subsubfolder = '/subsubfolder1'; + $this->folder1 = '/folder1'; + $this->subfolder = '/subfolder1'; + $this->subsubfolder = '/subsubfolder1'; - $this->filename = 'share-tmp.test'; + $this->filename = 'share-tmp.test'; - // enable resharing - \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + // enable resharing + \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); - // clear share hooks - \OC_Hook::clear('OCP\\Share'); - \OC::registerShareHooks(); - \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + // clear share hooks + \OC_Hook::clear('OCP\\Share'); + \OC::registerShareHooks(); + \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); - // Sharing related hooks - \OCA\Encryption\Helper::registerShareHooks(); + // Sharing related hooks + \OCA\Encryption\Helper::registerShareHooks(); - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); - // create users - $this->loginHelper('user1', true); - $this->loginHelper('user2', true); - $this->loginHelper('user3', true); + // create users + $this->loginHelper('user1', true); + $this->loginHelper('user2', true); + $this->loginHelper('user3', true); // create group and assign users \OC_Group::createGroup('group1'); \OC_Group::addToGroup('user2', 'group1'); \OC_Group::addToGroup('user3', 'group1'); - } + } - function tearDown() - { - // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); - } else { - OC_App::disable('files_trashbin'); - } + function tearDown() + { + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } // clean group \OC_Group::deleteGroup('group1'); - // cleanup users - \OC_User::deleteUser('user1'); - \OC_User::deleteUser('user2'); - \OC_User::deleteUser('user3'); + // cleanup users + \OC_User::deleteUser('user1'); + \OC_User::deleteUser('user2'); + \OC_User::deleteUser('user3'); \OC_FileProxy::clearProxies(); - } + } /** * @param bool $withTeardown */ function testShareFile($withTeardown = true) - { - // login as admin - $this->loginHelper('admin'); + { + // login as admin + $this->loginHelper('admin'); - // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); - // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); - // disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); - // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); - // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + // check if the unencrypted file size is stored + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); - // re-enable the file proxy - \OC_FileProxy::$enabled = $proxyStatus; + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; - // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + // check if share key for user1 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); - // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same as we previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // cleanup - if ($withTeardown) { + // cleanup + if ($withTeardown) { - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + // unshare the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - } - } + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + } + } /** * @param bool $withTeardown */ function testReShareFile($withTeardown = true) - { - $this->testShareFile(false); + { + $this->testShareFile(false); - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // get the file info - $fileInfo = $this->view->getFileInfo('/user1/files/Shared/' . $this->filename); + // get the file info + $fileInfo = $this->view->getFileInfo('/user1/files/Shared/' . $this->filename); - // share the file with user2 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + // share the file with user2 + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + // check if share key for user2 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - // login as user2 - $this->loginHelper('user2'); + // login as user2 + $this->loginHelper('user2'); - // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); - // check if data is the same as previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same as previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // cleanup - if ($withTeardown) { + // cleanup + if ($withTeardown) { - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // unshare the file with user2 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + // unshare the file with user2 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - // unshare the file with user1 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + // unshare the file with user1 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - } - } + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + } + } /** * @param bool $withTeardown * @return array */ function testShareFolder($withTeardown = true) - { - // login as admin - $this->loginHelper('admin'); + { + // login as admin + $this->loginHelper('admin'); - // create folder structure - $this->view->mkdir('/admin/files' . $this->folder1); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + // create folder structure + $this->view->mkdir('/admin/files' . $this->folder1); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); - // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); - // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); - // disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // get the file info from previous created folder - $fileInfo = $this->view->getFileInfo('/admin/files' . $this->folder1); + // get the file info from previous created folder + $fileInfo = $this->view->getFileInfo('/admin/files' . $this->folder1); - // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); - // re-enable the file proxy - \OC_FileProxy::$enabled = $proxyStatus; + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; - // share the folder with user1 - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + // share the folder with user1 + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + // check if share key for user1 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); - // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // cleanup - if ($withTeardown) { + // cleanup + if ($withTeardown) { - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // unshare the folder with user1 - \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + // unshare the folder with user1 + \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - // cleanup - $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + // cleanup + $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); - } + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + } - return $fileInfo; - } + return $fileInfo; + } /** * @param bool $withTeardown */ function testReShareFolder($withTeardown = true) - { - $fileInfoFolder1 = $this->testShareFolder(false); + { + $fileInfoFolder1 = $this->testShareFolder(false); - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // get the file info from previous created folder - $fileInfoSubFolder = $this->view->getFileInfo('/user1/files/Shared' . $this->folder1 . $this->subfolder); + // get the file info from previous created folder + $fileInfoSubFolder = $this->view->getFileInfo('/user1/files/Shared' . $this->folder1 . $this->subfolder); - // check if we have a valid file info - $this->assertTrue(is_array($fileInfoSubFolder)); + // check if we have a valid file info + $this->assertTrue(is_array($fileInfoSubFolder)); - // re-enable the file proxy - \OC_FileProxy::$enabled = $proxyStatus; + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; - // share the file with user2 - \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + // share the file with user2 + \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + // check if share key for user2 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); - // login as user2 - $this->loginHelper('user2'); + // login as user2 + $this->loginHelper('user2'); - // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); - // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // get the file info - $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + // get the file info + $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); - // check if we have fileInfos - $this->assertTrue(is_array($fileInfo)); + // check if we have fileInfos + $this->assertTrue(is_array($fileInfo)); - // share the file with user3 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL); + // share the file with user3 + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // check if share key for user3 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + // check if share key for user3 exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); - // login as user3 - $this->loginHelper('user3'); + // login as user3 + $this->loginHelper('user3'); - // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); + // get file contents + $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); - // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // cleanup - if ($withTeardown) { + // cleanup + if ($withTeardown) { - // login as user2 - $this->loginHelper('user2'); + // login as user2 + $this->loginHelper('user2'); - // unshare the file with user3 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3'); + // unshare the file with user3 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); - // login as user1 - $this->loginHelper('user1'); + // login as user1 + $this->loginHelper('user1'); - // unshare the folder with user2 - \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + // unshare the folder with user2 + \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // unshare the folder1 with user1 - \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + // unshare the folder1 with user1 + \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - // cleanup - $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + // cleanup + $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); - } - } + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + } + } - function testPublicShareFile() - { - // login as admin - $this->loginHelper('admin'); + function testPublicShareFile() + { + // login as admin + $this->loginHelper('admin'); - // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); - // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); - // disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); - // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); - // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + // check if the unencrypted file size is stored + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); - // re-enable the file proxy - \OC_FileProxy::$enabled = $proxyStatus; + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; - // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - // check if share key for public exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + // check if share key for public exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); - // some hacking to simulate public link - $GLOBALS['app'] = 'files_sharing'; - $GLOBALS['fileOwner'] = 'admin'; - \OC_User::setUserId(''); + // some hacking to simulate public link + $GLOBALS['app'] = 'files_sharing'; + $GLOBALS['fileOwner'] = 'admin'; + \OC_User::setUserId(''); - // get file contents - $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); + // get file contents + $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); - // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + // check if data is the same as we previously written + $this->assertEquals($this->dataShort, $retrievedCryptedFile); - // tear down + // tear down - // login as admin - $this->loginHelper('admin'); + // login as admin + $this->loginHelper('admin'); - // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); + // unshare the file + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); - // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); - // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - } + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + } function testShareFileWithGroup() { @@ -581,7 +581,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // save file with content $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); // test that data was successfully written $this->assertTrue(is_int($cryptedFile1)); @@ -589,9 +589,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // check if share key for admin and recovery exists $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // disable recovery for admin $this->assertTrue($util->setRecoveryForUser(0)); @@ -600,8 +600,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $util->removeRecoveryKeys('/'); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin $this->assertTrue($util->setRecoveryForUser(1)); @@ -610,16 +610,16 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $util->addRecoveryKeys('/'); // check if share key for admin and recovery exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // cleanup $this->view->unlink('/admin/files/' . $this->filename); - $this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename); + $this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); } function testRecoveryForUser() @@ -648,7 +648,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // save file with content $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); // test that data was successfully written $this->assertTrue(is_int($cryptedFile1)); @@ -656,9 +656,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // check if share key for user and recovery exists $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // login as admin $this->loginHelper('admin'); @@ -671,7 +671,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // get file contents $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); - $retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename); + $retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same as we previously written $this->assertEquals($this->dataShort, $retrievedCryptedFile1); @@ -683,9 +683,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // check if share key for user and recovery exists $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin $this->assertTrue($util->setRecoveryForUser(0)); @@ -697,23 +697,23 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase * @param bool $password */ function loginHelper($user, $create = false, $password = false) - { - if ($create) { - \OC_User::createUser($user, $user); - } + { + if ($create) { + \OC_User::createUser($user, $user); + } - if($password === false) { + if ($password === false) { $password = $user; } - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($user); - \OC_User::setUserId($user); + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($user); + \OC_User::setUserId($user); - $params['uid'] = $user; - $params['password'] = $password; - OCA\Encryption\Hooks::login($params); - } + $params['uid'] = $user; + $params['password'] = $password; + OCA\Encryption\Hooks::login($params); + } } diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 53ac8ee8d6..57ec395342 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,20 +6,21 @@ * See the COPYING-README file. */ -require_once realpath( dirname(__FILE__).'/../../../lib/base.php' ); -require_once realpath( dirname(__FILE__).'/../lib/crypt.php' ); -require_once realpath( dirname(__FILE__).'/../lib/keymanager.php' ); -require_once realpath( dirname(__FILE__).'/../lib/proxy.php' ); -require_once realpath( dirname(__FILE__).'/../lib/stream.php' ); -require_once realpath( dirname(__FILE__).'/../lib/util.php' ); -require_once realpath( dirname(__FILE__).'/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Util */ -class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Util extends \PHPUnit_Framework_TestCase +{ public $userId; public $encryptionDir; @@ -38,132 +39,139 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { public $util; public $dataShort; - function setUp() { - // reset backend - \OC_User::useBackend('database'); + function setUp() + { + // reset backend + \OC_User::useBackend('database'); - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId('admin'); + $this->userId = 'admin'; + $this->pass = 'admin'; - // set content for encrypting / decrypting in tests - $this->dataUrl = realpath( dirname(__FILE__).'/../lib/crypt.php' ); + // set content for encrypting / decrypting in tests + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); $this->dataShort = 'hats'; - $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); - $this->legacyData = realpath( dirname(__FILE__).'/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname(__FILE__).'/legacy-encrypted-text.txt' ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $keypair = Encryption\Crypt::createKeypair(); - - $this->genPublicKey = $keypair['publicKey']; + + $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - - $this->publicKeyDir = '/' . 'public-keys'; - $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; + + $this->publicKeyDir = '/' . 'public-keys'; + $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/'.$this->userId, '', $userHome); + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); - $this->util = new Encryption\Util( $this->view, $this->userId ); + $this->util = new Encryption\Util($this->view, $this->userId); } - - function tearDown(){ - + + function tearDown() + { + \OC_FileProxy::clearProxies(); } - + /** * @brief test that paths set during User construction are correct */ - function testKeyPaths() { - - $util = new Encryption\Util( $this->view, $this->userId ); - - $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); - $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); - $this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) ); - $this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) ); - $this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) ); - + function testKeyPaths() + { + + $util = new Encryption\Util($this->view, $this->userId); + + $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); + $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); + $this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath')); + $this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath')); + $this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath')); + } - + /** * @brief test setup of encryption directories */ - function testSetupServerSide() { - - $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); + function testSetupServerSide() + { + + $this->assertEquals(true, $this->util->setupServerSide($this->pass)); } - + /** * @brief test checking whether account is ready for encryption, */ - function testUserIsReady() { - - $this->assertEquals( true, $this->util->ready() ); + function testUserIsReady() + { + + $this->assertEquals(true, $this->util->ready()); } - - function testRecoveryEnabledForUser() { - - $util = new Encryption\Util( $this->view, $this->userId ); - + + function testRecoveryEnabledForUser() + { + + $util = new Encryption\Util($this->view, $this->userId); + // Record the value so we can return it to it's original state later $enabled = $util->recoveryEnabledForUser(); - - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); - - $this->assertEquals( 1, $util->recoveryEnabledForUser() ); - - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); - - $this->assertEquals( 0, $util->recoveryEnabledForUser() ); - + + $this->assertTrue($util->setRecoveryForUser(1)); + + $this->assertEquals(1, $util->recoveryEnabledForUser()); + + $this->assertTrue($util->setRecoveryForUser(0)); + + $this->assertEquals(0, $util->recoveryEnabledForUser()); + // Return the setting to it's previous state - $this->assertTrue( $util->setRecoveryForUser( $enabled ) ); - + $this->assertTrue($util->setRecoveryForUser($enabled)); + } - - function testGetUidAndFilename() { - - \OC_User::setUserId( 'admin' ); - $filename = 'tmp-'.time().'.test'; + function testGetUidAndFilename() + { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + \OC_User::setUserId('admin'); - $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); + $filename = 'tmp-' . time() . '.test'; - // Re-enable proxy - our work is done - \OC_FileProxy::$enabled = $proxyStatus; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $util = new Encryption\Util( $this->view, $this->userId ); + $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); - list($fileOwnerUid, $file) = $util->getUidAndFilename( $filename ); + // Re-enable proxy - our work is done + \OC_FileProxy::$enabled = $proxyStatus; - $this->assertEquals('admin', $fileOwnerUid); + $util = new Encryption\Util($this->view, $this->userId); - $this->assertEquals($file, $filename); + list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); + + $this->assertEquals('admin', $fileOwnerUid); + + $this->assertEquals($file, $filename); } } \ No newline at end of file From b3b6738d599480fc9bf40a53313598c4766571fb Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 01:47:35 +0200 Subject: [PATCH 269/575] Revert "fix for webdav and wrong reference for findByStorageId" This reverts commit 079f918d5ca0d242e77717aaeac82bcf011dc745. --- lib/files/cache/backgroundwatcher.php | 2 +- lib/files/filesystem.php | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/files/cache/backgroundwatcher.php b/lib/files/cache/backgroundwatcher.php index b5770d0582..7549745e7d 100644 --- a/lib/files/cache/backgroundwatcher.php +++ b/lib/files/cache/backgroundwatcher.php @@ -30,7 +30,7 @@ class BackgroundWatcher { return; } list($storageId, $internalPath) = $cacheItem; - $mounts = Mount\Manager::findByStorageId($storageId); + $mounts = Mount::findByStorageId($storageId); if (count($mounts) === 0) { //if the storage we need isn't mounted on default, try to find a user that has access to the storage diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d0cac9dc1d..d60d430d77 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -236,9 +236,7 @@ class Filesystem { } static public function initMounts(){ - if(!self::$mounts) { - self::$mounts = new Mount\Manager(); - } + self::$mounts = new Mount\Manager(); } /** From 58a8d67a9b3c48567bcc40cc02444311c6773275 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 01:57:16 +0200 Subject: [PATCH 270/575] fix for webdav because initMounts() is triggered twice so we lost the root path --- lib/files/filesystem.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d60d430d77..d0cac9dc1d 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -236,7 +236,9 @@ class Filesystem { } static public function initMounts(){ - self::$mounts = new Mount\Manager(); + if(!self::$mounts) { + self::$mounts = new Mount\Manager(); + } } /** From 27a5132b46df56dae81799e05bfeeaff27f2e4bb Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Mon, 20 May 2013 09:44:31 +0200 Subject: [PATCH 271/575] Don't set image path in template. --- core/js/oc-dialogs.js | 2 +- core/templates/filepicker.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index e05b3b0207..316a99592f 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -283,10 +283,10 @@ var OCdialogs = { $li = self.$listTmpl.octemplate({ type: entry.type, dir: dir, - imgsrc: entry.mimetype_icon, filename: entry.name, date: OC.mtime2date(entry.mtime) }); + $li.find('img').attr('src', entry.mimetype_icon); self.$filelist.append($li); }); diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html index 2b7942bd46..e761fbdb56 100644 --- a/core/templates/filepicker.html +++ b/core/templates/filepicker.html @@ -2,7 +2,7 @@
        • - + {filename} {date}
        • From 38b2d0a8229439ea4641e39fcd9275cbf82680ee Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Mon, 20 May 2013 09:54:43 +0200 Subject: [PATCH 272/575] Remove more obsolete code. --- core/js/oc-dialogs.js | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 316a99592f..e1d3657724 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -173,22 +173,10 @@ var OCdialogs = { }]; break; case OCdialogs.OK_BUTTON: - var functionToCall; - switch(dialog_type) { - case 'prompt': - buttonlist[1] = { - text: t('core', 'Cancel'), - click: function() { $(dialog_id).dialog('close'); } - }; - functionToCall = function() { OCdialogs._promptOkHandler(callback, dialog_id); }; - break; - default: - functionToCall = function() { - $(dialog_id).dialog('close'); - if(callback !== undefined) { callback() }; - }; - break; - } + var functionToCall = function() { + $(dialog_id).dialog('close'); + if(callback !== undefined) { callback() }; + }; buttonlist[0] = { text: t('core', 'Ok'), click: functionToCall @@ -254,10 +242,6 @@ var OCdialogs = { } }, - _promptOkHandler: function(callback, dialog_id) { - $(dialog_id).dialog('close'); - if (callback !== undefined) { callback($(dialog_id + ' input#oc-dialog-prompt-input').val()) }; - }, /** * fills the filepicker with files */ From ec475cbcfa04969a58dd3a17d380106074ddbc8b Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Mon, 20 May 2013 10:21:13 -0400 Subject: [PATCH 273/575] Add data-dir attribute to home breadcrumb --- apps/files/templates/part.breadcrumb.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files/templates/part.breadcrumb.php b/apps/files/templates/part.breadcrumb.php index 7ea1755d1d..9886b42e42 100644 --- a/apps/files/templates/part.breadcrumb.php +++ b/apps/files/templates/part.breadcrumb.php @@ -1,5 +1,5 @@ -
          +
          From 09ff46eda2a538d4f7a41b7f71ebf0e7df8944f2 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Mon, 20 May 2013 10:21:55 -0400 Subject: [PATCH 274/575] Remove user name addition to paths in deleteAll --- lib/files/storage/common.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php index e87fe3b523..3da13ac4df 100644 --- a/lib/files/storage/common.php +++ b/lib/files/storage/common.php @@ -138,27 +138,21 @@ abstract class Common implements \OC\Files\Storage\Storage { */ public function deleteAll($directory, $empty = false) { $directory = trim($directory, '/'); - - if (!$this->file_exists(\OCP\USER::getUser() . '/' . $directory) - || !$this->is_dir(\OCP\USER::getUser() . '/' . $directory) - ) { - return false; - } elseif (!$this->isReadable(\OCP\USER::getUser() . '/' . $directory)) { + if (!$this->is_dir($directory) || !$this->isReadable($directory)) { return false; } else { - $directoryHandle = $this->opendir(\OCP\USER::getUser() . '/' . $directory); + $directoryHandle = $this->opendir($directory); while ($contents = readdir($directoryHandle)) { - if ($contents != '.' && $contents != '..') { - $path = $directory . "/" . $contents; + if (!\OC\Files\Filesystem::isIgnoredDir($contents)) { + $path = $directory . '/' . $contents; if ($this->is_dir($path)) { $this->deleteAll($path); } else { - $this->unlink(\OCP\USER::getUser() . '/' . $path); // TODO: make unlink use same system path as is_dir + $this->unlink($path); } } } - //$this->closedir( $directoryHandle ); // TODO: implement closedir in OC_FSV - if ($empty == false) { + if ($empty === false) { if (!$this->rmdir($directory)) { return false; } From 171b9a4702efb6e413e13e705bb903772950c488 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 21:19:28 +0200 Subject: [PATCH 275/575] added legacy encryption test --- .../tests/legacy-encrypted-text.txt | Bin 3360 -> 24 bytes apps/files_encryption/tests/util.php | 49 ++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/tests/legacy-encrypted-text.txt b/apps/files_encryption/tests/legacy-encrypted-text.txt index cb5bf50550d91842c8a0bd214edf9569daeadc48..d38cb7d1b0dc6c45f755c81887f7e0887e436624 100644 GIT binary patch literal 24 gcmd;GeSfMvH|wO5t9o0POiu}RD6!<`_z~y@0DN`{p8x;= literal 3360 zcmXw*_dgVlAIF^#&dQ8V;*3s6r!zj3bymjNJ2E5d2pK2qV8@Fd8~lKcGMxckFp=W&Z&lG`Cl?qvq{7g*T22nF6ox6|SsasI8LEsos-DQ9aF#yai`s+bS3y; zP~n~gPaL~TTZh~^y~4|1$r7qeeU{_@!NsMTc~KRVr*kizynmnkV=~`Fo`k4$+15y&=!O1shrP6Slv8>km%C05-hdr*BoA8wIc~wZ>O;{-y-hbAP z=z_BE(nj#Y0y70RLPN|^y&9vU_m;-bsEWf$wn|+j22y@?@JsQO$GCTHY?s8oU75`c zg*Y$P$imS;qfirK@~t^_9HzgHabAaJO^PB96K9BFqyl*5CpH#KCy*t~R$qP1&^Yzq zk3kXBn;QATNd?CIEFb-T%&$++2@vql1B$+QG{L$YwK8X96viQZKm$^=eL&!3*u!(= zSpH!7d)q5M0mGO?{yxfQH)DhUP`K(cXD0ttu1#fnE$43Z8mQK`a9q~jU6T3v!J zTXF1R1|qdJ^9|f|)#TJcI0zKJ8xK8v=R_gbtjT>ENw*&rbulIRHt4()s?tXkpVevcL`m*8f?Kp17<$~W; z`y#&MLkL(UG};~QtNiVenZy09^$a&q=bhbBl6$lgqWI?EG>op-caN}{&1D~qOdrV# zkI=d+BJ;q!6=6rrdXhtbq=2JL;?3L#nv2ck4H_`E%L6>b3{|AveTJA>qoEKGMmVl z*c>Ez>rImsfclTOW6*Lp>EisY42PsSq^5^huHw@u85!~Vx>+-kClVBDh;IsZ zo^P=*h}ft;n~{EC>@#C2{$~}yA(88P1vLCO!Cwfq{4j&asg5p>FM3*Gw~^$Qjvab1 ztGH!hA1|sT)G;`@F(vcv0uOpKaNp5b-AM$~GO%2Z6aeP=h(tW`cin!fK3`FpcdD+5 zn@IIkbi@<=exISY?w!racU8NGo?AW|&5hEIh-nKEkmV;n>-X6$hoQKR=V}KcR!PNU ztW05aR*mv{NO{=Plcpj4f0N4vyG9t$z7DStx<92(y=aEpl_0?smB&j`##X^3lV_RD zWRBiiN%VGCkKyQBGI&x%C*ciKYSgi5x`;YsvWmYf)#u%xTnMQL8dlmHs-3#1ljGX3 zXJJ%upwIoM@sE1xHKDvO`^f9J&tvwLfHjh<_D->q=&7=slQ}Nr=)(Vdagwyk35-a1 zH0#ABVRy_vuqPfY{X1k^vt^yXER5^JcBLJNX2SODYdokf$=!sHI$7SEn*lzRa->FdOP>-2DrnC^5 zDk0OdTcMBmoQWfJ&8G^)f}<1pV>RB=Qc9#+_63Q{1|qj--iCH4FVoH3D7@ofs!tmT zMC`41I?=1Htn0LnKP(CSPD@Wb)z=^S`9@Fn{gc^$U8UXnsQRe~2H!Lj-r0`sHH5b= zm|?rbO)J!aSyX-ktX!#$kH;YkDSMgQ1OEEURah2CeE{-lmOlw5M7q>S=a4Qe7mmX&P1*WTz~I9JsC1 zeJyl#i9m>Hf=q30Bd}@06AqhuA;#BSgXn|@$lE;CX_P5lk+f=w`qU$@Am&PL*S!4c zRN22OW|_>C+6>3BR||3(Xhp8LH{hhanRC9!zeyie*rJ~pFSWk*c~61w8`rmL4bBNe z)pN2+z?LKc#n3Dtbu-_E9i7lHx%3FweIp3xJDtqaQ!&B8c&`P_P}W8p0-iM`*m^y` zR~nAO(0&Qd#F%hm6cH?FEm`sl?T$J|%lFO|n6t1&**a#DucE2!HLutGIac3V{vn?! z(&SbH#~gfZ=qw*lX7C9IExH{=uo22;$TdzAs9BW~AS)(niq!$R6MuDmf4PL5De5)_ z5zdpWK02EWi~q4XdcW?W2Yks0zoXgyiFTfy{bR-jyfQbldUaxctg|A3gOeridX2Y{w8(G(WAS=x8%{JyLovPe06_FrqH6856a!ez@Guv#_ftsb?dxtiKHN7nr-=M0^pU& zSI=;>Hliyt3F7v1sN(}F9@@P;0Uhs!Ay&bDd}tz+%hlItxwoT6_l5Fulw(ZQVZxy} zXJk2(s`GL8@}Mfuj)u11vRF8UR`2I31zQk=vsx|ri>uZ3J_<5lqLfZlTlu`afO0b7 zctIKRm#(5XzU%zU$bfd6Geoj$j*8?vIA7<)QfTP-7;LHUtet+GO2eJS-HkGhxuWD29(6TlL{qhT)T>lV zZ~kI< zCx*YfkY%u-s43Rym5J;$4H4z{clZ+VO&`CJW#7jP?AQ1wR^U+ TWaK9_8%OLm9CpY~&*%LQ#;b)= diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 57ec395342..667ee24f04 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -38,6 +38,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase */ public $util; public $dataShort; + public $legacyEncryptedData; + public $legacyEncryptedDataKey; + public $lagacyKey; function setUp() { @@ -54,6 +57,8 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->lagacyKey = '62829813025828180801'; $keypair = Encryption\Crypt::createKeypair(); @@ -100,7 +105,6 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase */ function testKeyPaths() { - $util = new Encryption\Util($this->view, $this->userId); $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); @@ -116,7 +120,6 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase */ function testSetupServerSide() { - $this->assertEquals(true, $this->util->setupServerSide($this->pass)); } @@ -125,10 +128,50 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase */ function testUserIsReady() { - $this->assertEquals(true, $this->util->ready()); } + /** + * @brief test checking whether account is not ready for encryption, + */ + function testUserIsNotReady() + { + $this->view->unlink($this->publicKeyDir); + + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + $this->assertFalse(OCA\Encryption\Hooks::login($params)); + + $this->view->unlink($this->privateKeyPath); + } + + /** + * @brief test checking whether account is not ready for encryption, + */ + function testIsLagacyUser() + { + $userView = new \OC_FilesystemView( '/' . $this->userId ); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + + \OC_FileProxy::$enabled = $proxyStatus; + + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + + $util = new Encryption\Util($this->view, $this->userId); + $util->setMigrationStatus(0); + + $this->assertTrue(OCA\Encryption\Hooks::login($params)); + + $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + } + function testRecoveryEnabledForUser() { From 8e0540d0e45db9470ff0d17869bab6df41bd389a Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 21:22:03 +0200 Subject: [PATCH 276/575] key creation should never override a private or public key --- apps/files_encryption/lib/util.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9ba7b3b3a3..8147982d48 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -212,9 +212,10 @@ class Util } // Create user keypair + // we should never override a keyfile if ( !$this->view->file_exists($this->publicKeyPath) - or !$this->view->file_exists($this->privateKeyPath) + && !$this->view->file_exists($this->privateKeyPath) ) { // Generate keypair @@ -233,6 +234,15 @@ class Util \OC_FileProxy::$enabled = true; + } else { + // check if public-key exists but private-key is missing + if($this->view->file_exists($this->publicKeyPath) && !$this->view->file_exists($this->privateKeyPath)) { + \OC_Log::write('Encryption library', 'public key exists but private key is missing for "' . $this->userId . '"', \OC_Log::FATAL); + return false; + } else if(!$this->view->file_exists($this->publicKeyPath) && $this->view->file_exists($this->privateKeyPath)) { + \OC_Log::write('Encryption library', 'private key exists but public key is missing for "' . $this->userId . '"', \OC_Log::FATAL); + return false; + } } // If there's no record for this user's encryption preferences From 1fa2f19ee44cc4a25bda784aee46ab2dac28e658 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 21:24:39 +0200 Subject: [PATCH 277/575] removed dead code for delShareKey --- apps/files_encryption/hooks/hooks.php | 26 +++++----------------- apps/files_encryption/lib/keymanager.php | 28 +++++++++--------------- 2 files changed, 16 insertions(+), 38 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 087ba3d893..90a93b4c52 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -67,13 +67,13 @@ class Hooks { // If migration not yet done if ( ! $migrationCompleted ) { - $view1 = new \OC_FilesystemView( '/' . $params['uid'] ); + $userView = new \OC_FilesystemView( '/' . $params['uid'] ); // Set legacy encryption key if it exists, to support // depreciated encryption system - if ( - $view1->file_exists( 'encryption.key' ) - && $encLegacyKey = $view1->file_get_contents( 'encryption.key' ) + if ( + $userView->file_exists( 'encryption.key' ) + && $encLegacyKey = $userView->file_get_contents( 'encryption.key' ) ) { $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); @@ -412,25 +412,11 @@ class Hooks { // Unshare every user who no longer has access to the file $delUsers = array_diff( $userIds, $sharingUsers); - - if ( !Keymanager::delShareKey( $view, $delUsers, $path ) ) { - - $failed[] = $path; - - } + // delete share key + Keymanager::delShareKey( $view, $delUsers, $path ); } - // If no attempts to set keyfiles failed - if ( empty( $failed ) ) { - - return true; - - } else { - - return false; - - } } } diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 1bc334e7a1..542b1cf287 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -540,32 +540,23 @@ class Keymanager $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename; - $result = false; - if ($view->is_dir($shareKeyPath)) { - $localPath = \OC_Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); - $result = self::recursiveDelShareKeys($localPath, $userIds); + $localPath = \OC\Files\Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); + self::recursiveDelShareKeys($localPath, $userIds); } else { foreach ($userIds as $userId) { - $view->unlink($shareKeyPath . '.' . $userId . '.shareKey'); + + if (!$view->unlink($shareKeyPath . '.' . $userId . '.shareKey')) { + \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId . '.shareKey"', \OC_Log::ERROR); + } + } - - $result = true; - } - - if (!$result) { - - \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath, \OC_Log::ERROR); - } \OC_FileProxy::$enabled = $proxyStatus; - - return $result; - } /** @@ -582,13 +573,14 @@ class Keymanager } /** @var $matches array */ foreach ($matches as $ma) { - unlink($ma); + if (!unlink($ma)) { + \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR); + } } $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR); foreach ($subdirs as $subdir) { self::recursiveDelShareKeys($subdir, $userIds); } - return true; } /** From 1c8e5d6873b1190d73b4139ca9fd7e710ae5d1a3 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 21:46:28 +0200 Subject: [PATCH 278/575] added test for failed sharing --- apps/files_encryption/hooks/hooks.php | 4 +- apps/files_encryption/tests/crypt.php | 2 + apps/files_encryption/tests/encryption.key | 1 + apps/files_encryption/tests/share.php | 64 ++++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 apps/files_encryption/tests/encryption.key diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 90a93b4c52..e319648045 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -208,6 +208,9 @@ class Hooks { /* * @brief check if files can be encrypted to every user. */ + /** + * @param $params + */ public static function preShared($params) { $users = array(); @@ -229,7 +232,6 @@ class Hooks { $params['run']->run = false; // TODO: Make sure files_sharing provides user // feedback on failed share - break; } } } diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 5b5a2189a4..6a1f1aef65 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -51,6 +51,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); @@ -884,6 +885,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase // tear down $view->unlink($filename); } + // function testEncryption(){ // // $key=uniqid(); diff --git a/apps/files_encryption/tests/encryption.key b/apps/files_encryption/tests/encryption.key new file mode 100644 index 0000000000..4495cee78e --- /dev/null +++ b/apps/files_encryption/tests/encryption.key @@ -0,0 +1 @@ +E_cP6HVs \ No newline at end of file diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index a9ee8d0023..f302aa0a3e 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -691,6 +691,70 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertTrue($util->setRecoveryForUser(0)); } + function testFailShareFile() + { + // login as admin + $this->loginHelper('admin'); + + // save file with content + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get the file info from previous created file + $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + + // check if we have a valid file info + $this->assertTrue(is_array($fileInfo)); + + // check if the unencrypted file size is stored + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + + // break users public key + $this->view->rename('/public-keys/user2.public.key', '/public-keys/user2.public.key_backup'); + + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; + + // share the file + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + + // login as admin + $this->loginHelper('admin'); + + // check if share key for user1 not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // break user1 public key + $this->view->rename('/public-keys/user2.public.key_backup', '/public-keys/user2.public.key'); + + // remove share file + $this->view->unlink('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey'); + + // re-enable the file proxy + \OC_FileProxy::$enabled = $proxyStatus; + + // unshare the file with user1 + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + + // cleanup + $this->view->unlink('/admin/files/' . $this->filename); + } + + + /** * @param $user * @param bool $create From f2b1158addeb53e2c1155228c4372209786a2133 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 20 May 2013 23:44:10 +0200 Subject: [PATCH 279/575] improved tests --- apps/files_encryption/hooks/hooks.php | 15 +++++++---- apps/files_encryption/tests/crypt.php | 39 +++------------------------ 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e319648045..53afefc721 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -225,15 +225,20 @@ class Hooks { break; } + $error = false; foreach ($users as $user) { if (!$view->file_exists($user . '.public.key')) { - // Set flag var 'run' to notify emitting - // script that hook execution failed - $params['run']->run = false; - // TODO: Make sure files_sharing provides user - // feedback on failed share + $error = true; + break; } } + + if($error) + // Set flag var 'run' to notify emitting + // script that hook execution failed + $params['run']->run = false; + // TODO: Make sure files_sharing provides user + // feedback on failed share } /** diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 6a1f1aef65..049f3fb5d9 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -706,7 +706,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $this->assertEquals($this->dataLong, $decrypt); - $newFolder = '/newfolder' . time(); + $newFolder = '/newfolder/subfolder' . time(); + $view->mkdir('/newfolder'); $view->rename($folder, $newFolder); @@ -719,43 +720,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $view->unlink($newFolder); } - function testRenameFolder() - { - - $filename = '/tmp-' . time(); - - $folder = '/folder'; - $newFolder = '/newfolder'; - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->mkdir($folder); - - // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); - - // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); - - // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $folder . $filename); - - $this->assertEquals($this->dataLong, $decrypt); - - // rename folder - $view->rename($folder, $newFolder); - - // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); - - $this->assertEquals($this->dataLong, $newDecrypt); - - // tear down - $view->unlink($newFolder); - } - function testChangePassphrase() { - - $filename = 'tmp-' . time(); + $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); From 4bf840e2cabd6402d2f8f3b67118d6661b0c5833 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 21 May 2013 00:00:55 +0200 Subject: [PATCH 280/575] cleanup unused code optimize tests --- apps/files_encryption/appinfo/app.php | 3 --- apps/files_encryption/lib/helper.php | 10 ---------- apps/files_encryption/tests/share.php | 19 +++++++++++++++++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index e56d012fee..7d01696e08 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -18,9 +18,6 @@ OCA\Encryption\Helper::registerUserHooks(); // Sharing related hooks OCA\Encryption\Helper::registerShareHooks(); -// Webdav related hooks -OCA\Encryption\Helper::registerWebdavHooks(); - // Filesystem related hooks OCA\Encryption\Helper::registerFilesystemHooks(); diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index c57f0bc009..e4bf2c1226 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -58,16 +58,6 @@ class Helper \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); } - /** - * @brief register webdav related hooks - * - */ - public static function registerWebdavHooks() - { - - - } - /** * @brief register filesystem related hooks * diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index f302aa0a3e..0b806394eb 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -557,8 +557,14 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase function testRecoveryFile() { - // login as admin - $this->loginHelper('admin'); + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $this->view->unlink('/owncloud_private_key'); + $this->view->unlink('/public-keys'); + + \OC_FileProxy::$enabled = $proxyStatus; \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); @@ -566,6 +572,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // check if control file created $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + // login as admin + $this->loginHelper('admin'); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'admin'); // check if recovery password match @@ -620,6 +629,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // check if share key for recovery not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + + \OCA\Encryption\Helper::adminDisableRecovery('test123'); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testRecoveryForUser() @@ -689,6 +701,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // enable recovery for admin $this->assertTrue($util->setRecoveryForUser(0)); + + \OCA\Encryption\Helper::adminDisableRecovery('test123'); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testFailShareFile() From c9e862ccbae4a659d8bb449ec63de1aa4756df28 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 21 May 2013 07:19:23 +0200 Subject: [PATCH 281/575] fix broken tests --- apps/files_encryption/tests/share.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 0b806394eb..849f16c696 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -557,15 +557,6 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase function testRecoveryFile() { - // disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - $this->view->unlink('/owncloud_private_key'); - $this->view->unlink('/public-keys'); - - \OC_FileProxy::$enabled = $proxyStatus; - \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); From 64591cf7547258aa15136329d8ed582701b4107a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 21 May 2013 10:30:24 +0200 Subject: [PATCH 282/575] move 3rdparty dependencies to app --- .../3rdparty/Crypt_Blowfish/Blowfish.php | 317 +++++++++++++++++ .../Crypt_Blowfish/Blowfish/DefaultKey.php | 327 ++++++++++++++++++ apps/files_encryption/lib/crypt.php | 2 +- apps/files_encryption/tests/crypt.php | 2 +- apps/files_encryption/tests/share.php | 2 +- 5 files changed, 647 insertions(+), 3 deletions(-) create mode 100644 apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php create mode 100644 apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php diff --git a/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php b/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php new file mode 100644 index 0000000000..4ccacb963e --- /dev/null +++ b/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php @@ -0,0 +1,317 @@ + + * @copyright 2005 Matthew Fonda + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version CVS: $Id: Blowfish.php,v 1.81 2005/05/30 18:40:36 mfonda Exp $ + * @link http://pear.php.net/package/Crypt_Blowfish + */ + + +require_once 'PEAR.php'; + + +/** + * + * Example usage: + * $bf = new Crypt_Blowfish('some secret key!'); + * $encrypted = $bf->encrypt('this is some example plain text'); + * $plaintext = $bf->decrypt($encrypted); + * echo "plain text: $plaintext"; + * + * + * @category Encryption + * @package Crypt_Blowfish + * @author Matthew Fonda + * @copyright 2005 Matthew Fonda + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @link http://pear.php.net/package/Crypt_Blowfish + * @version @package_version@ + * @access public + */ +class Crypt_Blowfish +{ + /** + * P-Array contains 18 32-bit subkeys + * + * @var array + * @access private + */ + var $_P = array(); + + + /** + * Array of four S-Blocks each containing 256 32-bit entries + * + * @var array + * @access private + */ + var $_S = array(); + + /** + * Mcrypt td resource + * + * @var resource + * @access private + */ + var $_td = null; + + /** + * Initialization vector + * + * @var string + * @access private + */ + var $_iv = null; + + + /** + * Crypt_Blowfish Constructor + * Initializes the Crypt_Blowfish object, and gives a sets + * the secret key + * + * @param string $key + * @access public + */ + function Crypt_Blowfish($key) + { + if (extension_loaded('mcrypt')) { + $this->_td = mcrypt_module_open(MCRYPT_BLOWFISH, '', 'ecb', ''); + $this->_iv = mcrypt_create_iv(8, MCRYPT_RAND); + } + $this->setKey($key); + } + + /** + * Deprecated isReady method + * + * @return bool + * @access public + * @deprecated + */ + function isReady() + { + return true; + } + + /** + * Deprecated init method - init is now a private + * method and has been replaced with _init + * + * @return bool + * @access public + * @deprecated + * @see Crypt_Blowfish::_init() + */ + function init() + { + $this->_init(); + } + + /** + * Initializes the Crypt_Blowfish object + * + * @access private + */ + function _init() + { + $defaults = new Crypt_Blowfish_DefaultKey(); + $this->_P = $defaults->P; + $this->_S = $defaults->S; + } + + /** + * Enciphers a single 64 bit block + * + * @param int &$Xl + * @param int &$Xr + * @access private + */ + function _encipher(&$Xl, &$Xr) + { + for ($i = 0; $i < 16; $i++) { + $temp = $Xl ^ $this->_P[$i]; + $Xl = ((($this->_S[0][($temp>>24) & 255] + + $this->_S[1][($temp>>16) & 255]) ^ + $this->_S[2][($temp>>8) & 255]) + + $this->_S[3][$temp & 255]) ^ $Xr; + $Xr = $temp; + } + $Xr = $Xl ^ $this->_P[16]; + $Xl = $temp ^ $this->_P[17]; + } + + + /** + * Deciphers a single 64 bit block + * + * @param int &$Xl + * @param int &$Xr + * @access private + */ + function _decipher(&$Xl, &$Xr) + { + for ($i = 17; $i > 1; $i--) { + $temp = $Xl ^ $this->_P[$i]; + $Xl = ((($this->_S[0][($temp>>24) & 255] + + $this->_S[1][($temp>>16) & 255]) ^ + $this->_S[2][($temp>>8) & 255]) + + $this->_S[3][$temp & 255]) ^ $Xr; + $Xr = $temp; + } + $Xr = $Xl ^ $this->_P[1]; + $Xl = $temp ^ $this->_P[0]; + } + + + /** + * Encrypts a string + * + * @param string $plainText + * @return string Returns cipher text on success, PEAR_Error on failure + * @access public + */ + function encrypt($plainText) + { + if (!is_string($plainText)) { + PEAR::raiseError('Plain text must be a string', 0, PEAR_ERROR_DIE); + } + + if (extension_loaded('mcrypt')) { + return mcrypt_generic($this->_td, $plainText); + } + + $cipherText = ''; + $len = strlen($plainText); + $plainText .= str_repeat(chr(0),(8 - ($len%8))%8); + for ($i = 0; $i < $len; $i += 8) { + list(,$Xl,$Xr) = unpack("N2",substr($plainText,$i,8)); + $this->_encipher($Xl, $Xr); + $cipherText .= pack("N2", $Xl, $Xr); + } + return $cipherText; + } + + + /** + * Decrypts an encrypted string + * + * @param string $cipherText + * @return string Returns plain text on success, PEAR_Error on failure + * @access public + */ + function decrypt($cipherText) + { + if (!is_string($cipherText)) { + PEAR::raiseError('Cipher text must be a string', 1, PEAR_ERROR_DIE); + } + + if (extension_loaded('mcrypt')) { + return mdecrypt_generic($this->_td, $cipherText); + } + + $plainText = ''; + $len = strlen($cipherText); + $cipherText .= str_repeat(chr(0),(8 - ($len%8))%8); + for ($i = 0; $i < $len; $i += 8) { + list(,$Xl,$Xr) = unpack("N2",substr($cipherText,$i,8)); + $this->_decipher($Xl, $Xr); + $plainText .= pack("N2", $Xl, $Xr); + } + return $plainText; + } + + + /** + * Sets the secret key + * The key must be non-zero, and less than or equal to + * 56 characters in length. + * + * @param string $key + * @return bool Returns true on success, PEAR_Error on failure + * @access public + */ + function setKey($key) + { + if (!is_string($key)) { + PEAR::raiseError('Key must be a string', 2, PEAR_ERROR_DIE); + } + + $len = strlen($key); + + if ($len > 56 || $len == 0) { + PEAR::raiseError('Key must be less than 56 characters and non-zero. Supplied key length: ' . $len, 3, PEAR_ERROR_DIE); + } + + if (extension_loaded('mcrypt')) { + mcrypt_generic_init($this->_td, $key, $this->_iv); + return true; + } + + require_once 'Blowfish/DefaultKey.php'; + $this->_init(); + + $k = 0; + $data = 0; + $datal = 0; + $datar = 0; + + for ($i = 0; $i < 18; $i++) { + $data = 0; + for ($j = 4; $j > 0; $j--) { + $data = $data << 8 | ord($key{$k}); + $k = ($k+1) % $len; + } + $this->_P[$i] ^= $data; + } + + for ($i = 0; $i <= 16; $i += 2) { + $this->_encipher($datal, $datar); + $this->_P[$i] = $datal; + $this->_P[$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[0][$i] = $datal; + $this->_S[0][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[1][$i] = $datal; + $this->_S[1][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[2][$i] = $datal; + $this->_S[2][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[3][$i] = $datal; + $this->_S[3][$i+1] = $datar; + } + + return true; + } + +} + +?> diff --git a/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php b/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php new file mode 100644 index 0000000000..2ff8ac788a --- /dev/null +++ b/apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php @@ -0,0 +1,327 @@ + + * @copyright 2005 Matthew Fonda + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version CVS: $Id: DefaultKey.php,v 1.81 2005/05/30 18:40:37 mfonda Exp $ + * @link http://pear.php.net/package/Crypt_Blowfish + */ + + +/** + * Class containing default key + * + * @category Encryption + * @package Crypt_Blowfish + * @author Matthew Fonda + * @copyright 2005 Matthew Fonda + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @link http://pear.php.net/package/Crypt_Blowfish + * @version @package_version@ + * @access public + */ +class Crypt_Blowfish_DefaultKey +{ + var $P = array(); + + var $S = array(); + + function Crypt_Blowfish_DefaultKey() + { + $this->P = array( + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, + 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, + 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, + 0x9216D5D9, 0x8979FB1B + ); + + $this->S = array( + array( + 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A + ), + array( + 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 + ), + array( + 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 + ), + array( + 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 + ) + ); + } + +} + +?> diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 783c19d254..8ff9fc5ff5 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -25,7 +25,7 @@ namespace OCA\Encryption; -require_once 'Crypt_Blowfish/Blowfish.php'; +require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; /** * Class for common cryptography functionality diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 049f3fb5d9..eaedc48541 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,7 +7,7 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../../../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 849f16c696..e205ff2b62 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,7 +20,7 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); From 4c27c7e1994e863926edaad6e682b3f889075e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 21 May 2013 12:22:03 +0200 Subject: [PATCH 283/575] fix path, needs to be relative to data/ --- apps/files_encryption/lib/proxy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 55ad882a8f..ea6b3bf345 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -484,7 +484,7 @@ class Proxy extends \OC_FileProxy $fileInfo['unencrypted_size'] = $size; // put file info - $view->putFileInfo($path_f, $fileInfo); + $view->putFileInfo($path, $fileInfo); } } } From 9d324db05481620fd9a6883c1315e0b31fc21c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Tue, 21 May 2013 12:33:32 +0200 Subject: [PATCH 284/575] fix path to 3rdparty apps --- apps/files_encryption/lib/crypt.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 8ff9fc5ff5..1a5c9300a2 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -25,7 +25,8 @@ namespace OCA\Encryption; -require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; +//require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); /** * Class for common cryptography functionality From 1deeec93b74c5adde44bcac30538caf75442a1da Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 21 May 2013 21:09:25 +0200 Subject: [PATCH 285/575] fixed postFileSize --- apps/files_encryption/lib/proxy.php | 30 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index ea6b3bf345..7419a85e9b 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -465,28 +465,36 @@ class Proxy extends \OC_FileProxy return $size; } - // get file info from database/cache - $fileInfo = \OC\Files\Filesystem::getFileInfo($path_f); + $fileInfo = false; + // get file info from database/cache if not .part file + if(!Keymanager::isPartialFilePath($path)) { + $fileInfo = $view->getFileInfo($path); + } // if file is encrypted return real file size if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { $size = $fileInfo['unencrypted_size']; } else { // self healing if file was removed from file cache - if (is_array($fileInfo)) { - $userId = \OCP\User::getUser(); - $util = new Util($view, $userId); - $fixSize = $util->getFileSize($path); - if ($fixSize > 0) { - $size = $fixSize; + if (!is_array($fileInfo)) { + $fileInfo = array(); + } - $fileInfo['encrypted'] = true; - $fileInfo['unencrypted_size'] = $size; + $userId = \OCP\User::getUser(); + $util = new Util($view, $userId); + $fixSize = $util->getFileSize($path); + if ($fixSize > 0) { + $size = $fixSize; - // put file info + $fileInfo['encrypted'] = true; + $fileInfo['unencrypted_size'] = $size; + + // put file info if not .part file + if(!Keymanager::isPartialFilePath($path_f)) { $view->putFileInfo($path, $fileInfo); } } + } return $size; } From 095fc790ac28f7fa3fb0e30808b81d270f7e13d6 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Tue, 21 May 2013 21:09:39 +0200 Subject: [PATCH 286/575] added webdav test --- apps/files_encryption/tests/webdav.php | 251 +++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100755 apps/files_encryption/tests/webdav.php diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php new file mode 100755 index 0000000000..4b453d0c9d --- /dev/null +++ b/apps/files_encryption/tests/webdav.php @@ -0,0 +1,251 @@ + + * + * 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 . + * + */ + +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); + +use OCA\Encryption; + +/** + * Class Test_Encryption_Webdav + * @brief this class provide basic webdav tests for PUT,GET and DELETE + */ +class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase +{ + + public $userId; + public $pass; + /** + * @var \OC_FilesystemView + */ + public $view; + public $dataShort; + public $stateFilesTrashbin; + + function setUp() + { + // reset backend + \OC_User::useBackend('database'); + + // set user id + \OC_User::setUserId('admin'); + $this->userId = 'admin'; + $this->pass = 'admin'; + + // init filesystem view + $this->view = new \OC_FilesystemView('/'); + + // init short data + $this->dataShort = 'hats'; + + // init filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // register encryption file proxy + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); + + // init filesystem for user + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); + + // login user + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); + } + + function tearDown() + { + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } + + // clear all proxies + \OC_FileProxy::clearProxies(); + } + + /** + * @brief test webdav put random file + */ + function testWebdavPUT() { + + // generate filename + $filename = '/tmp-' . time() . '.txt'; + + // set server vars + $_SERVER['REQUEST_METHOD'] = 'OPTIONS'; + + $_SERVER['REQUEST_METHOD'] = 'PUT'; + $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; + $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; + $_SERVER['CONTENT_TYPE'] = 'application/octet-stream'; + $_SERVER['PATH_INFO'] = '/webdav' . $filename; + $_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort); + + // handle webdav request + $this->handleWebdavRequest($this->dataShort); + + // check if file was created + $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + + // check if key-file was created + $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key')); + + // check if shareKey-file was created + $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey')); + + // disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // get encrypted file content + $encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename); + + // restore proxy state + \OC_FileProxy::$enabled = $proxyStatus; + + // check if encrypted content is valid + $this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); + + // get decrypted file contents + $decrypt = file_get_contents('crypt://' . $filename); + + // check if file content match with the written content + $this->assertEquals($this->dataShort, $decrypt); + + // return filename for next test + return $filename; + } + + /** + * @brief test webdav get random file + * + * @depends testWebdavPUT + */ + function testWebdavGET($filename) { + + // set server vars + $_SERVER['REQUEST_METHOD'] = 'GET'; + $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; + $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; + $_SERVER['PATH_INFO'] = '/webdav' . $filename; + + // handle webdav request + $content = $this->handleWebdavRequest(); + + // check if file content match with the written content + $this->assertEquals($this->dataShort, $content); + + // return filename for next test + return $filename; + } + + /** + * @brief test webdav delete random file + * @depends testWebdavGET + */ + function testWebdavDELETE($filename) { + // set server vars + $_SERVER['REQUEST_METHOD'] = 'DELETE'; + $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; + $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; + $_SERVER['PATH_INFO'] = '/webdav' . $filename; + + // handle webdav request + $content = $this->handleWebdavRequest(); + + // check if file was removed + $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + + // check if key-file was removed + $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key')); + + // check if shareKey-file was removed + $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey')); + } + + /** + * @brief handle webdav request + * + * @param bool $body + * + * @note this init procedure is copied from /apps/files/remote.php + */ + function handleWebdavRequest($body = false) { + // Backends + $authBackend = new OC_Connector_Sabre_Auth(); + $lockBackend = new OC_Connector_Sabre_Locks(); + $requestBackend = new OC_Connector_Sabre_Request(); + + // Create ownCloud Dir + $publicDir = new OC_Connector_Sabre_Directory(''); + + // Fire up server + $server = new Sabre_DAV_Server($publicDir); + $server->httpRequest = $requestBackend; + $server->setBaseUri('/remote.php/webdav/'); + + // Load plugins + $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); + $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); + $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload + $server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); + $server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); + + // And off we go! + if($body) { + $server->httpRequest->setBody($body); + } + + // turn on output buffering + ob_start(); + + // handle request + $server->exec(); + + // file content is written in the output buffer + $content = ob_get_contents(); + + // flush the output buffer and turn off output buffering + ob_end_clean(); + + // return captured content + return $content; + } +} \ No newline at end of file From 9ca9a22c6a6495e657290195c97282aee8976282 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 22 May 2013 00:53:07 +0200 Subject: [PATCH 287/575] fixed finding encrypted files in subfolders and removed unused code --- apps/files_encryption/lib/keymanager.php | 58 +----------- apps/files_encryption/lib/proxy.php | 50 +++++----- apps/files_encryption/lib/stream.php | 115 +++++++---------------- apps/files_encryption/lib/util.php | 40 +------- 4 files changed, 62 insertions(+), 201 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 542b1cf287..ddd8f0ad6e 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -326,44 +326,6 @@ class Keymanager } - /** - * @brief store private keys from the user - * - * @param string $privatekey - * @param string $publickey - * @return bool true/false - */ - public static function setUserKeys($privatekey, $publickey) - { - - return (self::setPrivateKey($privatekey) && self::setPublicKey($publickey)); - - } - - /** - * @brief store public key of the user - * - * @param string $key - * @return bool true/false - */ - public static function setPublicKey($key) - { - - $view = new \OC_FilesystemView('/public-keys'); - - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - if (!$view->file_exists('')) $view->mkdir(''); - - $result = $view->file_put_contents(\OCP\User::getUser() . '.public.key', $key); - - \OC_FileProxy::$enabled = $proxyStatus; - - return $result; - - } - /** * @brief store share key * @@ -538,7 +500,7 @@ class Keymanager list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = '/' . $owner . '/files_encryption/share-keys/' . $filename; + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename); if ($view->is_dir($shareKeyPath)) { @@ -611,22 +573,4 @@ class Keymanager return $targetPath; } - - /** - * @brief Fetch the legacy encryption key from user files - * @internal param string $login used to locate the legacy key - * @internal param string $passphrase used to decrypt the legacy key - * @return boolean - * - * if the key is left out, the default handeler will be used - */ - public function getLegacyKey() - { - - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/' . $user); - return $view->file_get_contents('encryption.key'); - - } - } \ No newline at end of file diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 7419a85e9b..f29e893f12 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -170,7 +170,7 @@ class Proxy extends \OC_FileProxy $data = $encData; // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo($filePath, array('encrypted' => true, 'size' => strlen($size), 'unencrypted_size' => $size), ''); + \OC\Files\Filesystem::putFileInfo($filePath, array('encrypted' => true, 'size' => strlen($data), 'unencrypted_size' => $size), ''); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; @@ -189,28 +189,25 @@ class Proxy extends \OC_FileProxy public function postFile_get_contents($path, $data) { - // FIXME: $path for shared files is just /uid/files/Shared/filepath - $userId = \OCP\USER::getUser(); $view = new \OC_FilesystemView('/'); $util = new Util($view, $userId); $relPath = $util->stripUserFilesPath($path); - - // TODO check for existing key file and reuse it if possible to avoid problems with versioning etc. // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; + // init session + $session = new Session($view); + // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfileContent($data) // TODO: Do we really need this check? Can't we assume it is properly encrypted? + && Crypt::isCatfileContent($data) ) { - // TODO: use get owner to find correct location of key files for shared files - $session = new Session($view); $privateKey = $session->getPrivateKey($userId); // Get the encrypted keyfile @@ -229,9 +226,7 @@ class Proxy extends \OC_FileProxy && isset($_SESSION['legacyenckey']) && Crypt::isEncryptedMeta($path) ) { - $plainData = Crypt::legacyDecrypt($data, $session->getLegacyKey()); - } \OC_FileProxy::$enabled = $proxyStatus; @@ -292,19 +287,6 @@ class Proxy extends \OC_FileProxy } - /** - * @brief When a file is renamed, rename its keyfile also - * @param $path - * @return bool Result of rename() - * @note This is pre rather than post because using post didn't work - */ - public function postWrite($path) - { - $this->handleFile($path); - - return true; - } - /** * @param $path * @return bool @@ -362,7 +344,6 @@ class Proxy extends \OC_FileProxy // protocol and let it do the decryption work instead $result = fopen('crypt://' . $path_f, $meta['mode']); - } elseif ( self::shouldEncrypt($path) and $meta ['mode'] != 'r' @@ -428,11 +409,28 @@ class Proxy extends \OC_FileProxy */ public function postStat($path, $data) { + $content = ''; + $view = new \OC_FilesystemView('/'); + if($view->file_exists($path)) { + // disable encryption proxy + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + // we only need 24 byte from the last chunk + $handle = $view->fopen($path, 'r'); + if (!fseek($handle, -24, SEEK_END)) { + $content = fgets($handle); + } + + // re-enable proxy + \OC_FileProxy::$enabled = $proxyStatus; + } + // check if file is encrypted - if (Crypt::isCatfileContent($path)) { + if (Crypt::isCatfileContent($content)) { // get file info from cache - $cached = \OC\Files\Filesystem::getFileInfo($path, ''); + $cached = $view->getFileInfo($path); // set the real file size $data['size'] = $cached['unencrypted_size']; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index 31546a2cc5..b143b62827 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -50,8 +50,6 @@ namespace OCA\Encryption; */ class Stream { - - public static $sourceStreams = array(); private $plainKey; private $encKeyfiles; @@ -96,58 +94,42 @@ class Stream // rawPath is relative to the data directory $this->rawPath = $util->getUserFilesDir() . $this->relPath; + // Disable fileproxies so we can get the file size and open the source file without recursive encryption + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + if ( - dirname($this->rawPath) == 'streams' - and isset(self::$sourceStreams[basename($this->rawPath)]) + $mode == 'w' + or $mode == 'w+' + or $mode == 'wb' + or $mode == 'wb+' ) { - // Is this just for unit testing purposes? - - $this->handle = self::$sourceStreams[basename($this->rawPath)]['stream']; - - $this->path = self::$sourceStreams[basename($this->rawPath)]['path']; - - $this->size = self::$sourceStreams[basename($this->rawPath)]['size']; + // We're writing a new file so start write counter with 0 bytes + $this->size = 0; + $this->unencryptedSize = 0; } else { - // Disable fileproxies so we can get the file size and open the source file without recursive encryption - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + $this->size = $this->rootView->filesize($this->rawPath, $mode); + } - if ( - $mode == 'w' - or $mode == 'w+' - or $mode == 'wb' - or $mode == 'wb+' - ) { + $this->handle = $this->rootView->fopen($this->rawPath, $mode); - // We're writing a new file so start write counter with 0 bytes - $this->size = 0; - $this->unencryptedSize = 0; + \OC_FileProxy::$enabled = $proxyStatus; - } else { + if (!is_resource($this->handle)) { - $this->size = $this->rootView->filesize($this->rawPath, $mode); + \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); - } + } else { - $this->handle = $this->rootView->fopen($this->rawPath, $mode); - - \OC_FileProxy::$enabled = $proxyStatus; - - if (!is_resource($this->handle)) { - - \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); - - } else { - - $this->meta = stream_get_meta_data($this->handle); - - } + $this->meta = stream_get_meta_data($this->handle); } + + return is_resource($this->handle); } @@ -165,14 +147,6 @@ class Stream } - /** - * @return int - */ - public function stream_tell() - { - return ftell($this->handle); - } - /** * @param $count * @return bool|string @@ -259,7 +233,6 @@ class Stream // If a keyfile already exists if ($this->encKeyfile) { - $this->setUserProperty(); $session = new Session($this->rootView); @@ -279,23 +252,6 @@ class Stream } - public function setUserProperty() - { - - // Only get the user again if it isn't already set - if (empty($this->userId)) { - - // TODO: Move this user call out of here - it belongs - // elsewhere - $this->userId = \OCP\User::getUser(); - - } - - // TODO: Add a method for getting the user in case OCP\User:: - // getUser() doesn't work (can that scenario ever occur?) - - } - /** * @brief Handle plain data from the stream, and write it in 8192 byte blocks * @param string $data data to be written to disk @@ -318,16 +274,10 @@ class Stream // Get the length of the unencrypted data that we are handling $length = strlen($data); - // So far this round, no data has been written - $written = 0; - - // Find out where we are up to in the writing of data to the + // Find out where we are up to in the writing of data to the // file $pointer = ftell($this->handle); - // Make sure the userId is set - $this->setUserProperty(); - // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile @@ -337,7 +287,6 @@ class Stream } - // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block if ($this->writeCache) { @@ -351,17 +300,16 @@ class Stream } - // While there still remains somed data to be processed & written while (strlen($data) > 0) { // Remaining length for this iteration, not of the // entire file (may be greater than 8192 bytes) - $remainingLength = strlen( $data ); + $remainingLength = strlen($data); // If data remaining to be written is less than the // size of 1 6126 byte block - if (strlen($data) < 6126) { + if ($remainingLength < 6126) { // Set writeCache to contents of $data // The writeCache will be carried over to the @@ -388,9 +336,7 @@ class Stream // being handled totals more than 6126 bytes fwrite($this->handle, $encrypted); - $writtenLen = strlen($encrypted); - - // Remove the chunk we just processed from + // Remove the chunk we just processed from // $data, leaving only unprocessed data in $data // var, for handling on the next round $data = substr($data, 6126); @@ -416,16 +362,19 @@ class Stream */ public function stream_set_option($option, $arg1, $arg2) { + $return = false; switch ($option) { case STREAM_OPTION_BLOCKING: - stream_set_blocking($this->handle, $arg1); + $return = stream_set_blocking($this->handle, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - stream_set_timeout($this->handle, $arg1, $arg2); + $return = stream_set_timeout($this->handle, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - stream_set_write_buffer($this->handle, $arg1, $arg2); + $return = stream_set_write_buffer($this->handle, $arg1); } + + return $return; } /** @@ -441,7 +390,7 @@ class Stream */ public function stream_lock($mode) { - flock($this->handle, $mode); + return flock($this->handle, $mode); } /** diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 8147982d48..1f4609ae2f 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -367,14 +367,16 @@ class Util * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findEncFiles($directory) + public function findEncFiles($directory, &$found = false) { // Disable proxy - we don't want files to be decrypted before // we handle them \OC_FileProxy::$enabled = false; - $found = array('plain' => array(), 'encrypted' => array(), 'legacy' => array()); + if($found == false) { + $found = array('plain' => array(), 'encrypted' => array(), 'legacy' => array()); + } if ( $this->view->is_dir($directory) @@ -395,7 +397,7 @@ class Util // its contents if ($this->view->is_dir($filePath)) { - $this->findEncFiles($filePath); + $this->findEncFiles($filePath, $found); // If the path is a file, determine // its encryption status @@ -636,38 +638,6 @@ class Util } - /** - * @brief Format a path to be relative to the /user directory - * @note e.g. turns '/admin/files/test.txt' into 'files/test.txt' - */ - public function stripFilesPath($path) - { - - $trimmed = ltrim($path, '/'); - $split = explode('/', $trimmed); - $sliced = array_slice($split, 1); - $relPath = implode('/', $sliced); - - return $relPath; - - } - - /** - * @brief Format a shared path to be relative to the /user/files/ directory - * @note Expects a path like /uid/files/Shared/filepath - */ - public function stripSharedFilePath($path) - { - - $trimmed = ltrim($path, '/'); - $split = explode('/', $trimmed); - $sliced = array_slice($split, 3); - $relPath = implode('/', $sliced); - - return $relPath; - - } - /** * @param $path * @return bool From afbfa742d7848089523262f5c234035db1b20d3b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 22 May 2013 00:55:16 +0200 Subject: [PATCH 288/575] improved tests --- apps/files_encryption/lib/proxy.php | 55 --- apps/files_encryption/tests/crypt.php | 89 +---- apps/files_encryption/tests/keymanager.php | 77 +++- apps/files_encryption/tests/share.php | 5 +- apps/files_encryption/tests/stream.php | 406 +++++++++------------ apps/files_encryption/tests/util.php | 57 +++ 6 files changed, 301 insertions(+), 388 deletions(-) diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index f29e893f12..cc9d239b25 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -359,24 +359,6 @@ class Proxy extends \OC_FileProxy } - /** - * @param $path - * @param $mime - * @return string - */ - public function postGetMimeType($path, $mime) - { - - if (Crypt::isCatfileContent($path)) { - - $mime = \OCP\Files::getMimeType('crypt://' . $path, 'w'); - - } - - return $mime; - - } - /** * @param $path * @param $data @@ -402,43 +384,6 @@ class Proxy extends \OC_FileProxy return $data; } - /** - * @param $path - * @param $data - * @return mixed - */ - public function postStat($path, $data) - { - $content = ''; - $view = new \OC_FilesystemView('/'); - if($view->file_exists($path)) { - // disable encryption proxy - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; - - // we only need 24 byte from the last chunk - $handle = $view->fopen($path, 'r'); - if (!fseek($handle, -24, SEEK_END)) { - $content = fgets($handle); - } - - // re-enable proxy - \OC_FileProxy::$enabled = $proxyStatus; - } - - // check if file is encrypted - if (Crypt::isCatfileContent($content)) { - - // get file info from cache - $cached = $view->getFileInfo($path); - - // set the real file size - $data['size'] = $cached['unencrypted_size']; - } - - return $data; - } - /** * @param $path * @param $size diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index eaedc48541..621941c52a 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -432,29 +432,6 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $this->view->unlink($this->userId . '/files/' . $filename); } - // Is this test still necessary? -// function testSymmetricBlockStreamDecryptFileContent() { -// -// \OC_User::setUserId( 'admin' ); -// -// // Disable encryption proxy to prevent unwanted en/decryption -// \OC_FileProxy::$enabled = false; -// -// $cryptedFile = file_put_contents( 'crypt://' . '/blockEncrypt', $this->dataUrl ); -// -// // Disable encryption proxy to prevent unwanted en/decryption -// \OC_FileProxy::$enabled = false; -// -// echo "\n\n\$cryptedFile = " . $this->view->file_get_contents( '/blockEncrypt' ); -// -// $retreivedCryptedFile = file_get_contents( 'crypt://' . '/blockEncrypt' ); -// -// $this->assertEquals( $this->dataUrl, $retreivedCryptedFile ); -// -// \OC_FileProxy::$enabled = false; -// -// } - function testSymmetricEncryptFileContentKeyfile() { @@ -585,6 +562,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $this->assertEquals($this->dataLong, $decrypted); + $this->assertFalse(Encryption\Crypt::getBlowfish('')); } /** @@ -852,69 +830,4 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase // tear down $view->unlink($filename); } - -// function testEncryption(){ -// -// $key=uniqid(); -// $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; -// $source=file_get_contents($file); //nice large text file -// $encrypted=OC_Encryption\Crypt::encrypt($source,$key); -// $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); -// $decrypted=rtrim($decrypted, "\0"); -// $this->assertNotEquals($encrypted,$source); -// $this->assertEquals($decrypted,$source); -// -// $chunk=substr($source,0,8192); -// $encrypted=OC_Encryption\Crypt::encrypt($chunk,$key); -// $this->assertEquals(strlen($chunk),strlen($encrypted)); -// $decrypted=OC_Encryption\Crypt::decrypt($encrypted,$key); -// $decrypted=rtrim($decrypted, "\0"); -// $this->assertEquals($decrypted,$chunk); -// -// $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); -// $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key); -// $this->assertNotEquals($encrypted,$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->assertEquals($decrypted,$source); -// -// $tmpFileDecrypted=OCP\Files::tmpFile(); -// OC_Encryption\Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted,$key); -// $decrypted=file_get_contents($tmpFileDecrypted); -// $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->assertEquals($decrypted,$source); -// -// $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); -// $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key); -// $this->assertEquals($decrypted,$source); -// -// } -// -// function testBinary(){ -// $key=uniqid(); -// -// $file=__DIR__.'/binary'; -// $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->assertEquals($decrypted,$source); -// -// $encrypted=OC_Encryption\Crypt::blockEncrypt($source,$key); -// $decrypted=OC_Encryption\Crypt::blockDecrypt($encrypted,$key,strlen($source)); -// $this->assertEquals($decrypted,$source); -// } - } diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 334cc743f2..b1bae673e8 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -31,6 +31,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase */ public $view; public $randomKey; + public $dataShort; function setUp() { @@ -150,34 +151,18 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); - // Disable encryption proxy to prevent recursive calls + // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup $this->view->unlink('/' . $this->userId . '/files/' . $file); - // Re-enable proxy - our work is done + // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; } -// /** -// * @depends testGetPrivateKey -// */ -// function testGetPrivateKey_decrypt() { -// -// $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); -// -// # TODO: replace call to Crypt with a mock object? -// $decrypted = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->passphrase ); -// -// $this->assertEquals( 1704, strlen( $decrypted ) ); -// -// $this->assertEquals( '-----BEGIN PRIVATE KEY-----', substr( $decrypted, 0, 27 ) ); -// -// } - function testGetUserKeys() { @@ -201,4 +186,60 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $this->assertArrayHasKey('key', $sslInfoPrivate); } + + function testFixPartialFilePath() + { + + $partFilename = 'testfile.txt.part'; + $filename = 'testfile.txt'; + + $this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename)); + + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename)); + + $this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename)); + + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); + } + + function testRecursiveDelShareKeys() + { + + // generate filename + $filename = '/tmp-' . time() . '.txt'; + + // create folder structure + $this->view->mkdir('/admin/files/folder1'); + $this->view->mkdir('/admin/files/folder1/subfolder'); + $this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder'); + + // enable encryption proxy + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = true; + + // save file with content + $cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // change encryption proxy to previous state + \OC_FileProxy::$enabled = $proxyStatus; + + // recursive delete keys + Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/'); + + // check if share key not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey')); + + // enable encryption proxy + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = true; + + // cleanup + $this->view->unlink('/admin/files/folder1'); + + // change encryption proxy to previous state + \OC_FileProxy::$enabled = $proxyStatus; + } } diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index e205ff2b62..1d0cbfbc1d 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -312,7 +312,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); // cleanup - $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $this->view->unlink('/admin/files' . $this->folder1); // check if share key not exists $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); @@ -621,7 +621,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - \OCA\Encryption\Helper::adminDisableRecovery('test123'); + $this->assertTrue(\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123')); + $this->assertTrue(\OCA\Encryption\Helper::adminDisableRecovery('test123')); $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 633cc9e4fc..3765d986e1 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -1,226 +1,182 @@ -// * This file is licensed under the Affero General Public License version 3 or -// * later. -// * See the COPYING-README file. -// */ -// -// namespace OCA\Encryption; -// -// class Test_Stream extends \PHPUnit_Framework_TestCase { -// -// function setUp() { -// -// \OC_Filesystem::mount( 'OC_Filestorage_Local', array(), '/' ); -// -// $this->empty = ''; -// -// $this->stream = new Stream(); -// -// $this->dataLong = file_get_contents( realpath( dirname(__FILE__).'/../lib/crypt.php' ) ); -// $this->dataShort = 'hats'; -// -// $this->emptyTmpFilePath = \OCP\Files::tmpFile(); -// -// $this->dataTmpFilePath = \OCP\Files::tmpFile(); -// -// file_put_contents( $this->dataTmpFilePath, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est." ); -// -// } -// -// function testStreamOpen() { -// -// $stream1 = new Stream(); -// -// $handle1 = $stream1->stream_open( $this->emptyTmpFilePath, 'wb', array(), $this->empty ); -// -// // Test that resource was returned successfully -// $this->assertTrue( $handle1 ); -// -// // Test that file has correct size -// $this->assertEquals( 0, $stream1->size ); -// -// // Test that path is correct -// $this->assertEquals( $this->emptyTmpFilePath, $stream1->rawPath ); -// -// $stream2 = new Stream(); -// -// $handle2 = $stream2->stream_open( 'crypt://' . $this->emptyTmpFilePath, 'wb', array(), $this->empty ); -// -// // Test that protocol identifier is removed from path -// $this->assertEquals( $this->emptyTmpFilePath, $stream2->rawPath ); -// -// // "Stat failed error" prevents this test from executing -// // $stream3 = new Stream(); -// // -// // $handle3 = $stream3->stream_open( $this->dataTmpFilePath, 'r', array(), $this->empty ); -// // -// // $this->assertEquals( 0, $stream3->size ); -// -// } -// -// function testStreamWrite() { -// -// $stream1 = new Stream(); -// -// $handle1 = $stream1->stream_open( $this->emptyTmpFilePath, 'r+b', array(), $this->empty ); -// -// # what about the keymanager? there is no key for the newly created temporary file! -// -// $stream1->stream_write( $this->dataShort ); -// -// } -// -// // function getStream( $id, $mode, $size ) { -// // -// // if ( $id === '' ) { -// // -// // $id = uniqid(); -// // } -// // -// // -// // if ( !isset( $this->tmpFiles[$id] ) ) { -// // -// // // If tempfile with given name does not already exist, create it -// // -// // $file = OCP\Files::tmpFile(); -// // -// // $this->tmpFiles[$id] = $file; -// // -// // } else { -// // -// // $file = $this->tmpFiles[$id]; -// // -// // } -// // -// // $stream = fopen( $file, $mode ); -// // -// // Stream::$sourceStreams[$id] = array( 'path' => 'dummy' . $id, 'stream' => $stream, 'size' => $size ); -// // -// // return fopen( 'crypt://streams/'.$id, $mode ); -// // -// // } -// // -// // function testStream( ){ -// // -// // $stream = $this->getStream( 'test1', 'w', strlen( 'foobar' ) ); -// // -// // fwrite( $stream, 'foobar' ); -// // -// // fclose( $stream ); -// // -// // -// // $stream = $this->getStream( 'test1', 'r', strlen( 'foobar' ) ); -// // -// // $data = fread( $stream, 6 ); -// // -// // fclose( $stream ); -// // -// // $this->assertEquals( 'foobar', $data ); -// // -// // -// // $file = OC::$SERVERROOT.'/3rdparty/MDB2.php'; -// // -// // $source = fopen( $file, 'r' ); -// // -// // $target = $this->getStream( 'test2', 'w', 0 ); -// // -// // OCP\Files::streamCopy( $source, $target ); -// // -// // fclose( $target ); -// // -// // fclose( $source ); -// // -// // -// // $stream = $this->getStream( 'test2', 'r', filesize( $file ) ); -// // -// // $data = stream_get_contents( $stream ); -// // -// // $original = file_get_contents( $file ); -// // -// // $this->assertEquals( strlen( $original ), strlen( $data ) ); -// // -// // $this->assertEquals( $original, $data ); -// // -// // } -// -// } -// -// // class Test_CryptStream extends PHPUnit_Framework_TestCase { -// // private $tmpFiles=array(); -// // -// // function testStream(){ -// // $stream=$this->getStream('test1','w',strlen('foobar')); -// // fwrite($stream,'foobar'); -// // fclose($stream); -// // -// // $stream=$this->getStream('test1','r',strlen('foobar')); -// // $data=fread($stream,6); -// // fclose($stream); -// // $this->assertEquals('foobar',$data); -// // -// // $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; -// // $source=fopen($file,'r'); -// // $target=$this->getStream('test2','w',0); -// // OCP\Files::streamCopy($source,$target); -// // fclose($target); -// // fclose($source); -// // -// // $stream=$this->getStream('test2','r',filesize($file)); -// // $data=stream_get_contents($stream); -// // $original=file_get_contents($file); -// // $this->assertEquals(strlen($original),strlen($data)); -// // $this->assertEquals($original,$data); -// // } -// // -// // /** -// // * get a cryptstream to a temporary file -// // * @param string $id -// // * @param string $mode -// // * @param int size -// // * @return resource -// // */ -// // function getStream($id,$mode,$size){ -// // if($id===''){ -// // $id=uniqid(); -// // } -// // if(!isset($this->tmpFiles[$id])){ -// // $file=OCP\Files::tmpFile(); -// // $this->tmpFiles[$id]=$file; -// // }else{ -// // $file=$this->tmpFiles[$id]; -// // } -// // $stream=fopen($file,$mode); -// // OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id,'stream'=>$stream,'size'=>$size); -// // return fopen('crypt://streams/'.$id,$mode); -// // } -// // -// // function testBinary(){ -// // $file=__DIR__.'/binary'; -// // $source=file_get_contents($file); -// // -// // $stream=$this->getStream('test','w',strlen($source)); -// // fwrite($stream,$source); -// // fclose($stream); -// // -// // $stream=$this->getStream('test','r',strlen($source)); -// // $data=stream_get_contents($stream); -// // fclose($stream); -// // $this->assertEquals(strlen($data),strlen($source)); -// // $this->assertEquals($source,$data); -// // -// // $file=__DIR__.'/zeros'; -// // $source=file_get_contents($file); -// // -// // $stream=$this->getStream('test2','w',strlen($source)); -// // fwrite($stream,$source); -// // fclose($stream); -// // -// // $stream=$this->getStream('test2','r',strlen($source)); -// // $data=stream_get_contents($stream); -// // fclose($stream); -// // $this->assertEquals(strlen($data),strlen($source)); -// // $this->assertEquals($source,$data); -// // } -// // } +/** + * ownCloud + * + * @author Florin Peter + * @copyright 2013 Florin Peter + * + * 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 . + * + */ + +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); + +use OCA\Encryption; + +/** + * Class Test_Encryption_Stream + * @brief this class provide basic stream tests + */ +class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase +{ + + public $userId; + public $pass; + /** + * @var \OC_FilesystemView + */ + public $view; + public $dataShort; + public $stateFilesTrashbin; + + function setUp() + { + // reset backend + \OC_User::useBackend('database'); + + // set user id + \OC_User::setUserId('admin'); + $this->userId = 'admin'; + $this->pass = 'admin'; + + // init filesystem view + $this->view = new \OC_FilesystemView('/'); + + // init short data + $this->dataShort = 'hats'; + + // init filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // register encryption file proxy + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); + + // init filesystem for user + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); + + // login user + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); + } + + function tearDown() + { + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } + + // clear all proxies + \OC_FileProxy::clearProxies(); + } + + function testStreamOptions() { + $filename = '/tmp-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + $handle = $view->fopen($filename, 'r'); + + // check if stream is at position zero + $this->assertEquals(0,ftell($handle)); + + // set stream options + $this->assertTrue(flock($handle, LOCK_SH)); + $this->assertTrue(flock($handle, LOCK_UN)); + + // tear down + $view->unlink($filename); + } + + function testStreamSetBlocking() { + $filename = '/tmp-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + $handle = $view->fopen($filename, 'r'); + + // set stream options + $this->assertTrue(stream_set_blocking($handle,1)); + + // tear down + $view->unlink($filename); + } + + function testStreamSetTimeout() { + $filename = '/tmp-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + $handle = $view->fopen($filename, 'r'); + + // set stream options + $this->assertFalse(stream_set_timeout($handle,1)); + + // tear down + $view->unlink($filename); + } + + function testStreamSetWriteBuffer() { + $filename = '/tmp-' . time(); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + + // Save short data as encrypted file using stream wrapper + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + + // Test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + $handle = $view->fopen($filename, 'r'); + + // set stream options + $this->assertEquals(0, stream_set_write_buffer($handle,1024)); + + // tear down + $view->unlink($filename); + } +} \ No newline at end of file diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 667ee24f04..a2be8a4041 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -217,4 +217,61 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->assertEquals($file, $filename); } + + function testIsSharedPath() { + $sharedPath = '/user1/files/Shared/test'; + $path = '/user1/files/test'; + + $this->assertTrue($this->util->isSharedPath($sharedPath)); + + $this->assertFalse($this->util->isSharedPath($path)); + } + + function testEncryptLagacyFiles() + { + $userView = new \OC_FilesystemView( '/' . $this->userId); + $view = new \OC_FilesystemView( '/' . $this->userId . '/files' ); + + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; + + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + + $legacyEncryptedData = file_get_contents($this->legacyEncryptedData); + $view->mkdir('/test/'); + $view->mkdir('/test/subtest/'); + $view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData); + + $fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt'); + $fileInfo['encrypted'] = true; + $view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo); + + \OC_FileProxy::$enabled = $proxyStatus; + + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + + $util = new Encryption\Util($this->view, $this->userId); + $util->setMigrationStatus(0); + + $this->assertTrue(OCA\Encryption\Hooks::login($params)); + + $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + + $files = $util->findEncFiles('/' . $this->userId . '/files/'); + + $this->assertTrue(is_array($files)); + + $found = false; + foreach($files['encrypted'] as $encryptedFile) { + if($encryptedFile['name'] === 'legacy-encrypted-text.txt') { + $found = true; + break; + } + } + + $this->assertTrue($found); + } } \ No newline at end of file From c6722581f982d05909664171bd66cc7ec2a2a67b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 22 May 2013 02:02:42 +0200 Subject: [PATCH 289/575] fix pgsql error --- apps/files_encryption/lib/util.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 1f4609ae2f..784d74bd75 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -706,13 +706,16 @@ class Util // NOTE: Stream{} will be invoked for handling // the encryption, and should handle all keys // and their generation etc. automatically - $size = stream_copy_to_stream($plainHandle2, $encHandle); + stream_copy_to_stream($plainHandle2, $encHandle); + + // get file size + $size = $this->view->filesize($rawPath . '.plaintmp'); // Delete temporary plain copy of file $this->view->unlink($rawPath . '.plaintmp'); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo($plainFile['path'], array('encrypted' => true, 'size' => $size), ''); + \OC\Files\Filesystem::putFileInfo($plainFile['path'], array('encrypted' => true, 'size' => $size, 'unencrypted_size' => $size)); } // Encrypt legacy encrypted files From d590064fdfb8f46c64ebd0b54cd3b7acd8c9fc78 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Wed, 22 May 2013 02:19:52 +0200 Subject: [PATCH 290/575] [tx-robot] updated from transifex --- apps/files_external/l10n/pl.php | 1 + core/l10n/pl.php | 1 + l10n/pl/core.po | 9 +++++---- l10n/pl/files_external.po | 9 +++++---- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- 15 files changed, 23 insertions(+), 19 deletions(-) diff --git a/apps/files_external/l10n/pl.php b/apps/files_external/l10n/pl.php index cd1b1fe84a..e03ded1e70 100644 --- a/apps/files_external/l10n/pl.php +++ b/apps/files_external/l10n/pl.php @@ -6,6 +6,7 @@ "Error configuring Google Drive storage" => "Wystąpił błąd podczas konfigurowania zasobu Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Ostrzeżenie: \"smbclient\" nie jest zainstalowany. Zamontowanie katalogów CIFS/SMB nie jest możliwe. Skontaktuj sie z administratorem w celu zainstalowania.", "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Ostrzeżenie: Wsparcie dla FTP w PHP nie jest zainstalowane lub włączone. Skontaktuj sie z administratorem w celu zainstalowania lub włączenia go.", +"Warning: The Curl support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask your system administrator to install it." => "Ostrzeżenie: Wsparcie dla Curl w PHP nie jest zainstalowane lub włączone. Montowanie WebDAV lub GoogleDrive nie będzie możliwe. Skontaktuj się z administratorem w celu zainstalowania lub włączenia tej opcji.", "External Storage" => "Zewnętrzna zasoby dyskowe", "Folder name" => "Nazwa folderu", "External storage" => "Zewnętrzne zasoby dyskowe", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 5c8434984c..37d01abf84 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -88,6 +88,7 @@ "The update was successful. Redirecting you to ownCloud now." => "Aktualizacji zakończyła się powodzeniem. Przekierowuję do ownCloud.", "ownCloud password reset" => "restart hasła ownCloud", "Use the following link to reset your password: {link}" => "Użyj tego odnośnika by zresetować hasło: {link}", +"The link to reset your password has been sent to your email.
          If you do not receive it within a reasonable amount of time, check your spam/junk folders.
          If it is not there ask your local administrator ." => "Link do zresetowania hasła została wysłana na adres email.
          Jeśli nie otrzymasz go w najbliższym czasie, sprawdź folder ze spamem.
          Jeśli go tam nie ma zwrócić się do administratora tego ownCloud-a.", "Request failed!
          Did you make sure your email/username was right?" => "Żądanie niepowiodło się!
          Czy Twój email/nazwa użytkownika są poprawne?", "You will receive a link to reset your password via Email." => "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", "Username" => "Nazwa użytkownika", diff --git a/l10n/pl/core.po b/l10n/pl/core.po index e023ed3428..8317035b93 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 # adbrand , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" -"Last-Translator: adbrand \n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"PO-Revision-Date: 2013-05-21 07:00+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -402,7 +403,7 @@ msgid "" "The link to reset your password has been sent to your email.
          If you do " "not receive it within a reasonable amount of time, check your spam/junk " "folders.
          If it is not there ask your local administrator ." -msgstr "" +msgstr "Link do zresetowania hasła została wysłana na adres email.
          Jeśli nie otrzymasz go w najbliższym czasie, sprawdź folder ze spamem.
          Jeśli go tam nie ma zwrócić się do administratora tego ownCloud-a." #: lostpassword/templates/lostpassword.php:12 msgid "Request failed!
          Did you make sure your email/username was right?" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index d363de4780..a130c038c3 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"PO-Revision-Date: 2013-05-21 07:20+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -55,7 +56,7 @@ msgid "" "Warning: The Curl support in PHP is not enabled or installed. " "Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask " "your system administrator to install it." -msgstr "" +msgstr "Ostrzeżenie: Wsparcie dla Curl w PHP nie jest zainstalowane lub włączone. Montowanie WebDAV lub GoogleDrive nie będzie możliwe. Skontaktuj się z administratorem w celu zainstalowania lub włączenia tej opcji." #: templates/settings.php:3 msgid "External Storage" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 78d60372e1..a9d3136889 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 0ab57eb950..c294df5ef0 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 76b4b7293a..4997ad02d2 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 7bfc3647dd..af78203998 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 48923f8af3..91ce57c6d3 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 3e9ecd756f..23de9ceb55 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 91f8d60881..6c897bae2e 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index 55b22c52c6..ef7c6f4003 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:01+0200\n" +"POT-Creation-Date: 2013-05-22 02:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index fe59c434e9..a7651f9f1e 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:01+0200\n" +"POT-Creation-Date: 2013-05-22 02:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index e14b4cb292..f18624f277 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 018936d3d9..c6985473c6 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" +"POT-Creation-Date: 2013-05-22 02:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From 7a0c592f935268b515e6b16b4119a5088ebfd064 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Tue, 21 May 2013 20:21:19 -0400 Subject: [PATCH 291/575] Fix undefined index for share mount point retrieval --- lib/public/share.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/public/share.php b/lib/public/share.php index a561319e9b..f9d3d81020 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -877,7 +877,7 @@ class Share { if (!isset($mounts[$row['storage']])) { $mountPoints = \OC\Files\Filesystem::getMountByNumericId($row['storage']); if (is_array($mountPoints)) { - $mounts[$row['storage']] = $mountPoints[key($mountPoints)]; + $mounts[$row['storage']] = current($mountPoints); } } if ($mounts[$row['storage']]) { From 2ea2abf11e31904db187dfe9975cc34247fde1d7 Mon Sep 17 00:00:00 2001 From: Roland Hager Date: Thu, 16 May 2013 17:18:07 +0200 Subject: [PATCH 292/575] Fixing UPDATE error in filecache table when renaming files by calling move(). Add storage id to the where clause to avoid updating entries of other users. --- lib/files/cache/cache.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 0617471079..0e7a96aaca 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -335,8 +335,8 @@ class Cache { if ($sourceData['mimetype'] === 'httpd/unix-directory') { //find all child entries - $query = \OC_DB::prepare('SELECT `path`, `fileid` FROM `*PREFIX*filecache` WHERE `path` LIKE ?'); - $result = $query->execute(array($source . '/%')); + $query = \OC_DB::prepare('SELECT `path`, `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path` LIKE ?'); + $result = $query->execute(array($this->getNumericStorageId(), $source . '/%')); $childEntries = $result->fetchAll(); $sourceLength = strlen($source); $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ? WHERE `fileid` = ?'); From 5c112657b23e546b0ef31ebff11f48a0e2e2c6fc Mon Sep 17 00:00:00 2001 From: Roland Hager Date: Thu, 16 May 2013 17:47:41 +0200 Subject: [PATCH 293/575] New tests to assure that a move will not affect another users cache entries Added a second storage and cache Object to simulate a second user. --- tests/lib/files/cache/cache.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 1612a67383..d8b6541bd0 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -19,11 +19,19 @@ class Cache extends \PHPUnit_Framework_TestCase { * @var \OC\Files\Storage\Temporary $storage; */ private $storage; + /** + * @var \OC\Files\Storage\Temporary $storage2; + */ + private $storage2; /** * @var \OC\Files\Cache\Cache $cache */ private $cache; + /** + * @var \OC\Files\Cache\Cache $cache2 + */ + private $cache2; public function testSimple() { $file1 = 'foo'; @@ -170,6 +178,13 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->cache->put($file4, $data); $this->cache->put($file5, $data); + /* simulate a second user with a different storage id but the same folder structure */ + $this->cache2->put($file1, $folderData); + $this->cache2->put($file2, $folderData); + $this->cache2->put($file3, $folderData); + $this->cache2->put($file4, $data); + $this->cache2->put($file5, $data); + $this->cache->move('folder/foo', 'folder/foobar'); $this->assertFalse($this->cache->inCache('folder/foo')); @@ -180,6 +195,16 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertTrue($this->cache->inCache('folder/foobar')); $this->assertTrue($this->cache->inCache('folder/foobar/1')); $this->assertTrue($this->cache->inCache('folder/foobar/2')); + + /* the folder structure of the second user must not change! */ + $this->assertTrue($this->cache2->inCache('folder/bar')); + $this->assertTrue($this->cache2->inCache('folder/foo')); + $this->assertTrue($this->cache2->inCache('folder/foo/1')); + $this->assertTrue($this->cache2->inCache('folder/foo/2')); + + $this->assertFalse($this->cache2->inCache('folder/foobar')); + $this->assertFalse($this->cache2->inCache('folder/foobar/1')); + $this->assertFalse($this->cache2->inCache('folder/foobar/2')); } function testGetIncomplete() { @@ -243,6 +268,8 @@ class Cache extends \PHPUnit_Framework_TestCase { public function setUp() { $this->storage = new \OC\Files\Storage\Temporary(array()); + $this->storage2 = new \OC\Files\Storage\Temporary(array()); $this->cache = new \OC\Files\Cache\Cache($this->storage); + $this->cache2 = new \OC\Files\Cache\Cache($this->storage2); } } From efb2e692300452f4a82f4136d595c6cdb0e33a9f Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Wed, 22 May 2013 12:21:11 +0200 Subject: [PATCH 294/575] fix return value of OC_Util::isinternetconnectionworking() --- lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index 48c224a303..51f9fcffc4 100755 --- a/lib/util.php +++ b/lib/util.php @@ -644,7 +644,7 @@ class OC_Util { // in case there is no internet connection on purpose there is no need to display a warning if (!\OC_Config::getValue("has_internet_connection", true)) { - return true; + return false; } // try to connect to owncloud.org to see if http connections to the internet are possible. From 1b68c0c0cdf1fb68149efd18e661be0a38bcfd62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 8 May 2013 15:30:04 +0200 Subject: [PATCH 295/575] allow install when only oracle is available --- lib/util.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index 48c224a303..01e2df7bfc 100755 --- a/lib/util.php +++ b/lib/util.php @@ -173,7 +173,8 @@ class OC_Util { //check for database drivers if(!(is_callable('sqlite_open') or class_exists('SQLite3')) and !is_callable('mysql_connect') - and !is_callable('pg_connect')) { + and !is_callable('pg_connect') + and !is_callable('oci_connect')) { $errors[]=array('error'=>'No database drivers (sqlite, mysql, or postgresql) installed.', 'hint'=>'');//TODO: sane hint $web_server_restart= true; From eceb3c8ed5f3068808bc8fc5ceec5fda1ac50db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 29 Apr 2013 12:25:27 +0200 Subject: [PATCH 296/575] add debug output --- lib/app.php | 5 ++++- lib/db.php | 9 ++------- lib/files/cache/cache.php | 15 ++++++++++++--- lib/setup.php | 12 ++++++++++-- lib/user.php | 2 +- lib/user/database.php | 2 +- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/app.php b/lib/app.php index 55b4543ec9..0a7069ca60 100644 --- a/lib/app.php +++ b/lib/app.php @@ -173,8 +173,11 @@ class OC_App{ } $apps=array('files'); $query = OC_DB::prepare( 'SELECT `appid` FROM `*PREFIX*appconfig`' - .' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\'' ); + .' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\'' ); $result=$query->execute(); + if( \OC_DB::isError($result)) { + throw new DatabaseException($result->getMessage(), $query); + } while($row=$result->fetchRow()) { if(array_search($row['appid'], $apps)===false) { $apps[]=$row['appid']; diff --git a/lib/db.php b/lib/db.php index 8f6f50bda6..5b45f81f99 100644 --- a/lib/db.php +++ b/lib/db.php @@ -276,15 +276,10 @@ class OC_DB { 'phptype' => 'oci8', 'username' => $user, 'password' => $pass, + 'service' => $name, + 'hostspec' => $host, 'charset' => 'AL32UTF8', ); - if ($host != '') { - $dsn['hostspec'] = $host; - $dsn['database'] = $name; - } else { // use dbname for hostspec - $dsn['hostspec'] = $name; - $dsn['database'] = $user; - } break; case 'mssql': $dsn = array( diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 0617471079..adffe766dd 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -145,8 +145,11 @@ class Cache { if ($fileId > -1) { $query = \OC_DB::prepare( 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `etag` - FROM `*PREFIX*filecache` WHERE parent = ? ORDER BY `name` ASC'); + FROM `*PREFIX*filecache` WHERE `parent` = ? ORDER BY `name` ASC'); $result = $query->execute(array($fileId)); + if (\OC_DB::isError($result)) { + \OCP\Util::writeLog('cache', 'getFolderContents failed: '.$result->getMessage(), \OCP\Util::ERROR); + } $files = $result->fetchAll(); foreach ($files as &$file) { $file['mimetype'] = $this->getMimetype($file['mimetype']); @@ -201,7 +204,7 @@ class Cache { . ' VALUES(' . implode(', ', $valuesPlaceholder) . ')'); $result = $query->execute($params); if (\OC_DB::isError($result)) { - \OCP\Util::writeLog('cache', 'Insert to cache failed: ' . $result, \OCP\Util::ERROR); + \OCP\Util::writeLog('cache', 'Insert to cache failed: ' . $result->getMessage(), \OCP\Util::ERROR); } return (int)\OC_DB::insertid('*PREFIX*filecache'); @@ -372,6 +375,9 @@ class Cache { $pathHash = md5($file); $query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); $result = $query->execute(array($this->getNumericStorageId(), $pathHash)); + if( \OC_DB::isError($result)) { + \OCP\Util::writeLog('cache', 'get status failed: '.$result->getMessage(), \OCP\Util::ERROR); + } if ($row = $result->fetchRow()) { if ((int)$row['size'] === -1) { return self::SHALLOW; @@ -509,8 +515,11 @@ class Cache { */ public function getIncomplete() { $query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`' - . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1'); + . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC',1); $result = $query->execute(array($this->getNumericStorageId())); + if (\OC_DB::isError($result)) { + \OCP\Util::writeLog('cache', 'getIncomplete failed: '.$result->getMessage(), \OCP\Util::ERROR); + } if ($row = $result->fetchRow()) { return $row['path']; } else { diff --git a/lib/setup.php b/lib/setup.php index f1ac6b8b2b..6f608ec5fb 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -152,8 +152,12 @@ class OC_Setup { self::setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username); } catch (Exception $e) { $error[] = array( - 'error' => $l->t('Oracle username and/or password not valid'), - 'hint' => $l->t('You need to enter either an existing account or the administrator.') + 'error' => $l->t('Oracle connection could not be established'), + 'hint' => $e->getMessage().' Check environment: ORACLE_HOME='.getenv('ORACLE_HOME') + .' ORACLE_SID='.getenv('ORACLE_SID') + .' LD_LIBRARY_PATH='.getenv('LD_LIBRARY_PATH') + .' NLS_LANG='.getenv('NLS_LANG') + .' tnsnames.ora is '.(is_readable(getenv('ORACLE_HOME').'/network/admin/tnsnames.ora')?'':'not ').'readable' ); return $error; } @@ -452,9 +456,13 @@ class OC_Setup { } else { $easy_connect_string = '//'.$e_host.'/'.$e_dbname; } + \OC_Log::write('setup oracle', 'connect string: '.$easy_connect_string, \OC_Log::DEBUG); $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); if(!$connection) { $e = oci_error(); + if (is_array ($e) && isset ($e['message'])) { + throw new Exception($e['message']); + } throw new Exception($l->t('Oracle username and/or password not valid')); } //check for roles creation rights in oracle diff --git a/lib/user.php b/lib/user.php index b607874afa..78f5edfb5f 100644 --- a/lib/user.php +++ b/lib/user.php @@ -609,7 +609,7 @@ class OC_User { */ public static function isEnabled($userid) { $sql = 'SELECT `userid` FROM `*PREFIX*preferences`' - .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND `configvalue` = ?'; + .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND to_char(`configvalue`) = ?'; $stmt = OC_DB::prepare($sql); if ( ! OC_DB::isError($stmt) ) { $result = $stmt->execute(array($userid, 'core', 'enabled', 'false')); diff --git a/lib/user/database.php b/lib/user/database.php index 63c64ed43d..d70b620f2a 100644 --- a/lib/user/database.php +++ b/lib/user/database.php @@ -136,7 +136,7 @@ class OC_User_Database extends OC_User_Backend { */ public function getDisplayName($uid) { if( $this->userExists($uid) ) { - $query = OC_DB::prepare( 'SELECT displayname FROM `*PREFIX*users` WHERE `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) ) { From cbd5eb9a1a77a5bcbcb843be21e95bccec26dedb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 8 May 2013 16:18:24 +0200 Subject: [PATCH 297/575] use to_char only for oracle, whitespace --- lib/app.php | 9 +++++++-- lib/db.php | 12 ++++++------ lib/user.php | 6 +++++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/app.php b/lib/app.php index 0a7069ca60..c6f6e92e60 100644 --- a/lib/app.php +++ b/lib/app.php @@ -172,8 +172,13 @@ class OC_App{ return array(); } $apps=array('files'); - $query = OC_DB::prepare( 'SELECT `appid` FROM `*PREFIX*appconfig`' - .' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\'' ); + $sql = 'SELECT `appid` FROM `*PREFIX*appconfig`' + .' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\''; + if (OC_Config::getValue( 'dbtype', 'sqlite' ) === 'oci') { //FIXME oracle hack + $sql = 'SELECT `appid` FROM `*PREFIX*appconfig`' + .' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\''; + } + $query = OC_DB::prepare( $sql ); $result=$query->execute(); if( \OC_DB::isError($result)) { throw new DatabaseException($result->getMessage(), $query); diff --git a/lib/db.php b/lib/db.php index 5b45f81f99..6183655183 100644 --- a/lib/db.php +++ b/lib/db.php @@ -273,12 +273,12 @@ class OC_DB { break; case 'oci': $dsn = array( - 'phptype' => 'oci8', - 'username' => $user, - 'password' => $pass, - 'service' => $name, - 'hostspec' => $host, - 'charset' => 'AL32UTF8', + 'phptype' => 'oci8', + 'username' => $user, + 'password' => $pass, + 'service' => $name, + 'hostspec' => $host, + 'charset' => 'AL32UTF8', ); break; case 'mssql': diff --git a/lib/user.php b/lib/user.php index 78f5edfb5f..32b91c35ef 100644 --- a/lib/user.php +++ b/lib/user.php @@ -609,7 +609,11 @@ class OC_User { */ public static function isEnabled($userid) { $sql = 'SELECT `userid` FROM `*PREFIX*preferences`' - .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND to_char(`configvalue`) = ?'; + .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND `configvalue` = ?'; + if (OC_Config::getValue( 'dbtype', 'sqlite' ) === 'oci') { //FIXME oracle hack + $sql = 'SELECT `userid` FROM `*PREFIX*preferences`' + .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND to_char(`configvalue`) = ?'; + } $stmt = OC_DB::prepare($sql); if ( ! OC_DB::isError($stmt) ) { $result = $stmt->execute(array($userid, 'core', 'enabled', 'false')); From 1f1abe595d413883f060f5f2983bac654e0ec7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 8 May 2013 16:29:15 +0200 Subject: [PATCH 298/575] cleanup codestyle --- lib/files/cache/cache.php | 6 +++--- lib/setup.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index adffe766dd..3341fe5052 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -148,7 +148,7 @@ class Cache { FROM `*PREFIX*filecache` WHERE `parent` = ? ORDER BY `name` ASC'); $result = $query->execute(array($fileId)); if (\OC_DB::isError($result)) { - \OCP\Util::writeLog('cache', 'getFolderContents failed: '.$result->getMessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('cache', 'getFolderContents failed: ' . $result->getMessage(), \OCP\Util::ERROR); } $files = $result->fetchAll(); foreach ($files as &$file) { @@ -376,7 +376,7 @@ class Cache { $query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); $result = $query->execute(array($this->getNumericStorageId(), $pathHash)); if( \OC_DB::isError($result)) { - \OCP\Util::writeLog('cache', 'get status failed: '.$result->getMessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('cache', 'get status failed: ' . $result->getMessage(), \OCP\Util::ERROR); } if ($row = $result->fetchRow()) { if ((int)$row['size'] === -1) { @@ -518,7 +518,7 @@ class Cache { . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC',1); $result = $query->execute(array($this->getNumericStorageId())); if (\OC_DB::isError($result)) { - \OCP\Util::writeLog('cache', 'getIncomplete failed: '.$result->getMessage(), \OCP\Util::ERROR); + \OCP\Util::writeLog('cache', 'getIncomplete failed: ' . $result->getMessage(), \OCP\Util::ERROR); } if ($row = $result->fetchRow()) { return $row['path']; diff --git a/lib/setup.php b/lib/setup.php index 6f608ec5fb..a63cc664db 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -456,7 +456,7 @@ class OC_Setup { } else { $easy_connect_string = '//'.$e_host.'/'.$e_dbname; } - \OC_Log::write('setup oracle', 'connect string: '.$easy_connect_string, \OC_Log::DEBUG); + \OC_Log::write('setup oracle', 'connect string: ' . $easy_connect_string, \OC_Log::DEBUG); $connection = @oci_connect($dbuser, $dbpass, $easy_connect_string); if(!$connection) { $e = oci_error(); From 15a3ae6db14fd021d3c9ca672a8afc98b86cf174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 22 May 2013 18:01:18 +0200 Subject: [PATCH 299/575] improved error messages --- apps/files_encryption/ajax/adminrecovery.php | 8 +++++++- apps/files_encryption/js/settings-admin.js | 10 +++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index a32225d036..306f0088be 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -22,6 +22,7 @@ $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); + $action = "enable"; // Disable recoveryAdmin } elseif ( @@ -29,7 +30,12 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ && 0 == $_POST['adminEnableRecovery'] ) { $return = \OCA\Encryption\Helper::adminDisableRecovery($_POST['recoveryPassword']); + $action = "disable"; } // Return success or failure -( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file +if ($return) { + \OCP\JSON::success(array("data" => array( "message" => 'Recovery key successfully ' . $action.'d'))); +} else { + \OCP\JSON::error(array("data" => array( "message" => 'Could not '.$action.' recovery key. Please check your recovery key password!'))); +} diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index dbae42b011..c58d75341d 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -44,19 +44,19 @@ $(document).ready(function(){ $( 'input:radio[name="adminEnableRecovery"]' ).change( function() { - var recoveryStatus = $( this ).val(); var oldStatus = (1+parseInt(recoveryStatus)) % 2; var recoveryPassword = $( '#recoveryPassword' ).val(); $.post( OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' ) , { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword } - , function( data ) { - if (data.status == "error") { - alert("Couldn't switch recovery key mode, please check your recovery key password!"); + , function( result ) { + if (result.status === "error") { + OC.Notification.show(t('admin', result.data.message)); $('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]').attr("checked", "true"); } else { - if (recoveryStatus == "0") { + OC.Notification.hide(); + if (recoveryStatus === "0") { $('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true"); $('input:password[name="changeRecoveryPassword"]').attr("disabled", "true"); $('input:password[name="changeRecoveryPassword"]').val(""); From 80dea1a8c5c9bab10176d1d7b04b363a9dda4bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 22 May 2013 18:05:12 +0200 Subject: [PATCH 300/575] settings clean-up; There is no blacklist in the new encryption app --- apps/files_encryption/settings-personal.php | 14 ------------- .../templates/settings-personal.php | 21 +------------------ 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index 90edc0eae2..ada8ffbc31 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -11,19 +11,6 @@ $tmpl = new OCP\Template( 'files_encryption', 'settings-personal'); -$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); - -// Add human readable message in case nothing is blacklisted -if ( - 1 == count( $blackList ) - && $blackList[0] == '' -) { - - // FIXME: Make this string translatable - $blackList[0] = "(None - all filetypes will be encrypted)"; - -} - $user = \OCP\USER::getUser(); $view = new \OC_FilesystemView( '/' ); $util = new \OCA\Encryption\Util( $view, $user ); @@ -36,7 +23,6 @@ $recoveryEnabledForUser = $util->recoveryEnabledForUser(); $tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); $tmpl->assign( 'recoveryEnabledForUser', $recoveryEnabledForUser ); -$tmpl->assign( 'blacklist', $blackList ); return $tmpl->fetchPage(); diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 33989416d3..14e8ce960a 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -4,28 +4,9 @@ t( 'Encryption' ) ); ?> -

          - -

          - -

          - File types -
          - t( 'The following file types will not be encrypted:' ) ); ?> -

          - -
            - -
          • - -
          • - -
          - -

          - +
          t( "Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" ) ); ?>
          From 1bd42762ae6f16ab948afa2c1ab4bb5b6ad69da7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 22 May 2013 18:28:44 +0200 Subject: [PATCH 301/575] revert submodule changes --- 3rdparty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty b/3rdparty index 2d59ac4f7b..a13af72fbe 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit 2d59ac4f7bd354d9ea7ebea05f863d9f50ccb6ee +Subproject commit a13af72fbe8983686fc47489a750e60319f68ac2 From b2aa97f1669333b6a762891f844ff4d0e79958a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Wed, 22 May 2013 18:30:29 +0200 Subject: [PATCH 302/575] revert changes to .gitmodules, they were applied by accident --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 6e5521b6f5..b9c1a3702c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "3rdparty"] path = 3rdparty - url = git@github.com:owncloud/3rdparty.git + url = git://github.com/owncloud/3rdparty.git From 9b622bdeedf0f29abb33449da3089a8eaecd7c78 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Wed, 22 May 2013 15:02:11 -0400 Subject: [PATCH 303/575] RUNTIME_NOSETUPFS no longer exists, using tearDownFS() in public links instead --- apps/files_sharing/public.php | 2 +- cron.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index 2b283375a6..59598e35fa 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -1,5 +1,4 @@ Date: Wed, 22 May 2013 23:50:45 +0200 Subject: [PATCH 304/575] added static function registerHooks() for better unit tests handling --- apps/files_trashbin/appinfo/app.php | 6 ++---- apps/files_trashbin/lib/trash.php | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php index e83d3b8fbb..3b1e0ac30c 100644 --- a/apps/files_trashbin/appinfo/app.php +++ b/apps/files_trashbin/appinfo/app.php @@ -3,7 +3,5 @@ OC::$CLASSPATH['OCA\Files_Trashbin\Hooks'] = 'files_trashbin/lib/hooks.php'; OC::$CLASSPATH['OCA\Files_Trashbin\Trashbin'] = 'files_trashbin/lib/trash.php'; -//Listen to delete file signal -OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA\Files_Trashbin\Hooks", "remove_hook"); -//Listen to delete user signal -OCP\Util::connectHook('OC_User', 'pre_deleteUser', "OCA\Files_Trashbin\Hooks", "deleteUser_hook"); \ No newline at end of file +// register hooks +\OCA\Files_Trashbin\Trashbin::registerHooks(); \ No newline at end of file diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 70df9e2426..2d1830a38f 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -833,5 +833,14 @@ class Trashbin { } $query->execute(array($size, $user)); } - + + /** + * register hooks + */ + public static function registerHooks() { + //Listen to delete file signal + \OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA\Files_Trashbin\Hooks", "remove_hook"); + //Listen to delete user signal + \OCP\Util::connectHook('OC_User', 'pre_deleteUser', "OCA\Files_Trashbin\Hooks", "deleteUser_hook"); + } } From 46c784ccdfd931fee00dd5fd760711027d0b2aec Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Wed, 22 May 2013 23:51:35 +0200 Subject: [PATCH 305/575] added trash bin tests --- apps/files_encryption/tests/trashbin.php | 269 +++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100755 apps/files_encryption/tests/trashbin.php diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php new file mode 100755 index 0000000000..b62041a6d3 --- /dev/null +++ b/apps/files_encryption/tests/trashbin.php @@ -0,0 +1,269 @@ + + * + * 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 . + * + */ + +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php'); + +use OCA\Encryption; + +/** + * Class Test_Encryption_Trashbin + * @brief this class provide basic trashbin app tests + */ +class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase +{ + + public $userId; + public $pass; + /** + * @var \OC_FilesystemView + */ + public $view; + public $dataShort; + public $stateFilesTrashbin; + public $folder1; + public $subfolder; + public $subsubfolder; + + function setUp() + { + // reset backend + \OC_User::useBackend('database'); + + // set user id + \OC_User::setUserId('admin'); + $this->userId = 'admin'; + $this->pass = 'admin'; + + // init filesystem view + $this->view = new \OC_FilesystemView('/'); + + // init short data + $this->dataShort = 'hats'; + + $this->folder1 = '/folder1'; + $this->subfolder = '/subfolder1'; + $this->subsubfolder = '/subsubfolder1'; + + \OC_Hook::clear('OC_Filesystem'); + \OC_Hook::clear('OC_User'); + + // init filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // register encryption file proxy + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // trashbin hooks + \OCA\Files_Trashbin\Trashbin::registerHooks(); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + + // we don't want to tests with app files_trashbin enabled + \OC_App::enable('files_trashbin'); + + // init filesystem for user + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($this->userId); + \OC_User::setUserId($this->userId); + + // login user + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login($params); + } + + function tearDown() + { + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } else { + OC_App::disable('files_trashbin'); + } + + // clear all proxies + \OC_FileProxy::clearProxies(); + } + + /** + * @brief test delete file + */ + function testDeleteFile() { + + // generate filename + $filename = 'tmp-' . time() . '.txt'; + + // save file with content + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // check if key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + + // check if share key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + + // delete file + \OC\FIles\Filesystem::unlink($filename); + + // check if file not exists + $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + + // check if key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + + // check if share key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + + // get files + $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); + + $trashFileSuffix = null; + // find created file with timestamp + foreach($trashFiles as $file) { + if(strncmp($file['path'], $filename, strlen($filename))) { + $path_parts = pathinfo($file['name']); + $trashFileSuffix = $path_parts['extension']; + } + } + + // check if we found the file we created + $this->assertNotNull($trashFileSuffix); + + // check if key for admin not exists + $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + + // check if share key for admin not exists + $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + + // return filename for next test + return $filename . '.' . $trashFileSuffix; + } + + /** + * @brief test restore file + * + * @depends testDeleteFile + */ + function testRestoreFile($filename) { + + // prepare file information + $path_parts = pathinfo($filename); + $trashFileSuffix = $path_parts['extension']; + $timestamp = str_replace('d', '', $trashFileSuffix); + $fileNameWithoutSuffix = str_replace('.'.$trashFileSuffix, '', $filename); + + // restore file + $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp)); + + // check if file exists + $this->assertTrue($this->view->file_exists('/admin/files/' . $fileNameWithoutSuffix)); + + // check if key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key')); + + // check if share key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey')); + } + + /** + * @brief test delete file forever + */ + function testPermanentDeleteFile() { + + // generate filename + $filename = 'tmp-' . time() . '.txt'; + + // save file with content + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + + // test that data was successfully written + $this->assertTrue(is_int($cryptedFile)); + + // check if key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + + // check if share key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + + // delete file + \OC\FIles\Filesystem::unlink($filename); + + // check if file not exists + $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + + // check if key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + + // check if share key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + + // get files + $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); + + $trashFileSuffix = null; + // find created file with timestamp + foreach($trashFiles as $file) { + if(strncmp($file['path'], $filename, strlen($filename))) { + $path_parts = pathinfo($file['name']); + $trashFileSuffix = $path_parts['extension']; + } + } + + // check if we found the file we created + $this->assertNotNull($trashFileSuffix); + + // check if key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + + // check if share key for admin exists + $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + + // get timestamp from file + $timestamp = str_replace('d', '', $trashFileSuffix); + + // delete file forever + $this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)); + + // check if key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix)); + + // check if key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + + // check if share key for admin not exists + $this->assertFalse($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + } + +} \ No newline at end of file From 85e0c78166d45b0ef9d00b1fd2164e4969ee9b83 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 23 May 2013 01:21:36 +0200 Subject: [PATCH 306/575] fix problems with german "Umlaut" in folder name --- lib/files/cache/scanner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index a98953b42a..b73e2e83fc 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -114,7 +114,7 @@ class Scanner { $size = 0; if ($this->storage->is_dir($path) && ($dh = $this->storage->opendir($path))) { \OC_DB::beginTransaction(); - while ($file = readdir($dh)) { + while ($file = utf8_encode(readdir($dh))) { $child = ($path) ? $path . '/' . $file : $file; if (!$this->isIgnoredDir($file)) { $data = $this->scanFile($child, $recursive === self::SCAN_SHALLOW); From 698862519de6b364da6c20a97d8c546204e80f3d Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Thu, 23 May 2013 02:00:27 +0200 Subject: [PATCH 307/575] [tx-robot] updated from transifex --- apps/files/l10n/sk_SK.php | 1 + apps/files/l10n/tr.php | 1 + apps/user_ldap/l10n/tr.php | 16 ++++---- l10n/sk_SK/files.po | 9 +++-- l10n/templates/core.pot | 28 ++++++++------ l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 58 +++++++++++++++-------------- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/tr/files.po | 9 +++-- l10n/tr/user_ldap.po | 23 ++++++------ 17 files changed, 88 insertions(+), 75 deletions(-) diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index b7f329c362..ad33c9b4ee 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} priečinkov", "1 file" => "1 súbor", "{count} files" => "{count} súborov", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Neplatný názov priečinka. Názov \"Shared\" je rezervovaný pre ownCloud", "Unable to rename file" => "Nemožno premenovať súbor", "Upload" => "Odoslať", "File handling" => "Nastavenie správania sa k súborom", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index fd5c6bc6f0..6a096d2703 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} dizin", "1 file" => "1 dosya", "{count} files" => "{count} dosya", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Geçersiz dizin adı. 'Shared' dizin ismi kullanımı ownCloud tarafından rezerve edilmiştir.", "Unable to rename file" => "Dosya adı değiştirilemedi", "Upload" => "Yükle", "File handling" => "Dosya taşıma", diff --git a/apps/user_ldap/l10n/tr.php b/apps/user_ldap/l10n/tr.php index c001fa99ce..3835c72313 100644 --- a/apps/user_ldap/l10n/tr.php +++ b/apps/user_ldap/l10n/tr.php @@ -1,16 +1,16 @@ "Sunucu uyunlama basarmadi ", -"The configuration is valid and the connection could be established!" => "Uyunlama mantikli ve baglama yerlestirmek edebilmi.", -"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Uyunlama gecerli, fakat Baglama yapamadi. Lutfen kontrol yapmak, eger bu iyi yerlertirdi. ", -"The configuration is invalid. Please look in the ownCloud log for further details." => "Uyunma mantikli degil. Lutfen log daha kontrol yapmak. ", +"Failed to delete the server configuration" => "Sunucu yapılandırmasını silme başarısız oldu", +"The configuration is valid and the connection could be established!" => "Yapılandırma geçerli ve bağlantı kuruldu!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Yapılandırma geçerli fakat bağlanma(bind) başarısız. Lütfen Sunucu ayarları ve kimlik bilgilerini kontrol ediniz.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Yapılandırma geçersiz. Daha fazla detay için lütfen ownCloud günlüklerine bakınız.", "Deletion failed" => "Silme başarısız oldu", -"Take over settings from recent server configuration?" => "Parametri sonadan uyunlama cikarmak mi?", -"Keep settings?" => "Ayarları kalsınmı?", -"Cannot add server configuration" => "Sunucu uyunlama birlemek edemen. ", +"Take over settings from recent server configuration?" => "Ayarları son sunucu yapılandırmalarından devral?", +"Keep settings?" => "Ayarlar kalsın mı?", +"Cannot add server configuration" => "Sunucu yapılandırması eklenemedi", "Error" => "Hata", "Connection test succeeded" => "Bağlantı testi başarılı oldu", "Connection test failed" => "Bağlantı testi başarısız oldu", -"Do you really want to delete the current Server Configuration?" => "Hakikatten, Sonuncu Funksyon durmak istiyor mi?", +"Do you really want to delete the current Server Configuration?" => "Şu anki sunucu yapılandırmasını silmek istediğinizden emin misiniz?", "Confirm Deletion" => "Silmeyi onayla", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Uyari Apps kullanici_Idap ve user_webdavauth uyunmayan. Bu belki sik degil. Lutfen sistem yonetici sormak on aktif yapmaya. ", "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Ihbar Modulu PHP LDAP yuklemdi degil, backend calismacak. Lutfen sistem yonetici sormak yuklemek icin.", diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 0905075025..46a8b51b5c 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# mhh , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"PO-Revision-Date: 2013-05-22 16:10+0000\n" +"Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -217,7 +218,7 @@ msgstr "{count} súborov" #: lib/app.php:53 msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" -msgstr "" +msgstr "Neplatný názov priečinka. Názov \"Shared\" je rezervovaný pre ownCloud" #: lib/app.php:73 msgid "Unable to rename file" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index a9d3136889..ebe74619f0 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index c294df5ef0..6560570071 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 4997ad02d2..5873f3e7b8 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index af78203998..004046e622 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 91ce57c6d3..953d87a720 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 23de9ceb55..4efb1b73c6 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 6c897bae2e..fccd0997a4 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index ef7c6f4003..0edba6ae59 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:18+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,27 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:859 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:860 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index a7651f9f1e..70a5168611 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:18+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index f18624f277..c440c988ca 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index c6985473c6..a52cf0777f 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 7a65c39831..204e6030a0 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/files.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# ismail yenigül , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"PO-Revision-Date: 2013-05-22 07:40+0000\n" +"Last-Translator: ismail yenigül \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" @@ -217,7 +218,7 @@ msgstr "{count} dosya" #: lib/app.php:53 msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" -msgstr "" +msgstr "Geçersiz dizin adı. 'Shared' dizin ismi kullanımı ownCloud tarafından rezerve edilmiştir." #: lib/app.php:73 msgid "Unable to rename file" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index 576140cd31..fa75800dde 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# ismail yenigül , 2013 # KAT.RAT12 , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"PO-Revision-Date: 2013-05-22 08:20+0000\n" +"Last-Translator: ismail yenigül \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" @@ -24,23 +25,23 @@ msgstr "" #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" -msgstr "Sunucu uyunlama basarmadi " +msgstr "Sunucu yapılandırmasını silme başarısız oldu" #: ajax/testConfiguration.php:36 msgid "The configuration is valid and the connection could be established!" -msgstr "Uyunlama mantikli ve baglama yerlestirmek edebilmi." +msgstr "Yapılandırma geçerli ve bağlantı kuruldu!" #: ajax/testConfiguration.php:39 msgid "" "The configuration is valid, but the Bind failed. Please check the server " "settings and credentials." -msgstr "Uyunlama gecerli, fakat Baglama yapamadi. Lutfen kontrol yapmak, eger bu iyi yerlertirdi. " +msgstr "Yapılandırma geçerli fakat bağlanma(bind) başarısız. Lütfen Sunucu ayarları ve kimlik bilgilerini kontrol ediniz." #: ajax/testConfiguration.php:43 msgid "" "The configuration is invalid. Please look in the ownCloud log for further " "details." -msgstr "Uyunma mantikli degil. Lutfen log daha kontrol yapmak. " +msgstr "Yapılandırma geçersiz. Daha fazla detay için lütfen ownCloud günlüklerine bakınız." #: js/settings.js:66 msgid "Deletion failed" @@ -48,15 +49,15 @@ msgstr "Silme başarısız oldu" #: js/settings.js:82 msgid "Take over settings from recent server configuration?" -msgstr "Parametri sonadan uyunlama cikarmak mi?" +msgstr "Ayarları son sunucu yapılandırmalarından devral?" #: js/settings.js:83 msgid "Keep settings?" -msgstr "Ayarları kalsınmı?" +msgstr "Ayarlar kalsın mı?" #: js/settings.js:97 msgid "Cannot add server configuration" -msgstr "Sunucu uyunlama birlemek edemen. " +msgstr "Sunucu yapılandırması eklenemedi" #: js/settings.js:111 msgid "mappings cleared" @@ -80,7 +81,7 @@ msgstr "Bağlantı testi başarısız oldu" #: js/settings.js:156 msgid "Do you really want to delete the current Server Configuration?" -msgstr "Hakikatten, Sonuncu Funksyon durmak istiyor mi?" +msgstr "Şu anki sunucu yapılandırmasını silmek istediğinizden emin misiniz?" #: js/settings.js:157 msgid "Confirm Deletion" From 3b6d850e592bbc6db9d67d25ee700c0730c84376 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Thu, 23 May 2013 10:23:16 -0400 Subject: [PATCH 308/575] Switch to calling deleteAll via storage to avoid emitting delete hook --- lib/files/view.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/files/view.php b/lib/files/view.php index 8a37a0bcc6..d0d473766c 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -375,7 +375,8 @@ class View { if ($this->is_dir($path1)) { $result = $this->copy($path1, $path2); if ($result === true) { - $result = $this->deleteAll($path1); + list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); + $result = $storage1->deleteAll($internalPath1); } } else { $source = $this->fopen($path1 . $postFix1, 'r'); From d4b700ef4ebfa9aba9bcadda864ed5a2a92174ed Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 23 May 2013 20:29:46 +0200 Subject: [PATCH 309/575] revert previous fix and added normalizer to cache class --- lib/files/cache/cache.php | 24 ++++++++++++ lib/files/cache/scanner.php | 2 +- tests/lib/files/cache/cache.php | 67 +++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 3341fe5052..a7e634c8e4 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -100,6 +100,9 @@ class Cache { */ public function get($file) { if (is_string($file) or $file == '') { + // normalize file + $file = $this->normalize($file); + $where = 'WHERE `storage` = ? AND `path_hash` = ?'; $params = array($this->getNumericStorageId(), md5($file)); } else { //file id @@ -177,6 +180,9 @@ class Cache { $this->update($id, $data); return $id; } else { + // normalize file + $file = $this->normalize($file); + if (isset($this->partial[$file])) { //add any saved partial data $data = array_merge($this->partial[$file], $data); unset($this->partial[$file]); @@ -265,6 +271,9 @@ class Cache { * @return int */ public function getId($file) { + // normalize file + $file = $this->normalize($file); + $pathHash = md5($file); $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); @@ -549,4 +558,19 @@ class Cache { return null; } } + + /** + * normalize the given path + * @param $path + * @return string + */ + public function normalize($path) { + + //normalize unicode if possible + if (class_exists('Normalizer')) { + $path = \Normalizer::normalize($path); + } + + return $path; + } } diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index b73e2e83fc..a98953b42a 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -114,7 +114,7 @@ class Scanner { $size = 0; if ($this->storage->is_dir($path) && ($dh = $this->storage->opendir($path))) { \OC_DB::beginTransaction(); - while ($file = utf8_encode(readdir($dh))) { + while ($file = readdir($dh)) { $child = ($path) ? $path . '/' . $file : $file; if (!$this->isIgnoredDir($file)) { $data = $this->scanFile($child, $recursive === self::SCAN_SHALLOW); diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 1612a67383..2b1e5a5621 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -8,6 +8,8 @@ namespace Test\Files\Cache; +use PHPUnit_Framework_MockObject_MockObject; + class LongId extends \OC\Files\Storage\Temporary { public function getId() { return 'long:' . str_repeat('foo', 50) . parent::getId(); @@ -237,6 +239,71 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertEquals(array(md5($storageId), 'foo'), \OC\Files\Cache\Cache::getById($id)); } + /** + * @brief this test show the bug resulting if we have no normalizer installed + */ + public function testWithoutNormalizer() { + // create folder Schön with U+00F6 + $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; + + // create folder Schön with U+0308 + $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; + + /** + * @var \OC\Files\Cache\Cache | PHPUnit_Framework_MockObject_MockObject $cacheMock + */ + $cacheMock = $this->getMock('\OC\Files\Cache\Cache', array('normalize'), array($this->storage), '', true); + + $cacheMock->expects($this->any()) + ->method('normalize') + ->will($this->returnArgument(0)); + + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + + $this->assertFalse($cacheMock->get('folder')); + $this->assertGreaterThan(0, $cacheMock->put('folder', $data)); + + $this->assertFalse($cacheMock->get('folder/' . $folderWith00F6)); + $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith00F6, $data)); + + $this->assertFalse($cacheMock->get('folder/' .$folderWith0308)); + $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith0308, $data)); + + // this is our bug, we have two different hashes with the same name (Schön) + $this->assertEquals(2, count($cacheMock->getFolderContents('folder'))); + } + + /** + * @brief this test shows that there is no bug if we use the normalizer + */ + public function testWithNormalizer() { + + if(!class_exists('Normalizer')) { + $this->markTestSkipped('The Normalizer extension is not available.'); + return; + } + + // folder name Schön with U+00F6 + $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; + + // folder name Schön with U+0308 + $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; + + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + + $this->assertFalse($this->cache->get('folder')); + $this->assertGreaterThan(0, $this->cache->put('folder', $data)); + + $this->assertFalse($this->cache->get('folder/' . $folderWith00F6)); + $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith00F6, $data)); + + $this->assertTrue(is_array($this->cache->get('folder/' .$folderWith0308))); + $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith0308, $data)); + + // at this point we should have only one folder named "Schön" + $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); + } + public function tearDown() { $this->cache->clear(); } From a9ebf2aabe0297e2bd02a07018d6bac3b2de65c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 23 May 2013 20:30:07 +0200 Subject: [PATCH 310/575] fix public link share if a user is logged in --- apps/files_encryption/lib/keymanager.php | 19 ++++++++++++++----- apps/files_encryption/lib/session.php | 4 +++- apps/files_encryption/lib/util.php | 16 +++++++++++++++- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index ddd8f0ad6e..58c1d4b24a 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -237,10 +237,15 @@ class Keymanager } $util = new Util($view, \OCP\User::getUser()); - list($owner, $filename) = $util->getUidAndFilename($filePath); - $filePath_f = ltrim($filename, '/'); - $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + if ($util->isPublic()) { + $keyfilePath = $util->getKeyfilePath() . $filePath . '.key'; + } else { + list($owner, $filename) = $util->getUidAndFilename($filePath); + $filePath_f = ltrim($filename, '/'); + + $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; + } $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -447,9 +452,13 @@ class Keymanager //here we need the currently logged in user, while userId can be a different user $util = new Util($view, \OCP\User::getUser()); - list($owner, $filename) = $util->getUidAndFilename($filePath); + if ($util->isPublic()) { + $shareKeyPath = $util->getSharekeyPath() . $filePath . '.' . $userId . '.shareKey'; + } else { + list($owner, $filename) = $util->getUidAndFilename($filePath); + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); + } - $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); if ($view->file_exists($shareKeyPath)) { $result = $view->file_get_contents($shareKeyPath); diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 8425cedd99..86f56e5676 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -84,7 +84,9 @@ class Session } - if (\OCP\USER::getUser() === false) { + if (\OCP\USER::getUser() === false || + (isset($_GET['service']) && $_GET['service'] == 'files' && + isset($_GET['t']))) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 784d74bd75..e327c3403b 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -129,7 +129,9 @@ class Util $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // if we are anonymous/public - if ($this->userId === false) { + if ($this->userId === false || + (isset($_GET['service']) && $_GET['service'] == 'files' && + isset($_GET['t']))) { $this->userId = $this->publicShareKeyId; // only handle for files_sharing app @@ -1491,4 +1493,16 @@ class Util $this->recoverAllFiles('/', $privateKey); } + + public function isPublic() { + return $this->isPublic; + } + + public function getKeyfilePath() { + return $this->keyfilesPath; + } + + public function getSharekeyPath() { + return $this->shareKeysPath; + } } From 7b07168c46d860583f112df4b25120be296b686d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 23 May 2013 21:18:31 +0200 Subject: [PATCH 311/575] code clean up; nicer solution to solve the public link share problem if a user is logged in --- apps/files_encryption/lib/keymanager.php | 18 +++++------------- apps/files_encryption/lib/util.php | 13 +------------ 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index 58c1d4b24a..a8cbc19d40 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -238,14 +238,10 @@ class Keymanager $util = new Util($view, \OCP\User::getUser()); - if ($util->isPublic()) { - $keyfilePath = $util->getKeyfilePath() . $filePath . '.key'; - } else { - list($owner, $filename) = $util->getUidAndFilename($filePath); - $filePath_f = ltrim($filename, '/'); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $filePath_f = ltrim($filename, '/'); - $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; - } + $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -452,12 +448,8 @@ class Keymanager //here we need the currently logged in user, while userId can be a different user $util = new Util($view, \OCP\User::getUser()); - if ($util->isPublic()) { - $shareKeyPath = $util->getSharekeyPath() . $filePath . '.' . $userId . '.shareKey'; - } else { - list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); - } + list($owner, $filename) = $util->getUidAndFilename($filePath); + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); if ($view->file_exists($shareKeyPath)) { diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index e327c3403b..d42fe9953b 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1139,7 +1139,7 @@ class Util $fileOwnerUid = $view->getOwner($path); // handle public access - if ($fileOwnerUid === false && $this->isPublic) { + if ($this->isPublic) { $filename = $path; $fileOwnerUid = $GLOBALS['fileOwner']; @@ -1494,15 +1494,4 @@ class Util $this->recoverAllFiles('/', $privateKey); } - public function isPublic() { - return $this->isPublic; - } - - public function getKeyfilePath() { - return $this->keyfilesPath; - } - - public function getSharekeyPath() { - return $this->shareKeysPath; - } } From adc930d9f934fab352f4b21d8aa3710ff9db239b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 23 May 2013 22:09:28 +0200 Subject: [PATCH 312/575] added l10n support in apps/files_encryption/ajax/adminrecovery.php --- apps/files_encryption/ajax/adminrecovery.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 306f0088be..6d7953b563 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -13,6 +13,8 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); +$l=OC_L10N::get('files_encryption'); + $return = false; // Enable recoveryAdmin @@ -35,7 +37,7 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ // Return success or failure if ($return) { - \OCP\JSON::success(array("data" => array( "message" => 'Recovery key successfully ' . $action.'d'))); + \OCP\JSON::success(array("data" => array( "message" => $l->t('Recovery key successfully ' . $action.'d')))); } else { - \OCP\JSON::error(array("data" => array( "message" => 'Could not '.$action.' recovery key. Please check your recovery key password!'))); + \OCP\JSON::error(array("data" => array( "message" => $l->t('Could not '.$action.' recovery key. Please check your recovery key password!')))); } From 6c8de5ae6d11886d498e810808484a2bdfeaef12 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Thu, 23 May 2013 23:56:31 +0200 Subject: [PATCH 313/575] fixes after review from @DeepDiver1975 --- apps/files_encryption/hooks/hooks.php | 2 +- apps/files_encryption/js/settings-admin.js | 2 +- apps/files_encryption/js/settings-personal.js | 2 +- apps/files_encryption/lib/crypt.php | 246 ++++--- apps/files_encryption/lib/helper.php | 92 ++- apps/files_encryption/lib/keymanager.php | 230 ++++--- apps/files_encryption/lib/proxy.php | 204 +++--- apps/files_encryption/lib/session.php | 64 +- apps/files_encryption/lib/stream.php | 170 +++-- apps/files_encryption/lib/util.php | 601 ++++++++---------- apps/files_encryption/settings-admin.php | 1 - apps/files_encryption/settings-personal.php | 1 - .../templates/settings-personal.php | 13 - 13 files changed, 752 insertions(+), 876 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 53afefc721..2066300a16 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -189,7 +189,7 @@ class Hooks { // Save public key $view->file_put_contents( '/public-keys/'.$user.'.public.key', $keypair['publicKey'] ); - // Encrypt private key empthy passphrase + // Encrypt private key empty passphrase $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $newUserPassword ); // Save private key diff --git a/apps/files_encryption/js/settings-admin.js b/apps/files_encryption/js/settings-admin.js index c58d75341d..7c1866445e 100644 --- a/apps/files_encryption/js/settings-admin.js +++ b/apps/files_encryption/js/settings-admin.js @@ -99,4 +99,4 @@ $(document).ready(function(){ ); }); -}) \ No newline at end of file +}); \ No newline at end of file diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js index 3b9b00dc79..312b672ad4 100644 --- a/apps/files_encryption/js/settings-personal.js +++ b/apps/files_encryption/js/settings-personal.js @@ -57,4 +57,4 @@ $(document).ready(function(){ } ); -}) \ No newline at end of file +}); \ No newline at end of file diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 1a5c9300a2..f5b7a8a0a4 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -26,7 +26,7 @@ namespace OCA\Encryption; //require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; -require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); /** * Class for common cryptography functionality @@ -40,8 +40,7 @@ class Crypt * @param string $user name (use system wide setting if name=null) * @return string 'client' or 'server' */ - public static function mode($user = null) - { + public static function mode( $user = null ) { return 'server'; @@ -51,20 +50,19 @@ class Crypt * @brief Create a new encryption keypair * @return array publicKey, privatekey */ - public static function createKeypair() - { + public static function createKeypair() { - $res = openssl_pkey_new(array('private_key_bits' => 4096)); + $res = openssl_pkey_new( array( 'private_key_bits' => 4096 ) ); // Get private key - openssl_pkey_export($res, $privateKey); + openssl_pkey_export( $res, $privateKey ); // Get public key - $publicKey = openssl_pkey_get_details($res); + $publicKey = openssl_pkey_get_details( $res ); $publicKey = $publicKey['key']; - return (array('publicKey' => $publicKey, 'privateKey' => $privateKey)); + return ( array( 'publicKey' => $publicKey, 'privateKey' => $privateKey ) ); } @@ -77,8 +75,7 @@ class Crypt * blocks with encryption alone, hence padding is added to achieve the * required length. */ - public static function addPadding($data) - { + public static function addPadding( $data ) { $padded = $data . 'xx'; @@ -91,12 +88,11 @@ class Crypt * @param string $padded padded data to remove padding from * @return string unpadded data on success, false on error */ - public static function removePadding($padded) - { + public static function removePadding( $padded ) { - if (substr($padded, -2) == 'xx') { + if ( substr( $padded, -2 ) == 'xx' ) { - $data = substr($padded, 0, -2); + $data = substr( $padded, 0, -2 ); return $data; @@ -115,27 +111,26 @@ class Crypt * @return boolean * @note see also OCA\Encryption\Util->isEncryptedPath() */ - public static function isCatfileContent($content) - { + public static function isCatfileContent( $content ) { - if (!$content) { + if ( !$content ) { return false; } - $noPadding = self::removePadding($content); + $noPadding = self::removePadding( $content ); // Fetch encryption metadata from end of file - $meta = substr($noPadding, -22); + $meta = substr( $noPadding, -22 ); // Fetch IV from end of file - $iv = substr($meta, -16); + $iv = substr( $meta, -16 ); // Fetch identifier from start of metadata - $identifier = substr($meta, 0, 6); + $identifier = substr( $meta, 0, 6 ); - if ($identifier == '00iv00') { + if ( $identifier == '00iv00' ) { return true; @@ -152,16 +147,15 @@ class Crypt * @param string $path * @return bool */ - public static function isEncryptedMeta($path) - { + public static function isEncryptedMeta( $path ) { // TODO: Use DI to get \OC\Files\Filesystem out of here // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo($path); + $metadata = \OC\Files\Filesystem::getFileInfo( $path ); // Return encryption status - return isset($metadata['encrypted']) and ( bool )$metadata['encrypted']; + return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; } @@ -172,19 +166,18 @@ class Crypt * e.g. filename or /Docs/filename, NOT admin/files/filename * @return boolean */ - public static function isLegacyEncryptedContent($data, $relPath) - { + public static function isLegacyEncryptedContent( $data, $relPath ) { // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo($relPath, ''); + $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); // If a file is flagged with encryption in DB, but isn't a // valid content + IV combination, it's probably using the // legacy encryption system if ( - isset($metadata['encrypted']) + isset( $metadata['encrypted'] ) and $metadata['encrypted'] === true - and !self::isCatfileContent($data) + and !self::isCatfileContent( $data ) ) { return true; @@ -199,18 +192,20 @@ class Crypt /** * @brief Symmetrically encrypt a string + * @param $plainContent + * @param $iv + * @param string $passphrase * @return string encrypted file content */ - public static function encrypt($plainContent, $iv, $passphrase = '') - { + public static function encrypt( $plainContent, $iv, $passphrase = '' ) { - if ($encryptedContent = openssl_encrypt($plainContent, 'AES-128-CFB', $passphrase, false, $iv)) { + if ( $encryptedContent = openssl_encrypt( $plainContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { return $encryptedContent; } else { - \OC_Log::write('Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR); + \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR ); return false; @@ -220,21 +215,21 @@ class Crypt /** * @brief Symmetrically decrypt a string + * @param $encryptedContent + * @param $iv + * @param $passphrase + * @throws \Exception * @return string decrypted file content */ - public static function decrypt($encryptedContent, $iv, $passphrase) - { + public static function decrypt( $encryptedContent, $iv, $passphrase ) { - if ($plainContent = openssl_decrypt($encryptedContent, 'AES-128-CFB', $passphrase, false, $iv)) { + if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { return $plainContent; - } else { - throw new \Exception('Encryption library: Decryption (symmetric) of content failed'); - - return false; + throw new \Exception( 'Encryption library: Decryption (symmetric) of content failed' ); } @@ -246,8 +241,7 @@ class Crypt * @param string $iv IV to be concatenated * @returns string concatenated content */ - public static function concatIv($content, $iv) - { + public static function concatIv( $content, $iv ) { $combined = $content . '00iv00' . $iv; @@ -260,17 +254,16 @@ class Crypt * @param string $catFile concatenated data to be split * @returns array keys: encrypted, iv */ - public static function splitIv($catFile) - { + public static function splitIv( $catFile ) { // Fetch encryption metadata from end of file - $meta = substr($catFile, -22); + $meta = substr( $catFile, -22 ); // Fetch IV from end of file - $iv = substr($meta, -16); + $iv = substr( $meta, -16 ); // Remove IV and IV identifier text to expose encrypted content - $encrypted = substr($catFile, 0, -22); + $encrypted = substr( $catFile, 0, -22 ); $split = array( 'encrypted' => $encrypted @@ -290,10 +283,9 @@ class Crypt * @note IV need not be specified, as it will be stored in the returned keyfile * and remain accessible therein. */ - public static function symmetricEncryptFileContent($plainContent, $passphrase = '') - { + public static function symmetricEncryptFileContent( $plainContent, $passphrase = '' ) { - if (!$plainContent) { + if ( !$plainContent ) { return false; @@ -301,18 +293,18 @@ class Crypt $iv = self::generateIv(); - if ($encryptedContent = self::encrypt($plainContent, $iv, $passphrase)) { + if ( $encryptedContent = self::encrypt( $plainContent, $iv, $passphrase ) ) { // Combine content to encrypt with IV identifier and actual IV - $catfile = self::concatIv($encryptedContent, $iv); + $catfile = self::concatIv( $encryptedContent, $iv ); - $padded = self::addPadding($catfile); + $padded = self::addPadding( $catfile ); return $padded; } else { - \OC_Log::write('Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR); + \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR ); return false; @@ -334,25 +326,26 @@ class Crypt * * This function decrypts a file */ - public static function symmetricDecryptFileContent($keyfileContent, $passphrase = '') - { + public static function symmetricDecryptFileContent( $keyfileContent, $passphrase = '' ) { - if (!$keyfileContent) { + if ( !$keyfileContent ) { - throw new \Exception('Encryption library: no data provided for decryption'); + throw new \Exception( 'Encryption library: no data provided for decryption' ); } // Remove padding - $noPadding = self::removePadding($keyfileContent); + $noPadding = self::removePadding( $keyfileContent ); // Split into enc data and catfile - $catfile = self::splitIv($noPadding); + $catfile = self::splitIv( $noPadding ); - if ($plainContent = self::decrypt($catfile['encrypted'], $catfile['iv'], $passphrase)) { + if ( $plainContent = self::decrypt( $catfile['encrypted'], $catfile['iv'], $passphrase ) ) { return $plainContent; + } else { + return false; } } @@ -365,16 +358,15 @@ class Crypt * * This function decrypts a file */ - public static function symmetricEncryptFileContentKeyfile($plainContent) - { + public static function symmetricEncryptFileContentKeyfile( $plainContent ) { $key = self::generateKey(); - if ($encryptedContent = self::symmetricEncryptFileContent($plainContent, $key)) { + if ( $encryptedContent = self::symmetricEncryptFileContent( $plainContent, $key ) ) { return array( - 'key' => $key - , 'encrypted' => $encryptedContent + 'key' => $key, + 'encrypted' => $encryptedContent ); } else { @@ -392,29 +384,28 @@ class Crypt * @returns array keys: keys (array, key = userId), data * @note symmetricDecryptFileContent() can decrypt files created using this method */ - public static function multiKeyEncrypt($plainContent, array $publicKeys) - { + public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { // openssl_seal returns false without errors if $plainContent // is empty, so trigger our own error - if (empty($plainContent)) { + if ( empty( $plainContent ) ) { - trigger_error("Cannot mutliKeyEncrypt empty plain content"); - throw new \Exception('Cannot mutliKeyEncrypt empty plain content'); + throw new \Exception( 'Cannot mutliKeyEncrypt empty plain content' ); } // Set empty vars to be set by openssl by reference $sealed = ''; $shareKeys = array(); + $mappedShareKeys = array(); - if (openssl_seal($plainContent, $sealed, $shareKeys, $publicKeys)) { + if ( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { $i = 0; // Ensure each shareKey is labelled with its // corresponding userId - foreach ($publicKeys as $userId => $publicKey) { + foreach ( $publicKeys as $userId => $publicKey ) { $mappedShareKeys[$userId] = $shareKeys[$i]; $i++; @@ -422,8 +413,8 @@ class Crypt } return array( - 'keys' => $mappedShareKeys - , 'data' => $sealed + 'keys' => $mappedShareKeys, + 'data' => $sealed ); } else { @@ -446,22 +437,21 @@ class Crypt * * This function decrypts a file */ - public static function multiKeyDecrypt($encryptedContent, $shareKey, $privateKey) - { + public static function multiKeyDecrypt( $encryptedContent, $shareKey, $privateKey ) { - if (!$encryptedContent) { + if ( !$encryptedContent ) { return false; } - if (openssl_open($encryptedContent, $plainContent, $shareKey, $privateKey)) { + if ( openssl_open( $encryptedContent, $plainContent, $shareKey, $privateKey ) ) { return $plainContent; } else { - \OC_Log::write('Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR); + \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); return false; @@ -473,10 +463,9 @@ class Crypt * @brief Asymetrically encrypt a string using a public key * @return string encrypted file */ - public static function keyEncrypt($plainContent, $publicKey) - { + public static function keyEncrypt( $plainContent, $publicKey ) { - openssl_public_encrypt($plainContent, $encryptedContent, $publicKey); + openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); return $encryptedContent; @@ -486,12 +475,11 @@ class Crypt * @brief Asymetrically decrypt a file using a private key * @return string decrypted file */ - public static function keyDecrypt($encryptedContent, $privatekey) - { + public static function keyDecrypt( $encryptedContent, $privatekey ) { - $result = @openssl_private_decrypt($encryptedContent, $plainContent, $privatekey); + $result = @openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); - if ($result) { + if ( $result ) { return $plainContent; } @@ -503,27 +491,26 @@ class Crypt * @brief Generates a pseudo random initialisation vector * @return String $iv generated IV */ - public static function generateIv() - { + public static function generateIv() { - if ($random = openssl_random_pseudo_bytes(12, $strong)) { + if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { - if (!$strong) { + if ( !$strong ) { // If OpenSSL indicates randomness is insecure, log error - \OC_Log::write('Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN); + \OC_Log::write( 'Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN ); } // We encode the iv purely for string manipulation // purposes - it gets decoded before use - $iv = base64_encode($random); + $iv = base64_encode( $random ); return $iv; } else { - throw new \Exception('Generating IV failed'); + throw new \Exception( 'Generating IV failed' ); } @@ -533,16 +520,15 @@ class Crypt * @brief Generate a pseudo random 1024kb ASCII key * @returns $key Generated key */ - public static function generateKey() - { + public static function generateKey() { // Generate key - if ($key = base64_encode(openssl_random_pseudo_bytes(183, $strong))) { + if ( $key = base64_encode( openssl_random_pseudo_bytes( 183, $strong ) ) ) { - if (!$strong) { + if ( !$strong ) { // If OpenSSL indicates randomness is insecure, log error - throw new \Exception('Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()'); + throw new \Exception( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); } @@ -563,12 +549,11 @@ class Crypt * * if the key is left out, the default handeler will be used */ - public static function getBlowfish($key = '') - { + public static function getBlowfish( $key = '' ) { - if ($key) { + if ( $key ) { - return new \Crypt_Blowfish($key); + return new \Crypt_Blowfish( $key ); } else { @@ -582,14 +567,13 @@ class Crypt * @param $passphrase * @return mixed */ - public static function legacyCreateKey($passphrase) - { + public static function legacyCreateKey( $passphrase ) { // Generate a random integer - $key = mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999); + $key = mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ); // Encrypt the key with the passphrase - $legacyEncKey = self::legacyEncrypt($key, $passphrase); + $legacyEncKey = self::legacyEncrypt( $key, $passphrase ); return $legacyEncKey; @@ -605,12 +589,11 @@ class Crypt * * This function encrypts an content */ - public static function legacyEncrypt($content, $passphrase = '') - { + public static function legacyEncrypt( $content, $passphrase = '' ) { - $bf = self::getBlowfish($passphrase); + $bf = self::getBlowfish( $passphrase ); - return $bf->encrypt($content); + return $bf->encrypt( $content ); } @@ -624,14 +607,13 @@ class Crypt * * This function decrypts an content */ - public static function legacyDecrypt($content, $passphrase = '') - { + public static function legacyDecrypt( $content, $passphrase = '' ) { - $bf = self::getBlowfish($passphrase); + $bf = self::getBlowfish( $passphrase ); - $decrypted = $bf->decrypt($content); + $decrypted = $bf->decrypt( $content ); - return rtrim($decrypted, "\0");; + return rtrim( $decrypted, "\0" );; } @@ -641,17 +623,16 @@ class Crypt * @param int $maxLength * @return string */ - private static function legacyBlockDecrypt($data, $key = '', $maxLength = 0) - { + private static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { $result = ''; - while (strlen($data)) { - $result .= self::legacyDecrypt(substr($data, 0, 8192), $key); - $data = substr($data, 8192); + while ( strlen( $data ) ) { + $result .= self::legacyDecrypt( substr( $data, 0, 8192 ), $key ); + $data = substr( $data, 8192 ); } - if ($maxLength > 0) { - return substr($result, 0, $maxLength); + if ( $maxLength > 0 ) { + return substr( $result, 0, $maxLength ); } else { - return rtrim($result, "\0"); + return rtrim( $result, "\0" ); } } @@ -663,18 +644,17 @@ class Crypt * @param $path * @return array */ - public static function legacyKeyRecryptKeyfile($legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path) - { + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { - $decrypted = self::legacyBlockDecrypt($legacyEncryptedContent, $legacyPassphrase); + $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile($decrypted); + $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt($cryptedData['key'], $publicKeys); + $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); - return array('data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys']); + return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); } diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index e4bf2c1226..43f573c16b 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -37,35 +37,32 @@ class Helper * @brief register share related hooks * */ - public static function registerShareHooks() - { + public static function registerShareHooks() { - \OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared'); - \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared'); - \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare'); + \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); + \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); + \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); } /** * @brief register user related hooks * */ - public static function registerUserHooks() - { + public static function registerUserHooks() { - \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); - \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); - \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); - \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); + \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); + \OCP\Util::connectHook( 'OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); + \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); + \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); } /** * @brief register filesystem related hooks * */ - public static function registerFilesystemHooks() - { + public static function registerFilesystemHooks() { - \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); + \OCP\Util::connectHook( 'OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename' ); } /** @@ -75,14 +72,13 @@ class Helper * @param string $password * @return bool */ - public static function setupUser($util, $password) - { + public static function setupUser( $util, $password ) { // Check files_encryption infrastructure is ready for action - if (!$util->ready()) { + if ( !$util->ready() ) { - \OC_Log::write('Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG); + \OC_Log::write( 'Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); - if (!$util->setupServerSide($password)) { + if ( !$util->setupServerSide( $password ) ) { return false; } } @@ -99,22 +95,21 @@ class Helper * @internal param string $password * @return bool */ - public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) - { - $view = new \OC\Files\View('/'); + public static function adminEnableRecovery( $recoveryKeyId, $recoveryPassword ) { + $view = new \OC\Files\View( '/' ); - if ($recoveryKeyId === null) { - $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); - \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); + if ( $recoveryKeyId === null ) { + $recoveryKeyId = 'recovery_' . substr( md5( time() ), 0, 8 ); + \OC_Appconfig::setValue( 'files_encryption', 'recoveryKeyId', $recoveryKeyId ); } - if (!$view->is_dir('/owncloud_private_key')) { - $view->mkdir('/owncloud_private_key'); + if ( !$view->is_dir( '/owncloud_private_key' ) ) { + $view->mkdir( '/owncloud_private_key' ); } if ( - (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") - || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) + ( !$view->file_exists( "/public-keys/" . $recoveryKeyId . ".public.key" ) + || !$view->file_exists( "/owncloud_private_key/" . $recoveryKeyId . ".private.key" ) ) ) { $keypair = \OCA\Encryption\Crypt::createKeypair(); @@ -123,37 +118,37 @@ class Helper // Save public key - if (!$view->is_dir('/public-keys')) { - $view->mkdir('/public-keys'); + if ( !$view->is_dir( '/public-keys' ) ) { + $view->mkdir( '/public-keys' ); } - $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); + $view->file_put_contents( '/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey'] ); // Encrypt private key empthy passphrase - $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword); + $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $recoveryPassword ); // Save private key - $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); + $view->file_put_contents( '/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey ); // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); - if (!$view->is_dir('/control-file')) { - $view->mkdir('/control-file'); + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt( "ownCloud", $keypair['publicKey'] ); + if ( !$view->is_dir( '/control-file' ) ) { + $view->mkdir( '/control-file' ); } - $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); + $view->file_put_contents( '/control-file/controlfile.enc', $encryptedControlData ); \OC_FileProxy::$enabled = true; // Set recoveryAdmin as enabled - \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); $return = true; } else { // get recovery key and check the password - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); - $return = $util->checkRecoveryPassword($_POST['recoveryPassword']); - if ($return) { - \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); + $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); + $return = $util->checkRecoveryPassword( $_POST['recoveryPassword'] ); + if ( $return ) { + \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); } } @@ -167,14 +162,13 @@ class Helper * @param $recoveryPassword * @return bool */ - public static function adminDisableRecovery($recoveryPassword) - { - $util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); - $return = $util->checkRecoveryPassword($recoveryPassword); + public static function adminDisableRecovery( $recoveryPassword ) { + $util = new Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); + $return = $util->checkRecoveryPassword( $recoveryPassword ); - if ($return) { + if ( $return ) { // Set recoveryAdmin as disabled - \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); + \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 0 ); } return $return; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index a8cbc19d40..aaa2e4ba1b 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -38,15 +38,14 @@ class Keymanager * @return string private key or false (hopefully) * @note the key returned by this method must be decrypted before use */ - public static function getPrivateKey(\OC_FilesystemView $view, $user) - { + public static function getPrivateKey( \OC_FilesystemView $view, $user ) { $path = '/' . $user . '/' . 'files_encryption' . '/' . $user . '.private.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $key = $view->file_get_contents($path); + $key = $view->file_get_contents( $path ); \OC_FileProxy::$enabled = $proxyStatus; @@ -59,13 +58,12 @@ class Keymanager * @param $userId * @return string public key or false */ - public static function getPublicKey(\OC_FilesystemView $view, $userId) - { + public static function getPublicKey( \OC_FilesystemView $view, $userId ) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_get_contents('/public-keys/' . $userId . '.public.key'); + $result = $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); \OC_FileProxy::$enabled = $proxyStatus; @@ -79,12 +77,11 @@ class Keymanager * @param $userId * @return array keys: privateKey, publicKey */ - public static function getUserKeys(\OC_FilesystemView $view, $userId) - { + public static function getUserKeys( \OC_FilesystemView $view, $userId ) { return array( - 'publicKey' => self::getPublicKey($view, $userId) - , 'privateKey' => self::getPrivateKey($view, $userId) + 'publicKey' => self::getPublicKey( $view, $userId ) + , 'privateKey' => self::getPrivateKey( $view, $userId ) ); } @@ -95,14 +92,13 @@ class Keymanager * @param array $userIds * @return array of public keys for the specified users */ - public static function getPublicKeys(\OC_FilesystemView $view, array $userIds) - { + public static function getPublicKeys( \OC_FilesystemView $view, array $userIds ) { $keys = array(); - foreach ($userIds as $userId) { + foreach ( $userIds as $userId ) { - $keys[$userId] = self::getPublicKey($view, $userId); + $keys[$userId] = self::getPublicKey( $view, $userId ); } @@ -122,41 +118,40 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setFileKey(\OC_FilesystemView $view, $path, $userId, $catfile) - { + public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util($view, \OCP\User::getUser()); - list($owner, $filename) = $util->getUidAndFilename($path); + $util = new Util( $view, \OCP\User::getUser() ); + list( $owner, $filename ) = $util->getUidAndFilename( $path ); $basePath = '/' . $owner . '/files_encryption/keyfiles'; - $targetPath = self::keySetPreparation($view, $filename, $basePath, $owner); + $targetPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); - if (!$view->is_dir($basePath . '/' . $targetPath)) { + if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { // create all parent folders - $info = pathinfo($basePath . '/' . $targetPath); - $keyfileFolderName = $view->getLocalFolder($info['dirname']); + $info = pathinfo( $basePath . '/' . $targetPath ); + $keyfileFolderName = $view->getLocalFolder( $info['dirname'] ); - if (!file_exists($keyfileFolderName)) { + if ( !file_exists( $keyfileFolderName ) ) { - mkdir($keyfileFolderName, 0750, true); + mkdir( $keyfileFolderName, 0750, true ); } } // try reusing key file if part file - if (self::isPartialFilePath($targetPath)) { + if ( self::isPartialFilePath( $targetPath ) ) { - $result = $view->file_put_contents($basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile); + $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath( $targetPath ) . '.key', $catfile ); } else { - $result = $view->file_put_contents($basePath . '/' . $targetPath . '.key', $catfile); + $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); } @@ -172,13 +167,12 @@ class Keymanager * @return string File path without .part extension * @note this is needed for reusing keys */ - public static function fixPartialFilePath($path) - { + public static function fixPartialFilePath( $path ) { - if (preg_match('/\.part$/', $path)) { + if ( preg_match( '/\.part$/', $path ) ) { - $newLength = strlen($path) - 5; - $fPath = substr($path, 0, $newLength); + $newLength = strlen( $path ) - 5; + $fPath = substr( $path, 0, $newLength ); return $fPath; @@ -195,10 +189,9 @@ class Keymanager * @param string $path Path that may identify a .part file * @return bool */ - public static function isPartialFilePath($path) - { + public static function isPartialFilePath( $path ) { - if (preg_match('/\.part$/', $path)) { + if ( preg_match( '/\.part$/', $path ) ) { return true; @@ -220,15 +213,14 @@ class Keymanager * @note The keyfile returned is asymmetrically encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getFileKey(\OC_FilesystemView $view, $userId, $filePath) - { + public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { // try reusing key file if part file - if (self::isPartialFilePath($filePath)) { + if ( self::isPartialFilePath( $filePath ) ) { - $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); + $result = self::getFileKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); - if ($result) { + if ( $result ) { return $result; @@ -236,19 +228,19 @@ class Keymanager } - $util = new Util($view, \OCP\User::getUser()); + $util = new Util( $view, \OCP\User::getUser() ); - list($owner, $filename) = $util->getUidAndFilename($filePath); - $filePath_f = ltrim($filename, '/'); + list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); + $filePath_f = ltrim( $filename, '/' ); $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ($view->file_exists($keyfilePath)) { + if ( $view->file_exists( $keyfilePath ) ) { - $result = $view->file_get_contents($keyfilePath); + $result = $view->file_get_contents( $keyfilePath ); } else { @@ -272,27 +264,26 @@ class Keymanager * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT * /data/admin/files/mydoc.txt */ - public static function deleteFileKey(\OC_FilesystemView $view, $userId, $path) - { + public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { - $trimmed = ltrim($path, '/'); + $trimmed = ltrim( $path, '/' ); $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; $result = false; - if ($view->is_dir($keyPath)) { + if ( $view->is_dir( $keyPath ) ) { - $result = $view->unlink($keyPath); + $result = $view->unlink( $keyPath ); - } else if ($view->file_exists($keyPath . '.key')) { + } else if ( $view->file_exists( $keyPath . '.key' ) ) { - $result = $view->unlink($keyPath . '.key'); + $result = $view->unlink( $keyPath . '.key' ); } - if (!$result) { + if ( !$result ) { - \OC_Log::write('Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR); + \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); } @@ -307,19 +298,19 @@ class Keymanager * @note Encryption of the private key must be performed by client code * as no encryption takes place here */ - public static function setPrivateKey($key) - { + public static function setPrivateKey( $key ) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/' . $user . '/files_encryption'); + $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if (!$view->file_exists('')) $view->mkdir(''); + if ( !$view->file_exists( '' ) ) + $view->mkdir( '' ); - $result = $view->file_put_contents($user . '.private.key', $key); + $result = $view->file_put_contents( $user . '.private.key', $key ); \OC_FileProxy::$enabled = $proxyStatus; @@ -340,22 +331,21 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setShareKey(\OC_FilesystemView $view, $path, $userId, $shareKey) - { + public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { // Here we need the currently logged in user, while userId can be a different user - $util = new Util($view, \OCP\User::getUser()); + $util = new Util( $view, \OCP\User::getUser() ); - list($owner, $filename) = $util->getUidAndFilename($path); + list( $owner, $filename ) = $util->getUidAndFilename( $path ); $basePath = '/' . $owner . '/files_encryption/share-keys'; - $shareKeyPath = self::keySetPreparation($view, $filename, $basePath, $owner); + $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); // try reusing key file if part file - if (self::isPartialFilePath($shareKeyPath)) { + if ( self::isPartialFilePath( $shareKeyPath ) ) { - $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; + $writePath = $basePath . '/' . self::fixPartialFilePath( $shareKeyPath ) . '.' . $userId . '.shareKey'; } else { @@ -366,12 +356,12 @@ class Keymanager $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_put_contents($writePath, $shareKey); + $result = $view->file_put_contents( $writePath, $shareKey ); \OC_FileProxy::$enabled = $proxyStatus; if ( - is_int($result) + is_int( $result ) && $result > 0 ) { @@ -392,17 +382,16 @@ class Keymanager * @param array $shareKeys * @return bool */ - public static function setShareKeys(\OC_FilesystemView $view, $path, array $shareKeys) - { + public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { // $shareKeys must be an array with the following format: // [userId] => [encrypted key] $result = true; - foreach ($shareKeys as $userId => $shareKey) { + foreach ( $shareKeys as $userId => $shareKey ) { - if (!self::setShareKey($view, $path, $userId, $shareKey)) { + if ( !self::setShareKey( $view, $path, $userId, $shareKey ) ) { // If any of the keys are not set, flag false $result = false; @@ -426,15 +415,14 @@ class Keymanager * @note The sharekey returned is encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getShareKey(\OC_FilesystemView $view, $userId, $filePath) - { + public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { // try reusing key file if part file - if (self::isPartialFilePath($filePath)) { + if ( self::isPartialFilePath( $filePath ) ) { - $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); + $result = self::getShareKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); - if ($result) { + if ( $result ) { return $result; @@ -446,14 +434,14 @@ class Keymanager \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util($view, \OCP\User::getUser()); + $util = new Util( $view, \OCP\User::getUser() ); - list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); + list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); + $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey' ); - if ($view->file_exists($shareKeyPath)) { + if ( $view->file_exists( $shareKeyPath ) ) { - $result = $view->file_get_contents($shareKeyPath); + $result = $view->file_get_contents( $shareKeyPath ); } else { @@ -473,16 +461,18 @@ class Keymanager * @param string $userId owner of the file * @param string $filePath path to the file, relative to the owners file dir */ - public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) - { + public static function delAllShareKeys( \OC_FilesystemView $view, $userId, $filePath ) { - if ($view->is_dir($userId . '/files/' . $filePath)) { - $view->unlink($userId . '/files_encryption/share-keys/' . $filePath); + if ( $view->is_dir( $userId . '/files/' . $filePath ) ) { + $view->unlink( $userId . '/files_encryption/share-keys/' . $filePath ); } else { - $localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $filePath); - $matches = glob(preg_quote($localKeyPath) . '*.shareKey'); - foreach ($matches as $ma) { - unlink($ma); + $localKeyPath = $view->getLocalFile( $userId . '/files_encryption/share-keys/' . $filePath ); + $matches = glob( preg_quote( $localKeyPath ) . '*.shareKey' ); + foreach ( $matches as $ma ) { + $result = unlink( $ma ); + if ( !$result ) { + \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $filePath . '"', \OC_Log::ERROR ); + } } } } @@ -490,30 +480,29 @@ class Keymanager /** * @brief Delete a single user's shareKey for a single file */ - public static function delShareKey(\OC_FilesystemView $view, $userIds, $filePath) - { + public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util($view, \OCP\User::getUser()); + $util = new Util( $view, \OCP\User::getUser() ); - list($owner, $filename) = $util->getUidAndFilename($filePath); + list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); - $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename); + $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename ); - if ($view->is_dir($shareKeyPath)) { + if ( $view->is_dir( $shareKeyPath ) ) { - $localPath = \OC\Files\Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); - self::recursiveDelShareKeys($localPath, $userIds); + $localPath = \OC\Files\Filesystem::normalizePath( $view->getLocalFolder( $shareKeyPath ) ); + self::recursiveDelShareKeys( $localPath, $userIds ); } else { - foreach ($userIds as $userId) { + foreach ( $userIds as $userId ) { - if (!$view->unlink($shareKeyPath . '.' . $userId . '.shareKey')) { - \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId . '.shareKey"', \OC_Log::ERROR); + if ( !$view->unlink( $shareKeyPath . '.' . $userId . '.shareKey' ) ) { + \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId . '.shareKey"', \OC_Log::ERROR ); } } @@ -528,45 +517,42 @@ class Keymanager * @param string $dir directory * @param array $userIds user ids for which the share keys should be deleted */ - private static function recursiveDelShareKeys($dir, $userIds) - { - foreach ($userIds as $userId) { - $completePath = $dir . '/.*' . '.' . $userId . '.shareKey'; - $matches = glob(preg_quote($dir) . '/*' . preg_quote('.' . $userId . '.shareKey')); + private static function recursiveDelShareKeys( $dir, $userIds ) { + foreach ( $userIds as $userId ) { + $matches = glob( preg_quote( $dir ) . '/*' . preg_quote( '.' . $userId . '.shareKey' ) ); } /** @var $matches array */ - foreach ($matches as $ma) { - if (!unlink($ma)) { - \OC_Log::write('Encryption library', 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR); + foreach ( $matches as $ma ) { + if ( !unlink( $ma ) ) { + \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR ); } } - $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR); - foreach ($subdirs as $subdir) { - self::recursiveDelShareKeys($subdir, $userIds); + $subdirs = $directories = glob( preg_quote( $dir ) . '/*', GLOB_ONLYDIR ); + foreach ( $subdirs as $subdir ) { + self::recursiveDelShareKeys( $subdir, $userIds ); } } /** * @brief Make preparations to vars and filesystem for saving a keyfile */ - public static function keySetPreparation(\OC_FilesystemView $view, $path, $basePath, $userId) - { + public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { - $targetPath = ltrim($path, '/'); + $targetPath = ltrim( $path, '/' ); - $path_parts = pathinfo($targetPath); + $path_parts = pathinfo( $targetPath ); // If the file resides within a subdirectory, create it if ( - isset($path_parts['dirname']) - && !$view->file_exists($basePath . '/' . $path_parts['dirname']) + isset( $path_parts['dirname'] ) + && !$view->file_exists( $basePath . '/' . $path_parts['dirname'] ) ) { - $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']); + $sub_dirs = explode( DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname'] ); $dir = ''; - foreach ($sub_dirs as $sub_dir) { + foreach ( $sub_dirs as $sub_dir ) { $dir .= '/' . $sub_dir; - if (!$view->is_dir($dir)) { - $view->mkdir($dir); + if ( !$view->is_dir( $dir ) ) { + $view->mkdir( $dir ); } } } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index cc9d239b25..eaaeae9b61 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -48,13 +48,12 @@ class Proxy extends \OC_FileProxy * * Tests if server side encryption is enabled, and file is allowed by blacklists */ - private static function shouldEncrypt($path) - { + private static function shouldEncrypt( $path ) { - if (is_null(self::$enableEncryption)) { + if ( is_null( self::$enableEncryption ) ) { if ( - \OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true') == 'true' + \OCP\Config::getAppValue( 'files_encryption', 'enable_encryption', 'true' ) == 'true' && Crypt::mode() == 'server' ) { @@ -68,27 +67,27 @@ class Proxy extends \OC_FileProxy } - if (!self::$enableEncryption) { + if ( !self::$enableEncryption ) { return false; } - if (is_null(self::$blackList)) { + if ( is_null( self::$blackList ) ) { - self::$blackList = explode(',', \OCP\Config::getAppValue('files_encryption', 'type_blacklist', '')); + self::$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); } - if (Crypt::isCatfileContent($path)) { + if ( Crypt::isCatfileContent( $path ) ) { return true; } - $extension = substr($path, strrpos($path, '.') + 1); + $extension = substr( $path, strrpos( $path, '.' ) + 1 ); - if (array_search($extension, self::$blackList) === false) { + if ( array_search( $extension, self::$blackList ) === false ) { return true; @@ -102,35 +101,34 @@ class Proxy extends \OC_FileProxy * @param $data * @return bool */ - public function preFile_put_contents($path, &$data) - { + public function preFile_put_contents( $path, &$data ) { - if (self::shouldEncrypt($path)) { + if ( self::shouldEncrypt( $path ) ) { // Stream put contents should have been converted to fopen - if (!is_resource($data)) { + if ( !is_resource( $data ) ) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView('/'); - $util = new Util($view, $userId); - $session = new Session($view); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); + $session = new Session( $view ); $privateKey = $session->getPrivateKey(); - $filePath = $util->stripUserFilesPath($path); + $filePath = $util->stripUserFilesPath( $path ); // Set the filesize for userland, before encrypting - $size = strlen($data); + $size = strlen( $data ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Check if there is an existing key we can reuse - if ($encKeyfile = Keymanager::getFileKey($view, $userId, $filePath)) { + if ( $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ) ) { // Fetch shareKey - $shareKey = Keymanager::getShareKey($view, $userId, $filePath); + $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); // Decrypt the keyfile - $plainKey = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); } else { @@ -140,37 +138,37 @@ class Proxy extends \OC_FileProxy } // Encrypt data - $encData = Crypt::symmetricEncryptFileContent($data, $plainKey); + $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ($view->file_exists($path)) { - $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $filePath, $userId); + if ( $view->file_exists( $path ) ) { + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); } else { $uniqueUserIds[] = $userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys($view, $uniqueUserIds); + $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt($plainKey, $publicKeys); + $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); // Save sharekeys to user folders - Keymanager::setShareKeys($view, $filePath, $multiEncrypted['keys']); + Keymanager::setShareKeys( $view, $filePath, $multiEncrypted['keys'] ); // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey($view, $filePath, $userId, $encKey); + Keymanager::setFileKey( $view, $filePath, $userId, $encKey ); // Replace plain content with encrypted content by reference $data = $encData; // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo($filePath, array('encrypted' => true, 'size' => strlen($data), 'unencrypted_size' => $size), ''); + \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted' => true, 'size' => strlen( $data ), 'unencrypted_size' => $size ), '' ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; @@ -186,52 +184,51 @@ class Proxy extends \OC_FileProxy * @param string $path Path of file from which has been read * @param string $data Data that has been read from file */ - public function postFile_get_contents($path, $data) - { + public function postFile_get_contents( $path, $data ) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView('/'); - $util = new Util($view, $userId); + $view = new \OC_FilesystemView( '/' ); + $util = new Util( $view, $userId ); - $relPath = $util->stripUserFilesPath($path); + $relPath = $util->stripUserFilesPath( $path ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // init session - $session = new Session($view); + $session = new Session( $view ); // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfileContent($data) + && Crypt::isCatfileContent( $data ) ) { - $privateKey = $session->getPrivateKey($userId); + $privateKey = $session->getPrivateKey( $userId ); // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey($view, $userId, $relPath); + $encKeyfile = Keymanager::getFileKey( $view, $userId, $relPath ); // Attempt to fetch the user's shareKey - $shareKey = Keymanager::getShareKey($view, $userId, $relPath); + $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); // Decrypt keyfile with shareKey - $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); - $plainData = Crypt::symmetricDecryptFileContent($data, $plainKeyfile); + $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); } elseif ( Crypt::mode() == 'server' - && isset($_SESSION['legacyenckey']) - && Crypt::isEncryptedMeta($path) + && isset( $_SESSION['legacyenckey'] ) + && Crypt::isEncryptedMeta( $path ) ) { - $plainData = Crypt::legacyDecrypt($data, $session->getLegacyKey()); + $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); } \OC_FileProxy::$enabled = $proxyStatus; - if (!isset($plainData)) { + if ( !isset( $plainData ) ) { $plainData = $data; @@ -244,11 +241,10 @@ class Proxy extends \OC_FileProxy /** * @brief When a file is deleted, remove its keyfile also */ - public function preUnlink($path) - { + public function preUnlink( $path ) { // let the trashbin handle this - if (\OCP\App::isEnabled('files_trashbin')) { + if ( \OCP\App::isEnabled( 'files_trashbin' ) ) { return true; } @@ -256,29 +252,24 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView('/'); + $view = new \OC_FilesystemView( '/' ); $userId = \OCP\USER::getUser(); - $util = new Util($view, $userId); + $util = new Util( $view, $userId ); // Format path to be relative to user files dir - $relPath = $util->stripUserFilesPath($path); + $relPath = $util->stripUserFilesPath( $path ); - list($owner, $ownerPath) = $util->getUidAndFilename($relPath); + list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); // Delete keyfile & shareKey so it isn't orphaned - if ( - !( - Keymanager::deleteFileKey($view, $owner, $ownerPath) - && Keymanager::delAllShareKeys($view, $owner, $ownerPath) - ) - ) { - - \OC_Log::write('Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR); - + if ( !Keymanager::deleteFileKey( $view, $owner, $ownerPath ) ) { + \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR ); } + Keymanager::delAllShareKeys( $view, $owner, $ownerPath ); + \OC_FileProxy::$enabled = $proxyStatus; // If we don't return true then file delete will fail; better @@ -291,9 +282,8 @@ class Proxy extends \OC_FileProxy * @param $path * @return bool */ - public function postTouch($path) - { - $this->handleFile($path); + public function postTouch( $path ) { + $this->handleFile( $path ); return true; } @@ -303,21 +293,20 @@ class Proxy extends \OC_FileProxy * @param $result * @return resource */ - public function postFopen($path, &$result) - { + public function postFopen( $path, &$result ) { - if (!$result) { + if ( !$result ) { return $result; } // Reformat path for use with OC_FSV - $path_split = explode('/', $path); - $path_f = implode('/', array_slice($path_split, 3)); + $path_split = explode( '/', $path ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted - if ($path_split[2] == 'cache') { + if ( count($path_split) >= 2 && $path_split[2] == 'cache' ) { return $result; } @@ -325,31 +314,31 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $meta = stream_get_meta_data($result); + $meta = stream_get_meta_data( $result ); - $view = new \OC_FilesystemView(''); + $view = new \OC_FilesystemView( '' ); - $util = new Util($view, \OCP\USER::getUser()); + $util = new Util( $view, \OCP\USER::getUser() ); // If file is already encrypted, decrypt using crypto protocol if ( Crypt::mode() == 'server' - && $util->isEncryptedPath($path) + && $util->isEncryptedPath( $path ) ) { // Close the original encrypted file - fclose($result); + fclose( $result ); // Open the file using the crypto stream wrapper // protocol and let it do the decryption work instead - $result = fopen('crypt://' . $path_f, $meta['mode']); + $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); } elseif ( - self::shouldEncrypt($path) + self::shouldEncrypt( $path ) and $meta ['mode'] != 'r' and $meta['mode'] != 'rb' ) { - $result = fopen('crypt://' . $path_f, $meta['mode']); + $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); } // Re-enable the proxy @@ -364,18 +353,17 @@ class Proxy extends \OC_FileProxy * @param $data * @return array */ - public function postGetFileInfo($path, $data) - { + public function postGetFileInfo( $path, $data ) { // if path is a folder do nothing - if (is_array($data) && array_key_exists('size', $data)) { + if ( is_array( $data ) && array_key_exists( 'size', $data ) ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get file size - $data['size'] = self::postFileSize($path, $data['size']); + $data['size'] = self::postFileSize( $path, $data['size'] ); // Re-enable the proxy \OC_FileProxy::$enabled = $proxyStatus; @@ -389,52 +377,51 @@ class Proxy extends \OC_FileProxy * @param $size * @return bool */ - public function postFileSize($path, $size) - { + public function postFileSize( $path, $size ) { - $view = new \OC_FilesystemView('/'); + $view = new \OC_FilesystemView( '/' ); // if path is a folder do nothing - if ($view->is_dir($path)) { + if ( $view->is_dir( $path ) ) { return $size; } // Reformat path for use with OC_FSV - $path_split = explode('/', $path); - $path_f = implode('/', array_slice($path_split, 3)); + $path_split = explode( '/', $path ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); // if path is empty we cannot resolve anything - if (empty($path_f)) { + if ( empty( $path_f ) ) { return $size; } $fileInfo = false; // get file info from database/cache if not .part file - if(!Keymanager::isPartialFilePath($path)) { - $fileInfo = $view->getFileInfo($path); + if ( !Keymanager::isPartialFilePath( $path ) ) { + $fileInfo = $view->getFileInfo( $path ); } // if file is encrypted return real file size - if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { + if ( is_array( $fileInfo ) && $fileInfo['encrypted'] === true ) { $size = $fileInfo['unencrypted_size']; } else { // self healing if file was removed from file cache - if (!is_array($fileInfo)) { + if ( !is_array( $fileInfo ) ) { $fileInfo = array(); } $userId = \OCP\User::getUser(); - $util = new Util($view, $userId); - $fixSize = $util->getFileSize($path); - if ($fixSize > 0) { + $util = new Util( $view, $userId ); + $fixSize = $util->getFileSize( $path ); + if ( $fixSize > 0 ) { $size = $fixSize; $fileInfo['encrypted'] = true; $fileInfo['unencrypted_size'] = $size; // put file info if not .part file - if(!Keymanager::isPartialFilePath($path_f)) { - $view->putFileInfo($path, $fileInfo); + if ( !Keymanager::isPartialFilePath( $path_f ) ) { + $view->putFileInfo( $path, $fileInfo ); } } @@ -445,33 +432,32 @@ class Proxy extends \OC_FileProxy /** * @param $path */ - public function handleFile($path) - { + public function handleFile( $path ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView('/'); - $session = new Session($view); + $view = new \OC_FilesystemView( '/' ); + $session = new Session( $view ); $userId = \OCP\User::getUser(); - $util = new Util($view, $userId); + $util = new Util( $view, $userId ); // Reformat path for use with OC_FSV - $path_split = explode('/', $path); - $path_f = implode('/', array_slice($path_split, 3)); + $path_split = explode( '/', $path ); + $path_f = implode( '/', array_slice( $path_split, 3 ) ); // only if file is on 'files' folder fix file size and sharing - if ($path_split[2] == 'files' && $util->fixFileSize($path)) { + if ( count($path_split) >= 2 && $path_split[2] == 'files' && $util->fixFileSize( $path ) ) { // get sharing app state $sharingEnabled = \OCP\Share::isEnabled(); // get users - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); + $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path_f ); // update sharing-keys - $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); + $util->setSharedFileKeyfiles( $session, $usersSharing, $path_f ); } \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 86f56e5676..2ddad0a15d 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -37,27 +37,26 @@ class Session * * @note The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ - public function __construct($view) - { + public function __construct( $view ) { $this->view = $view; - if (!$this->view->is_dir('owncloud_private_key')) { + if ( !$this->view->is_dir( 'owncloud_private_key' ) ) { - $this->view->mkdir('owncloud_private_key'); + $this->view->mkdir( 'owncloud_private_key' ); } - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); - if ($publicShareKeyId === null) { - $publicShareKeyId = 'pubShare_' . substr(md5(time()), 0, 8); - \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); + if ( $publicShareKeyId === null ) { + $publicShareKeyId = 'pubShare_' . substr( md5( time() ), 0, 8 ); + \OC_Appconfig::setValue( 'files_encryption', 'publicShareKeyId', $publicShareKeyId ); } if ( - !$this->view->file_exists("/public-keys/" . $publicShareKeyId . ".public.key") - || !$this->view->file_exists("/owncloud_private_key/" . $publicShareKeyId . ".private.key") + !$this->view->file_exists( "/public-keys/" . $publicShareKeyId . ".public.key" ) + || !$this->view->file_exists( "/owncloud_private_key/" . $publicShareKeyId . ".private.key" ) ) { $keypair = Crypt::createKeypair(); @@ -68,32 +67,33 @@ class Session // Save public key - if (!$view->is_dir('/public-keys')) { - $view->mkdir('/public-keys'); + if ( !$view->is_dir( '/public-keys' ) ) { + $view->mkdir( '/public-keys' ); } - $this->view->file_put_contents('/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey']); + $this->view->file_put_contents( '/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey'] ); - // Encrypt private key empthy passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], ''); + // Encrypt private key empty passphrase + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); // Save private key - $this->view->file_put_contents('/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey); + $this->view->file_put_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey ); \OC_FileProxy::$enabled = $proxyStatus; } - if (\OCP\USER::getUser() === false || - (isset($_GET['service']) && $_GET['service'] == 'files' && - isset($_GET['t']))) { + if ( \OCP\USER::getUser() === false || + ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && + isset( $_GET['t'] ) ) + ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents('/owncloud_private_key/' . $publicShareKeyId . '.private.key'); - $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, ''); - $this->setPrivateKey($privateKey); + $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key' ); + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); + $this->setPrivateKey( $privateKey ); \OC_FileProxy::$enabled = $proxyStatus; } @@ -104,8 +104,7 @@ class Session * @param string $privateKey * @return bool */ - public function setPrivateKey($privateKey) - { + public function setPrivateKey( $privateKey ) { $_SESSION['privateKey'] = $privateKey; @@ -118,12 +117,11 @@ class Session * @returns string $privateKey The user's plaintext private key * */ - public function getPrivateKey() - { + public function getPrivateKey() { if ( - isset($_SESSION['privateKey']) - && !empty($_SESSION['privateKey']) + isset( $_SESSION['privateKey'] ) + && !empty( $_SESSION['privateKey'] ) ) { return $_SESSION['privateKey']; @@ -141,8 +139,7 @@ class Session * @param $legacyKey * @return bool */ - public function setLegacyKey($legacyKey) - { + public function setLegacyKey( $legacyKey ) { $_SESSION['legacyKey'] = $legacyKey; @@ -154,12 +151,11 @@ class Session * @returns string $legacyKey The user's plaintext legacy key * */ - public function getLegacyKey() - { + public function getLegacyKey() { if ( - isset($_SESSION['legacyKey']) - && !empty($_SESSION['legacyKey']) + isset( $_SESSION['legacyKey'] ) + && !empty( $_SESSION['legacyKey'] ) ) { return $_SESSION['legacyKey']; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index b143b62827..fa9df02f08 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -77,19 +77,18 @@ class Stream * @param $opened_path * @return bool */ - public function stream_open($path, $mode, $options, &$opened_path) - { + public function stream_open( $path, $mode, $options, &$opened_path ) { - if (!isset($this->rootView)) { - $this->rootView = new \OC_FilesystemView('/'); + if ( !isset( $this->rootView ) ) { + $this->rootView = new \OC_FilesystemView( '/' ); } - $util = new Util($this->rootView, \OCP\USER::getUser()); + $util = new Util( $this->rootView, \OCP\USER::getUser() ); $this->userId = $util->getUserId(); // Strip identifier text from path, this gives us the path relative to data//files - $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace('crypt://', '', $path)); + $this->relPath = \OC\Files\Filesystem::normalizePath( str_replace( 'crypt://', '', $path ) ); // rawPath is relative to the data directory $this->rawPath = $util->getUserFilesDir() . $this->relPath; @@ -111,26 +110,25 @@ class Stream } else { - $this->size = $this->rootView->filesize($this->rawPath, $mode); + $this->size = $this->rootView->filesize( $this->rawPath, $mode ); } - $this->handle = $this->rootView->fopen($this->rawPath, $mode); + $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); \OC_FileProxy::$enabled = $proxyStatus; - if (!is_resource($this->handle)) { + if ( !is_resource( $this->handle ) ) { - \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); + \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR ); } else { - $this->meta = stream_get_meta_data($this->handle); + $this->meta = stream_get_meta_data( $this->handle ); } - - return is_resource($this->handle); + return is_resource( $this->handle ); } @@ -138,12 +136,11 @@ class Stream * @param $offset * @param int $whence */ - public function stream_seek($offset, $whence = SEEK_SET) - { + public function stream_seek( $offset, $whence = SEEK_SET ) { $this->flush(); - fseek($this->handle, $offset, $whence); + fseek( $this->handle, $offset, $whence ); } @@ -152,37 +149,36 @@ class Stream * @return bool|string * @throws \Exception */ - public function stream_read($count) - { + public function stream_read( $count ) { $this->writeCache = ''; - if ($count != 8192) { + if ( $count != 8192 ) { // $count will always be 8192 https://bugs.php.net/bug.php?id=21641 // This makes this function a lot simpler, but will break this class if the above 'bug' gets 'fixed' - \OCP\Util::writeLog('files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); + \OCP\Util::writeLog( 'files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL ); die(); } // Get the data from the file handle - $data = fread($this->handle, 8192); + $data = fread( $this->handle, 8192 ); $result = ''; - if (strlen($data)) { + if ( strlen( $data ) ) { - if (!$this->getKey()) { + if ( !$this->getKey() ) { // Error! We don't have a key to decrypt the file with - throw new \Exception('Encryption key not found for "' . $this->rawPath . '" during attempted read via stream'); + throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream' ); } // Decrypt data - $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); + $result = Crypt::symmetricDecryptFileContent( $data, $this->plainKey ); } @@ -196,11 +192,10 @@ class Stream * @param string $key key to use for encryption * @return string encrypted data on success, false on failure */ - public function preWriteEncrypt($plainData, $key) - { + public function preWriteEncrypt( $plainData, $key ) { // Encrypt data to 'catfile', which includes IV - if ($encrypted = Crypt::symmetricEncryptFileContent($plainData, $key)) { + if ( $encrypted = Crypt::symmetricEncryptFileContent( $plainData, $key ) ) { return $encrypted; @@ -217,11 +212,10 @@ class Stream * @internal param bool $generate if true, a new key will be generated if none can be found * @return bool true on key found and set, false on key not found and new key generated and set */ - public function getKey() - { + public function getKey() { // Check if key is already set - if (isset($this->plainKey) && isset($this->encKeyfile)) { + if ( isset( $this->plainKey ) && isset( $this->encKeyfile ) ) { return true; @@ -229,18 +223,18 @@ class Stream // Fetch and decrypt keyfile // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->userId, $this->relPath); + $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); // If a keyfile already exists - if ($this->encKeyfile) { + if ( $this->encKeyfile ) { - $session = new Session($this->rootView); + $session = new Session( $this->rootView ); - $privateKey = $session->getPrivateKey($this->userId); + $privateKey = $session->getPrivateKey( $this->userId ); - $shareKey = Keymanager::getShareKey($this->rootView, $this->userId, $this->relPath); + $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); - $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $privateKey); + $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); return true; @@ -261,8 +255,7 @@ class Stream * @note Padding is added to each encrypted block to ensure that the resulting block is exactly 8192 bytes. This is removed during stream_read * @note PHP automatically updates the file pointer after writing data to reflect it's length. There is generally no need to update the poitner manually using fseek */ - public function stream_write($data) - { + public function stream_write( $data ) { // Disable the file proxies so that encryption is not // automatically attempted when the file is written to disk - @@ -272,16 +265,16 @@ class Stream \OC_FileProxy::$enabled = false; // Get the length of the unencrypted data that we are handling - $length = strlen($data); + $length = strlen( $data ); // Find out where we are up to in the writing of data to the // file - $pointer = ftell($this->handle); + $pointer = ftell( $this->handle ); // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile - if (!$this->getKey()) { + if ( !$this->getKey() ) { $this->plainKey = Crypt::generateKey(); @@ -289,27 +282,27 @@ class Stream // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block - if ($this->writeCache) { + if ( $this->writeCache ) { // Concat writeCache to start of $data $data = $this->writeCache . $data; - // Clear the write cache, ready for resuse - it has been + // Clear the write cache, ready for reuse - it has been // flushed and its old contents processed $this->writeCache = ''; } - // While there still remains somed data to be processed & written - while (strlen($data) > 0) { + // While there still remains some data to be processed & written + while ( strlen( $data ) > 0 ) { - // Remaining length for this iteration, not of the + // Remaining length for this iteration, not of the // entire file (may be greater than 8192 bytes) - $remainingLength = strlen($data); + $remainingLength = strlen( $data ); - // If data remaining to be written is less than the + // If data remaining to be written is less than the // size of 1 6126 byte block - if ($remainingLength < 6126) { + if ( $remainingLength < 6126 ) { // Set writeCache to contents of $data // The writeCache will be carried over to the @@ -327,25 +320,25 @@ class Stream } else { // Read the chunk from the start of $data - $chunk = substr($data, 0, 6126); + $chunk = substr( $data, 0, 6126 ); - $encrypted = $this->preWriteEncrypt($chunk, $this->plainKey); + $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes - fwrite($this->handle, $encrypted); + fwrite( $this->handle, $encrypted ); // Remove the chunk we just processed from // $data, leaving only unprocessed data in $data // var, for handling on the next round - $data = substr($data, 6126); + $data = substr( $data, 6126 ); } } - $this->size = max($this->size, $pointer + $length); + $this->size = max( $this->size, $pointer + $length ); $this->unencryptedSize += $length; \OC_FileProxy::$enabled = $proxyStatus; @@ -360,18 +353,17 @@ class Stream * @param $arg1 * @param $arg2 */ - public function stream_set_option($option, $arg1, $arg2) - { + public function stream_set_option( $option, $arg1, $arg2 ) { $return = false; - switch ($option) { + switch ( $option ) { case STREAM_OPTION_BLOCKING: - $return = stream_set_blocking($this->handle, $arg1); + $return = stream_set_blocking( $this->handle, $arg1 ); break; case STREAM_OPTION_READ_TIMEOUT: - $return = stream_set_timeout($this->handle, $arg1, $arg2); + $return = stream_set_timeout( $this->handle, $arg1, $arg2 ); break; case STREAM_OPTION_WRITE_BUFFER: - $return = stream_set_write_buffer($this->handle, $arg1); + $return = stream_set_write_buffer( $this->handle, $arg1 ); } return $return; @@ -380,26 +372,23 @@ class Stream /** * @return array */ - public function stream_stat() - { - return fstat($this->handle); + public function stream_stat() { + return fstat( $this->handle ); } /** * @param $mode */ - public function stream_lock($mode) - { - return flock($this->handle, $mode); + public function stream_lock( $mode ) { + return flock( $this->handle, $mode ); } /** * @return bool */ - public function stream_flush() - { + public function stream_flush() { - return fflush($this->handle); + return fflush( $this->handle ); // Not a typo: http://php.net/manual/en/function.fflush.php } @@ -407,22 +396,20 @@ class Stream /** * @return bool */ - public function stream_eof() - { - return feof($this->handle); + public function stream_eof() { + return feof( $this->handle ); } - private function flush() - { + private function flush() { - if ($this->writeCache) { + if ( $this->writeCache ) { // Set keyfile property for file in question $this->getKey(); - $encrypted = $this->preWriteEncrypt($this->writeCache, $this->plainKey); + $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->plainKey ); - fwrite($this->handle, $encrypted); + fwrite( $this->handle, $encrypted ); $this->writeCache = ''; @@ -433,8 +420,7 @@ class Stream /** * @return bool */ - public function stream_close() - { + public function stream_close() { $this->flush(); @@ -448,33 +434,33 @@ class Stream \OC_FileProxy::$enabled = false; // Fetch user's public key - $this->publicKey = Keymanager::getPublicKey($this->rootView, $this->userId); + $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); // Check if OC sharing api is enabled $sharingEnabled = \OCP\Share::isEnabled(); - $util = new Util($this->rootView, $this->userId); + $util = new Util( $this->rootView, $this->userId ); // Get all users sharing the file includes current user - $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $this->relPath, $this->userId); + $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId ); // Fetch public keys for all sharing users - $publicKeys = Keymanager::getPublicKeys($this->rootView, $uniqueUserIds); + $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); // Encrypt enc key for all sharing users - $this->encKeyfiles = Crypt::multiKeyEncrypt($this->plainKey, $publicKeys); + $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); - $view = new \OC_FilesystemView('/'); + $view = new \OC_FilesystemView( '/' ); // Save the new encrypted file key - Keymanager::setFileKey($this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data']); + Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); // Save the sharekeys - Keymanager::setShareKeys($view, $this->relPath, $this->encKeyfiles['keys']); + Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); // get file info - $fileInfo = $view->getFileInfo($this->rawPath); - if (!is_array($fileInfo)) { + $fileInfo = $view->getFileInfo( $this->rawPath ); + if ( !is_array( $fileInfo ) ) { $fileInfo = array(); } @@ -487,10 +473,10 @@ class Stream $fileInfo['unencrypted_size'] = $this->unencryptedSize; // set fileinfo - $view->putFileInfo($this->rawPath, $fileInfo); + $view->putFileInfo( $this->rawPath, $fileInfo ); } - return fclose($this->handle); + return fclose( $this->handle ); } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index d42fe9953b..2980aa94e0 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -117,25 +117,25 @@ class Util * @param $userId * @param bool $client */ - public function __construct(\OC_FilesystemView $view, $userId, $client = false) - { + public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { $this->view = $view; $this->userId = $userId; $this->client = $client; $this->isPublic = false; - $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + $this->publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); + $this->recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // if we are anonymous/public - if ($this->userId === false || - (isset($_GET['service']) && $_GET['service'] == 'files' && - isset($_GET['t']))) { + if ( $this->userId === false || + ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && + isset( $_GET['t'] ) ) + ) { $this->userId = $this->publicShareKeyId; // only handle for files_sharing app - if ($GLOBALS['app'] === 'files_sharing') { + if ( $GLOBALS['app'] === 'files_sharing' ) { $this->userDir = '/' . $GLOBALS['fileOwner']; $this->fileFolderName = 'files'; $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? @@ -164,15 +164,14 @@ class Util /** * @return bool */ - public function ready() - { + public function ready() { if ( - !$this->view->file_exists($this->encryptionDir) - or !$this->view->file_exists($this->keyfilesPath) - or !$this->view->file_exists($this->shareKeysPath) - or !$this->view->file_exists($this->publicKeyPath) - or !$this->view->file_exists($this->privateKeyPath) + !$this->view->file_exists( $this->encryptionDir ) + or !$this->view->file_exists( $this->keyfilesPath ) + or !$this->view->file_exists( $this->shareKeysPath ) + or !$this->view->file_exists( $this->publicKeyPath ) + or !$this->view->file_exists( $this->privateKeyPath ) ) { return false; @@ -189,8 +188,7 @@ class Util * @brief Sets up user folders and keys for serverside encryption * @param string $passphrase passphrase to encrypt server-stored private key with */ - public function setupServerSide($passphrase = null) - { + public function setupServerSide( $passphrase = null ) { // Set directories to check / create $setUpDirs = array( @@ -203,11 +201,11 @@ class Util ); // Check / create all necessary dirs - foreach ($setUpDirs as $dirPath) { + foreach ( $setUpDirs as $dirPath ) { - if (!$this->view->file_exists($dirPath)) { + if ( !$this->view->file_exists( $dirPath ) ) { - $this->view->mkdir($dirPath); + $this->view->mkdir( $dirPath ); } @@ -216,8 +214,8 @@ class Util // Create user keypair // we should never override a keyfile if ( - !$this->view->file_exists($this->publicKeyPath) - && !$this->view->file_exists($this->privateKeyPath) + !$this->view->file_exists( $this->publicKeyPath ) + && !$this->view->file_exists( $this->privateKeyPath ) ) { // Generate keypair @@ -226,35 +224,35 @@ class Util \OC_FileProxy::$enabled = false; // Save public key - $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); + $this->view->file_put_contents( $this->publicKeyPath, $keypair['publicKey'] ); // Encrypt private key with user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $passphrase ); // Save private key - $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); + $this->view->file_put_contents( $this->privateKeyPath, $encryptedPrivateKey ); \OC_FileProxy::$enabled = true; } else { // check if public-key exists but private-key is missing - if($this->view->file_exists($this->publicKeyPath) && !$this->view->file_exists($this->privateKeyPath)) { - \OC_Log::write('Encryption library', 'public key exists but private key is missing for "' . $this->userId . '"', \OC_Log::FATAL); + if ( $this->view->file_exists( $this->publicKeyPath ) && !$this->view->file_exists( $this->privateKeyPath ) ) { + \OC_Log::write( 'Encryption library', 'public key exists but private key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); return false; - } else if(!$this->view->file_exists($this->publicKeyPath) && $this->view->file_exists($this->privateKeyPath)) { - \OC_Log::write('Encryption library', 'private key exists but public key is missing for "' . $this->userId . '"', \OC_Log::FATAL); + } else if ( !$this->view->file_exists( $this->publicKeyPath ) && $this->view->file_exists( $this->privateKeyPath ) ) { + \OC_Log::write( 'Encryption library', 'private key exists but public key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); return false; } } // If there's no record for this user's encryption preferences - if (false === $this->recoveryEnabledForUser()) { + if ( false === $this->recoveryEnabledForUser() ) { // create database configuration $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array($this->userId, 'server-side', 0); - $query = \OCP\DB::prepare($sql); - $query->execute($args); + $args = array( $this->userId, 'server-side', 0 ); + $query = \OCP\DB::prepare( $sql ); + $query->execute( $args ); } @@ -265,8 +263,7 @@ class Util /** * @return string */ - public function getPublicShareKeyId() - { + public function getPublicShareKeyId() { return $this->publicShareKeyId; } @@ -277,8 +274,7 @@ class Util * @note If records are not being returned, check for a hidden space * at the start of the uid in db */ - public function recoveryEnabledForUser() - { + public function recoveryEnabledForUser() { $sql = 'SELECT recovery_enabled @@ -287,22 +283,22 @@ class Util WHERE uid = ?'; - $args = array($this->userId); + $args = array( $this->userId ); - $query = \OCP\DB::prepare($sql); + $query = \OCP\DB::prepare( $sql ); - $result = $query->execute($args); + $result = $query->execute( $args ); $recoveryEnabled = array(); - while ($row = $result->fetchRow()) { + while ( $row = $result->fetchRow() ) { $recoveryEnabled[] = $row['recovery_enabled']; } // If no record is found - if (empty($recoveryEnabled)) { + if ( empty( $recoveryEnabled ) ) { return false; @@ -320,19 +316,18 @@ class Util * @param bool $enabled Whether to enable or disable recovery * @return bool */ - public function setRecoveryForUser($enabled) - { + public function setRecoveryForUser( $enabled ) { $recoveryStatus = $this->recoveryEnabledForUser(); // If a record for this user already exists, update it - if (false === $recoveryStatus) { + if ( false === $recoveryStatus ) { $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array($this->userId, 'server-side', $enabled); + $args = array( $this->userId, 'server-side', $enabled ); // Create a new record instead } else { @@ -344,13 +339,13 @@ class Util WHERE uid = ?'; - $args = array($enabled, $this->userId); + $args = array( $enabled, $this->userId ); } - $query = \OCP\DB::prepare($sql); + $query = \OCP\DB::prepare( $sql ); - if ($query->execute($args)) { + if ( $query->execute( $args ) ) { return true; @@ -369,47 +364,46 @@ class Util * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findEncFiles($directory, &$found = false) - { + public function findEncFiles( $directory, &$found = false ) { // Disable proxy - we don't want files to be decrypted before // we handle them \OC_FileProxy::$enabled = false; - if($found == false) { - $found = array('plain' => array(), 'encrypted' => array(), 'legacy' => array()); + if ( $found == false ) { + $found = array( 'plain' => array(), 'encrypted' => array(), 'legacy' => array() ); } if ( - $this->view->is_dir($directory) - && $handle = $this->view->opendir($directory) + $this->view->is_dir( $directory ) + && $handle = $this->view->opendir( $directory ) ) { - while (false !== ($file = readdir($handle))) { + while ( false !== ( $file = readdir( $handle ) ) ) { if ( $file != "." && $file != ".." ) { - $filePath = $directory . '/' . $this->view->getRelativePath('/' . $file); - $relPath = $this->stripUserFilesPath($filePath); + $filePath = $directory . '/' . $this->view->getRelativePath( '/' . $file ); + $relPath = $this->stripUserFilesPath( $filePath ); // If the path is a directory, search // its contents - if ($this->view->is_dir($filePath)) { + if ( $this->view->is_dir( $filePath ) ) { - $this->findEncFiles($filePath, $found); + $this->findEncFiles( $filePath, $found ); // If the path is a file, determine // its encryption status - } elseif ($this->view->is_file($filePath)) { + } elseif ( $this->view->is_file( $filePath ) ) { // Disable proxies again, some- // where they got re-enabled :/ \OC_FileProxy::$enabled = false; - $data = $this->view->file_get_contents($filePath); + $data = $this->view->file_get_contents( $filePath ); // If the file is encrypted // NOTE: If the userId is @@ -419,22 +413,22 @@ class Util // scanning every file like this // will eat server resources :( if ( - Keymanager::getFileKey($this->view, $this->userId, $relPath) - && Crypt::isCatfileContent($data) + Keymanager::getFileKey( $this->view, $this->userId, $relPath ) + && Crypt::isCatfileContent( $data ) ) { - $found['encrypted'][] = array('name' => $file, 'path' => $filePath); + $found['encrypted'][] = array( 'name' => $file, 'path' => $filePath ); // If the file uses old // encryption system - } elseif (Crypt::isLegacyEncryptedContent($this->tail($filePath, 3), $relPath)) { + } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { - $found['legacy'][] = array('name' => $file, 'path' => $filePath); + $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); // If the file is not encrypted } else { - $found['plain'][] = array('name' => $file, 'path' => $relPath); + $found['plain'][] = array( 'name' => $file, 'path' => $relPath ); } @@ -446,7 +440,7 @@ class Util \OC_FileProxy::$enabled = true; - if (empty($found)) { + if ( empty( $found ) ) { return false; @@ -469,39 +463,38 @@ class Util * @note Safe to use on large files; does not read entire file to memory * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php */ - public function tail($filename, $numLines) - { + public function tail( $filename, $numLines ) { \OC_FileProxy::$enabled = false; $text = ''; $pos = -1; - $handle = $this->view->fopen($filename, 'r'); + $handle = $this->view->fopen( $filename, 'r' ); - while ($numLines > 0) { + while ( $numLines > 0 ) { --$pos; - if (fseek($handle, $pos, SEEK_END) !== 0) { + if ( fseek( $handle, $pos, SEEK_END ) !== 0 ) { - rewind($handle); + rewind( $handle ); $numLines = 0; - } elseif (fgetc($handle) === "\n") { + } elseif ( fgetc( $handle ) === "\n" ) { --$numLines; } - $block_size = (-$pos) % 8192; - if ($block_size === 0 || $numLines === 0) { + $block_size = ( -$pos ) % 8192; + if ( $block_size === 0 || $numLines === 0 ) { - $text = fread($handle, ($block_size === 0 ? 8192 : $block_size)) . $text; + $text = fread( $handle, ( $block_size === 0 ? 8192 : $block_size ) ) . $text; } } - fclose($handle); + fclose( $handle ); \OC_FileProxy::$enabled = true; @@ -513,8 +506,7 @@ class Util * @param $path * @return boolean */ - public function isEncryptedPath($path) - { + public function isEncryptedPath( $path ) { // Disable encryption proxy so data retrieved is in its // original form @@ -523,15 +515,15 @@ class Util // we only need 24 byte from the last chunk $data = ''; - $handle = $this->view->fopen($path, 'r'); - if (!fseek($handle, -24, SEEK_END)) { - $data = fgets($handle); + $handle = $this->view->fopen( $path, 'r' ); + if ( !fseek( $handle, -24, SEEK_END ) ) { + $data = fgets( $handle ); } // re-enable proxy \OC_FileProxy::$enabled = $proxyStatus; - return Crypt::isCatfileContent($data); + return Crypt::isCatfileContent( $data ); } @@ -540,8 +532,7 @@ class Util * @param string $path absolute path * @return bool */ - public function getFileSize($path) - { + public function getFileSize( $path ) { $result = 0; @@ -550,33 +541,33 @@ class Util \OC_FileProxy::$enabled = false; // Reformat path for use with OC_FSV - $pathSplit = explode('/', $path); - $pathRelative = implode('/', array_slice($pathSplit, 3)); + $pathSplit = explode( '/', $path ); + $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); - if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { + if ( $pathSplit[2] == 'files' && $this->view->file_exists( $path ) && $this->isEncryptedPath( $path ) ) { // get the size from filesystem - $fullPath = $this->view->getLocalFile($path); - $size = filesize($fullPath); + $fullPath = $this->view->getLocalFile( $path ); + $size = filesize( $fullPath ); // calculate last chunk nr - $lastChunckNr = floor($size / 8192); + $lastChunkNr = floor( $size / 8192 ); // open stream - $stream = fopen('crypt://' . $pathRelative, "r"); + $stream = fopen( 'crypt://' . $pathRelative, "r" ); - if (is_resource($stream)) { + if ( is_resource( $stream ) ) { // calculate last chunk position - $lastChunckPos = ($lastChunckNr * 8192); + $lastChunckPos = ( $lastChunkNr * 8192 ); // seek to end - fseek($stream, $lastChunckPos); + fseek( $stream, $lastChunckPos ); // get the content of the last chunk - $lastChunkContent = fread($stream, 8192); + $lastChunkContent = fread( $stream, 8192 ); // calc the real file size with the size of the last chunk - $realSize = (($lastChunckNr * 6126) + strlen($lastChunkContent)); + $realSize = ( ( $lastChunkNr * 6126 ) + strlen( $lastChunkContent ) ); // store file size $result = $realSize; @@ -593,8 +584,7 @@ class Util * @param $path absolute path * @return true / false if file is encrypted */ - public function fixFileSize($path) - { + public function fixFileSize( $path ) { $result = false; @@ -602,18 +592,18 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $realSize = $this->getFileSize($path); + $realSize = $this->getFileSize( $path ); - if ($realSize > 0) { + if ( $realSize > 0 ) { - $cached = $this->view->getFileInfo($path); + $cached = $this->view->getFileInfo( $path ); $cached['encrypted'] = true; // set the size $cached['unencrypted_size'] = $realSize; // put file info - $this->view->putFileInfo($path, $cached); + $this->view->putFileInfo( $path, $cached ); $result = true; @@ -628,13 +618,12 @@ class Util * @brief Format a path to be relative to the /user/files/ directory * @note e.g. turns '/admin/files/test.txt' into 'test.txt' */ - public function stripUserFilesPath($path) - { + public function stripUserFilesPath( $path ) { - $trimmed = ltrim($path, '/'); - $split = explode('/', $trimmed); - $sliced = array_slice($split, 2); - $relPath = implode('/', $sliced); + $trimmed = ltrim( $path, '/' ); + $split = explode( '/', $trimmed ); + $sliced = array_slice( $split, 2 ); + $relPath = implode( '/', $sliced ); return $relPath; @@ -644,13 +633,12 @@ class Util * @param $path * @return bool */ - public function isSharedPath($path) - { + public function isSharedPath( $path ) { - $trimmed = ltrim($path, '/'); - $split = explode('/', $trimmed); + $trimmed = ltrim( $path, '/' ); + $split = explode( '/', $trimmed ); - if ($split[2] == "Shared") { + if ( $split[2] == "Shared" ) { return true; @@ -670,16 +658,15 @@ class Util * @return bool * @note Encryption is recursive */ - public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) - { + public function encryptAll( $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { - if ($found = $this->findEncFiles($dirPath)) { + if ( $found = $this->findEncFiles( $dirPath ) ) { // Disable proxy to prevent file being encrypted twice \OC_FileProxy::$enabled = false; // Encrypt unencrypted files - foreach ($found['plain'] as $plainFile) { + foreach ( $found['plain'] as $plainFile ) { //relative to data//file $relPath = $plainFile['path']; @@ -688,80 +675,80 @@ class Util $rawPath = $this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen($rawPath, 'rb'); + $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen($rawPath . '.plaintmp', 'wb'); + $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); // Move plain file to a temporary location - stream_copy_to_stream($plainHandle1, $plainHandle2); + stream_copy_to_stream( $plainHandle1, $plainHandle2 ); // Close access to original file // $this->view->fclose( $plainHandle1 ); // not implemented in view{} // Delete original plain file so we can rename enc file later - $this->view->unlink($rawPath); + $this->view->unlink( $rawPath ); // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen('crypt://' . $relPath, 'wb'); + $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); // Save data from plain stream to new encrypted file via enc stream // NOTE: Stream{} will be invoked for handling // the encryption, and should handle all keys // and their generation etc. automatically - stream_copy_to_stream($plainHandle2, $encHandle); + stream_copy_to_stream( $plainHandle2, $encHandle ); // get file size - $size = $this->view->filesize($rawPath . '.plaintmp'); + $size = $this->view->filesize( $rawPath . '.plaintmp' ); // Delete temporary plain copy of file - $this->view->unlink($rawPath . '.plaintmp'); + $this->view->unlink( $rawPath . '.plaintmp' ); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo($plainFile['path'], array('encrypted' => true, 'size' => $size, 'unencrypted_size' => $size)); + \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); } // Encrypt legacy encrypted files if ( - !empty($legacyPassphrase) - && !empty($newPassphrase) + !empty( $legacyPassphrase ) + && !empty( $newPassphrase ) ) { - foreach ($found['legacy'] as $legacyFile) { + foreach ( $found['legacy'] as $legacyFile ) { // Fetch data from file - $legacyData = $this->view->file_get_contents($legacyFile['path']); + $legacyData = $this->view->file_get_contents( $legacyFile['path'] ); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ($this->view->file_exists($legacyFile['path'])) { - $uniqueUserIds = $this->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); + if ( $this->view->file_exists( $legacyFile['path'] ) ) { + $uniqueUserIds = $this->getSharingUsersArray( $sharingEnabled, $legacyFile['path'], $this->userId ); } else { $uniqueUserIds[] = $this->userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); + $publicKeys = Keymanager::getPublicKeys( $this->view, $uniqueUserIds ); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path']); + $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path'] ); $rawPath = $legacyFile['path']; - $relPath = $this->stripUserFilesPath($rawPath); + $relPath = $this->stripUserFilesPath( $rawPath ); // Save keyfile - Keymanager::setFileKey($this->view, $relPath, $this->userId, $recrypted['filekey']); + Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['filekey'] ); // Save sharekeys to user folders - Keymanager::setShareKeys($this->view, $relPath, $recrypted['sharekeys']); + Keymanager::setShareKeys( $this->view, $relPath, $recrypted['sharekeys'] ); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents($rawPath, $recrypted['data']); + $this->view->file_put_contents( $rawPath, $recrypted['data'] ); - $size = strlen($recrypted['data']); + $size = strlen( $recrypted['data'] ); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo($rawPath, array('encrypted' => true, 'size' => $size), ''); + \OC\Files\Filesystem::putFileInfo( $rawPath, array( 'encrypted' => true, 'size' => $size ), '' ); } } @@ -781,10 +768,9 @@ class Util * @param string $pathName Name of the directory to return the path of * @return string path */ - public function getPath($pathName) - { + public function getPath( $pathName ) { - switch ($pathName) { + switch ( $pathName ) { case 'publicKeyDir': @@ -815,9 +801,10 @@ class Util return $this->privateKeyPath; break; - } + return false; + } /** @@ -825,18 +812,17 @@ class Util * @param int $fileId id of the file * @return string path of the file */ - public static function fileIdToPath($fileId) - { + public static function fileIdToPath( $fileId ) { - $query = \OC_DB::prepare('SELECT `path`' + $query = \OC_DB::prepare( 'SELECT `path`' . ' FROM `*PREFIX*filecache`' - . ' WHERE `fileid` = ?'); + . ' WHERE `fileid` = ?' ); - $result = $query->execute(array($fileId)); + $result = $query->execute( array( $fileId ) ); $row = $result->fetchRow(); - return substr($row['path'], 5); + return substr( $row['path'], 5 ); } @@ -845,16 +831,15 @@ class Util * @param array $unfilteredUsers users to be checked for sharing readiness * @return multi-dimensional array. keys: ready, unready */ - public function filterShareReadyUsers($unfilteredUsers) - { + public function filterShareReadyUsers( $unfilteredUsers ) { // This array will collect the filtered IDs $readyIds = $unreadyIds = array(); // Loop through users and create array of UIDs that need new keyfiles - foreach ($unfilteredUsers as $user) { + foreach ( $unfilteredUsers as $user ) { - $util = new Util($this->view, $user); + $util = new Util( $this->view, $user ); // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) @@ -874,15 +859,15 @@ class Util // Log warning; we can't do necessary setup here // because we don't have the user passphrase - \OC_Log::write('Encryption library', '"' . $user . '" is not setup for encryption', \OC_Log::WARN); + \OC_Log::write( 'Encryption library', '"' . $user . '" is not setup for encryption', \OC_Log::WARN ); } } return array( - 'ready' => $readyIds - , 'unready' => $unreadyIds + 'ready' => $readyIds, + 'unready' => $unreadyIds ); } @@ -897,32 +882,31 @@ class Util * @note This was used when 2 types of encryption for keyfiles was used, * but now we've switched to exclusively using openssl_seal() */ - public function decryptUnknownKeyfile($filePath, $fileOwner, $privateKey) - { + public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { // Get the encrypted keyfile // NOTE: the keyfile format depends on how it was encrypted! At // this stage we don't know how it was encrypted - $encKeyfile = Keymanager::getFileKey($this->view, $this->userId, $filePath); + $encKeyfile = Keymanager::getFileKey( $this->view, $this->userId, $filePath ); // We need to decrypt the keyfile // Has the file been shared yet? if ( $this->userId == $fileOwner - && !Keymanager::getShareKey($this->view, $this->userId, $filePath) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true + && !Keymanager::getShareKey( $this->view, $this->userId, $filePath ) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true ) { // The file has no shareKey, and its keyfile must be // decrypted conventionally - $plainKeyfile = Crypt::keyDecrypt($encKeyfile, $privateKey); + $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); } else { // The file has a shareKey and must use it for decryption - $shareKey = Keymanager::getShareKey($this->view, $this->userId, $filePath); + $shareKey = Keymanager::getShareKey( $this->view, $this->userId, $filePath ); - $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); } @@ -937,23 +921,22 @@ class Util * @param string $filePath path of the file to be shared * @return bool */ - public function setSharedFileKeyfiles(Session $session, array $users, $filePath) - { + public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { // Make sure users are capable of sharing - $filteredUids = $this->filterShareReadyUsers($users); + $filteredUids = $this->filterShareReadyUsers( $users ); // If we're attempting to share to unready users - if (!empty($filteredUids['unready'])) { + if ( !empty( $filteredUids['unready'] ) ) { - \OC_Log::write('Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"' . print_r($filteredUids['unready'], 1), \OC_Log::WARN); + \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"' . print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); return false; } // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); // Note proxy status then disable it $proxyStatus = \OC_FileProxy::$enabled; @@ -962,22 +945,22 @@ class Util // Get the current users's private key for decrypting existing keyfile $privateKey = $session->getPrivateKey(); - $fileOwner = \OC\Files\Filesystem::getOwner($filePath); + $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); // Decrypt keyfile - $plainKeyfile = $this->decryptUnknownKeyfile($filePath, $fileOwner, $privateKey); + $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); // Re-enc keyfile to (additional) sharekeys - $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); + $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory if ( - !Keymanager::setFileKey($this->view, $filePath, $fileOwner, $multiEncKey['data']) - || !Keymanager::setShareKeys($this->view, $filePath, $multiEncKey['keys']) + !Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) + || !Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) ) { - \OC_Log::write('Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR); + \OC_Log::write( 'Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR ); return false; @@ -993,12 +976,11 @@ class Util * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle */ - public function getSharingUsersArray($sharingEnabled, $filePath, $currentUserId = false) - { + public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { // Check if key recovery is enabled if ( - \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled') + \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) && $this->recoveryEnabledForUser() ) { @@ -1011,14 +993,15 @@ class Util } // Make sure that a share key is generated for the owner too - list($owner, $ownerPath) = $this->getUidAndFilename($filePath); + list( $owner, $ownerPath ) = $this->getUidAndFilename( $filePath ); - if ($sharingEnabled) { + $userIds = array(); + if ( $sharingEnabled ) { // Find out who, if anyone, is sharing the file - $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, true, true, true); + $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner, true, true, true ); $userIds = $result['users']; - if ($result['public']) { + if ( $result['public'] ) { $userIds[] = $this->publicShareKeyId; } @@ -1026,10 +1009,10 @@ class Util // If recovery is enabled, add the // Admin UID to list of users to share to - if ($recoveryEnabled) { + if ( $recoveryEnabled ) { // Find recoveryAdmin user ID - $recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + $recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // Add recoveryAdmin to list of users sharing $userIds[] = $recoveryKeyId; @@ -1037,14 +1020,14 @@ class Util } // add current user if given - if ($currentUserId != false) { + if ( $currentUserId != false ) { $userIds[] = $currentUserId; } // Remove duplicate UIDs - $uniqueUserIds = array_unique($userIds); + $uniqueUserIds = array_unique( $userIds ); return $uniqueUserIds; @@ -1055,8 +1038,7 @@ class Util * @param $status * @return bool */ - public function setMigrationStatus($status) - { + public function setMigrationStatus( $status ) { $sql = 'UPDATE *PREFIX*encryption @@ -1065,11 +1047,11 @@ class Util WHERE uid = ?'; - $args = array($status, $this->userId); + $args = array( $status, $this->userId ); - $query = \OCP\DB::prepare($sql); + $query = \OCP\DB::prepare( $sql ); - if ($query->execute($args)) { + if ( $query->execute( $args ) ) { return true; @@ -1087,8 +1069,7 @@ class Util * @note If records are not being returned, check for a hidden space * at the start of the uid in db */ - public function getMigrationStatus() - { + public function getMigrationStatus() { $sql = 'SELECT migration_status @@ -1097,22 +1078,21 @@ class Util WHERE uid = ?'; - $args = array($this->userId); + $args = array( $this->userId ); - $query = \OCP\DB::prepare($sql); + $query = \OCP\DB::prepare( $sql ); - $result = $query->execute($args); + $result = $query->execute( $args ); $migrationStatus = array(); - while ($row = $result->fetchRow()) { - + $row = $result->fetchRow(); + if($row) { $migrationStatus[] = $row['migration_status']; - } // If no record is found - if (empty($migrationStatus)) { + if ( empty( $migrationStatus ) ) { return false; @@ -1132,83 +1112,74 @@ class Util * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename($path) - { + public function getUidAndFilename( $path ) { - $view = new \OC\Files\View($this->userFilesDir); - $fileOwnerUid = $view->getOwner($path); + $view = new \OC\Files\View( $this->userFilesDir ); + $fileOwnerUid = $view->getOwner( $path ); // handle public access - if ($this->isPublic) { + if ( $this->isPublic ) { $filename = $path; $fileOwnerUid = $GLOBALS['fileOwner']; - return array($fileOwnerUid, $filename); + return array( $fileOwnerUid, $filename ); } else { // Check that UID is valid - if (!\OCP\User::userExists($fileOwnerUid)) { - throw new \Exception('Could not find owner (UID = "' . var_export($fileOwnerUid, 1) . '") of file "' . $path . '"'); + if ( !\OCP\User::userExists( $fileOwnerUid ) ) { + throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); } // NOTE: Bah, this dependency should be elsewhere - \OC\Files\Filesystem::initMountPoints($fileOwnerUid); + \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); // If the file owner is the currently logged in user - if ($fileOwnerUid == $this->userId) { + if ( $fileOwnerUid == $this->userId ) { // Assume the path supplied is correct $filename = $path; } else { - $info = $view->getFileInfo($path); - $ownerView = new \OC\Files\View('/' . $fileOwnerUid . '/files'); + $info = $view->getFileInfo( $path ); + $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); // Fetch real file path from DB - $filename = $ownerView->getPath($info['fileid']); // TODO: Check that this returns a path without including the user data dir + $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir } - return array($fileOwnerUid, $filename); + return array( $fileOwnerUid, $filename ); } } /** - * @brief geo recursively through a dir and collect all files and sub files. + * @brief go recursively through a dir and collect all files and sub files. * @param string $dir relative to the users files folder * @return array with list of files relative to the users files folder */ - public function getAllFiles($dir) - { + public function getAllFiles( $dir ) { $result = array(); - $content = $this->view->getDirectoryContent($this->userFilesDir . $dir); + $content = $this->view->getDirectoryContent( $this->userFilesDir . $dir ); // handling for re shared folders - $path_split = explode('/', $dir); - $shared = ''; + $path_split = explode( '/', $dir ); - if ($path_split[1] === 'Shared') { + foreach ( $content as $c ) { - $shared = '/Shared'; - - } - - foreach ($content as $c) { - - $sharedPart = $path_split[sizeof($path_split) - 1]; - $targetPathSplit = array_reverse(explode('/', $c['path'])); + $sharedPart = $path_split[sizeof( $path_split ) - 1]; + $targetPathSplit = array_reverse( explode( '/', $c['path'] ) ); $path = ''; // rebuild path - foreach ($targetPathSplit as $pathPart) { + foreach ( $targetPathSplit as $pathPart ) { - if ($pathPart !== $sharedPart) { + if ( $pathPart !== $sharedPart ) { $path = '/' . $pathPart . $path; @@ -1222,9 +1193,9 @@ class Util $path = $dir . $path; - if ($c['type'] === "dir") { + if ( $c['type'] === "dir" ) { - $result = array_merge($result, $this->getAllFiles($path)); + $result = array_merge( $result, $this->getAllFiles( $path ) ); } else { @@ -1242,14 +1213,13 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getShareParent($id) - { + public static function getShareParent( $id ) { - $query = \OC_DB::prepare('SELECT `file_target`, `item_type`' + $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?'); + . ' WHERE `id` = ?' ); - $result = $query->execute(array($id)); + $result = $query->execute( array( $id ) ); $row = $result->fetchRow(); @@ -1262,14 +1232,13 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getParentFromShare($id) - { + public static function getParentFromShare( $id ) { - $query = \OC_DB::prepare('SELECT `parent`' + $query = \OC_DB::prepare( 'SELECT `parent`' . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?'); + . ' WHERE `id` = ?' ); - $result = $query->execute(array($id)); + $result = $query->execute( array( $id ) ); $row = $result->fetchRow(); @@ -1283,22 +1252,23 @@ class Util * @internal param int $Id of a share * @return string owner */ - public function getOwnerFromSharedFile($id) - { + public function getOwnerFromSharedFile( $id ) { - $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $source = $query->execute(array($id))->fetchRow(); + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $source = $query->execute( array( $id ) )->fetchRow(); - if (isset($source['parent'])) { + $fileOwner = false; + + if ( isset( $source['parent'] ) ) { $parent = $source['parent']; - while (isset($parent)) { + while ( isset( $parent ) ) { - $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $item = $query->execute(array($parent))->fetchRow(); + $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $item = $query->execute( array( $parent ) )->fetchRow(); - if (isset($item['parent'])) { + if ( isset( $item['parent'] ) ) { $parent = $item['parent']; @@ -1324,16 +1294,14 @@ class Util /** * @return string */ - public function getUserId() - { + public function getUserId() { return $this->userId; } /** * @return string */ - public function getUserFilesDir() - { + public function getUserFilesDir() { return $this->userFilesDir; } @@ -1341,8 +1309,7 @@ class Util * @param $password * @return bool */ - public function checkRecoveryPassword($password) - { + public function checkRecoveryPassword( $password ) { $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; $pathControlData = '/control-file/controlfile.enc'; @@ -1350,16 +1317,16 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $recoveryKey = $this->view->file_get_contents($pathKey); + $recoveryKey = $this->view->file_get_contents( $pathKey ); - $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent($recoveryKey, $password); + $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent( $recoveryKey, $password ); - $controlData = $this->view->file_get_contents($pathControlData); - $decryptedControlData = Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); + $controlData = $this->view->file_get_contents( $pathControlData ); + $decryptedControlData = Crypt::keyDecrypt( $controlData, $decryptedRecoveryKey ); \OC_FileProxy::$enabled = $proxyStatus; - if ($decryptedControlData === 'ownCloud') { + if ( $decryptedControlData === 'ownCloud' ) { return true; } @@ -1369,27 +1336,26 @@ class Util /** * @return string */ - public function getRecoveryKeyId() - { + public function getRecoveryKeyId() { return $this->recoveryKeyId; } /** * @brief add recovery key to all encrypted files */ - public function addRecoveryKeys($path = '/') - { - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); - foreach ($dirContent as $item) { - $filePath = substr($item['path'], 25); - if ($item['type'] == 'dir') { - $this->addRecoveryKeys($filePath . '/'); + public function addRecoveryKeys( $path = '/' ) { + $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); + foreach ( $dirContent as $item ) { + // get relative path from files_encryption/keyfiles/ + $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); + if ( $item['type'] == 'dir' ) { + $this->addRecoveryKeys( $filePath . '/' ); } else { - $session = new Session(new \OC_FilesystemView('/')); + $session = new Session( new \OC_FilesystemView( '/' ) ); $sharingEnabled = \OCP\Share::isEnabled(); - $file = substr($filePath, 0, -4); - $usersSharing = $this->getSharingUsersArray($sharingEnabled, $file); - $this->setSharedFileKeyfiles($session, $usersSharing, $file); + $file = substr( $filePath, 0, -4 ); + $usersSharing = $this->getSharingUsersArray( $sharingEnabled, $file ); + $this->setSharedFileKeyfiles( $session, $usersSharing, $file ); } } } @@ -1397,16 +1363,16 @@ class Util /** * @brief remove recovery key to all encrypted files */ - public function removeRecoveryKeys($path = '/') - { - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); - foreach ($dirContent as $item) { - $filePath = substr($item['path'], 25); - if ($item['type'] == 'dir') { - $this->removeRecoveryKeys($filePath . '/'); + public function removeRecoveryKeys( $path = '/' ) { + $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); + foreach ( $dirContent as $item ) { + // get relative path from files_encryption/keyfiles + $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); + if ( $item['type'] == 'dir' ) { + $this->removeRecoveryKeys( $filePath . '/' ); } else { - $file = substr($filePath, 0, -4); - $this->view->unlink($this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey'); + $file = substr( $filePath, 0, -4 ); + $this->view->unlink( $this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey' ); } } } @@ -1416,40 +1382,39 @@ class Util * @param string $file * @param string $privateKey recovery key to decrypt the file */ - private function recoverFile($file, $privateKey) - { + private function recoverFile( $file, $privateKey ) { $sharingEnabled = \OCP\Share::isEnabled(); // Find out who, if anyone, is sharing the file - if ($sharingEnabled) { - $result = \OCP\Share::getUsersSharingFile($file, $this->userId, true, true, true); + if ( $sharingEnabled ) { + $result = \OCP\Share::getUsersSharingFile( $file, $this->userId, true, true, true ); $userIds = $result['users']; $userIds[] = $this->recoveryKeyId; - if ($result['public']) { + if ( $result['public'] ) { $userIds[] = $this->publicShareKeyId; } } else { - $userIds = array($this->userId, $this->recoveryKeyId); + $userIds = array( $this->userId, $this->recoveryKeyId ); } - $filteredUids = $this->filterShareReadyUsers($userIds); + $filteredUids = $this->filterShareReadyUsers( $userIds ); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //decrypt file key - $encKeyfile = $this->view->file_get_contents($this->keyfilesPath . $file . ".key"); - $shareKey = $this->view->file_get_contents($this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey"); - $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $encKeyfile = $this->view->file_get_contents( $this->keyfilesPath . $file . ".key" ); + $shareKey = $this->view->file_get_contents( $this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey" ); + $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); // encrypt file key again to all users, this time with the new public key for the recovered use - $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); - $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); + $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); + $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); // write new keys to filesystem TDOO! - $this->view->file_put_contents($this->keyfilesPath . $file . '.key', $multiEncKey['data']); - foreach ($multiEncKey['keys'] as $userId => $shareKey) { + $this->view->file_put_contents( $this->keyfilesPath . $file . '.key', $multiEncKey['data'] ); + foreach ( $multiEncKey['keys'] as $userId => $shareKey ) { $shareKeyPath = $this->shareKeysPath . $file . '.' . $userId . '.shareKey'; - $this->view->file_put_contents($shareKeyPath, $shareKey); + $this->view->file_put_contents( $shareKeyPath, $shareKey ); } // Return proxy to original status @@ -1461,16 +1426,15 @@ class Util * @param string $path to look for files keys * @param string $privateKey private recovery key which is used to decrypt the files */ - private function recoverAllFiles($path, $privateKey) - { - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); - foreach ($dirContent as $item) { - $filePath = substr($item['path'], 25); - if ($item['type'] == 'dir') { - $this->recoverAllFiles($filePath . '/', $privateKey); + private function recoverAllFiles( $path, $privateKey ) { + $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); + foreach ( $dirContent as $item ) { + $filePath = substr( $item['path'], 25 ); + if ( $item['type'] == 'dir' ) { + $this->recoverAllFiles( $filePath . '/', $privateKey ); } else { - $file = substr($filePath, 0, -4); - $this->recoverFile($file, $privateKey); + $file = substr( $filePath, 0, -4 ); + $this->recoverFile( $file, $privateKey ); } } } @@ -1479,19 +1443,18 @@ class Util * @brief recover users files in case of password lost * @param string $recoveryPassword */ - public function recoverUsersFiles($recoveryPassword) - { + public function recoverUsersFiles( $recoveryPassword ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents('/owncloud_private_key/' . $this->recoveryKeyId . '.private.key'); - $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $recoveryPassword); + $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key' ); + $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $recoveryPassword ); \OC_FileProxy::$enabled = $proxyStatus; - $this->recoverAllFiles('/', $privateKey); + $this->recoverAllFiles( '/', $privateKey ); } } diff --git a/apps/files_encryption/settings-admin.php b/apps/files_encryption/settings-admin.php index 66efc58436..6cc5b997fd 100644 --- a/apps/files_encryption/settings-admin.php +++ b/apps/files_encryption/settings-admin.php @@ -15,7 +15,6 @@ $view = new OC_FilesystemView( '' ); $recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ); -$tmpl->assign( 'encryption_mode', \OC_Appconfig::getValue( 'files_encryption', 'mode', 'none' ) ); $tmpl->assign( 'recoveryEnabled', $recoveryAdminEnabled ); \OCP\Util::addscript( 'files_encryption', 'settings-admin' ); diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index ada8ffbc31..57f7f58452 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -26,4 +26,3 @@ $tmpl->assign( 'recoveryEnabledForUser', $recoveryEnabledForUser ); return $tmpl->fetchPage(); -return null; diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 14e8ce960a..04d6e79179 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -29,18 +29,5 @@


          - From b47729c5fc6586f6fc5f51cbca967b1ced76b24e Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Fri, 24 May 2013 02:02:43 +0200 Subject: [PATCH 314/575] [tx-robot] updated from transifex --- apps/files/l10n/el.php | 1 + apps/files/l10n/ru_RU.php | 15 +++++- apps/files_external/l10n/ru_RU.php | 21 +-------- apps/files_sharing/l10n/ru_RU.php | 8 +--- apps/files_trashbin/l10n/ru_RU.php | 4 +- apps/user_ldap/l10n/de_DE.php | 1 + core/l10n/ar.php | 4 +- core/l10n/bg_BG.php | 2 +- core/l10n/bn_BD.php | 4 +- core/l10n/ca.php | 4 +- core/l10n/cs_CZ.php | 4 +- core/l10n/cy_GB.php | 4 +- core/l10n/da.php | 4 +- core/l10n/de.php | 4 +- core/l10n/de_DE.php | 4 +- core/l10n/el.php | 4 +- core/l10n/eo.php | 4 +- core/l10n/es.php | 4 +- core/l10n/es_AR.php | 4 +- core/l10n/et_EE.php | 4 +- core/l10n/eu.php | 4 +- core/l10n/fa.php | 4 +- core/l10n/fi_FI.php | 6 ++- core/l10n/fr.php | 4 +- core/l10n/gl.php | 4 +- core/l10n/he.php | 4 +- core/l10n/hr.php | 4 +- core/l10n/hu_HU.php | 4 +- core/l10n/id.php | 4 +- core/l10n/is.php | 4 +- core/l10n/it.php | 5 +- core/l10n/ja_JP.php | 4 +- core/l10n/ka_GE.php | 4 +- core/l10n/ko.php | 4 +- core/l10n/lb.php | 4 +- core/l10n/lt_LT.php | 4 +- core/l10n/lv.php | 4 +- core/l10n/mk.php | 4 +- core/l10n/ms_MY.php | 2 +- core/l10n/my_MM.php | 4 +- core/l10n/nb_NO.php | 4 +- core/l10n/nl.php | 4 +- core/l10n/nn_NO.php | 4 +- core/l10n/oc.php | 4 +- core/l10n/pl.php | 4 +- core/l10n/pt_BR.php | 4 +- core/l10n/pt_PT.php | 4 +- core/l10n/ro.php | 4 +- core/l10n/ru.php | 4 +- core/l10n/ru_RU.php | 5 +- core/l10n/si_LK.php | 4 +- core/l10n/sk_SK.php | 4 +- core/l10n/sl.php | 4 +- core/l10n/sq.php | 4 +- core/l10n/sr.php | 4 +- core/l10n/sv.php | 4 +- core/l10n/ta_LK.php | 4 +- core/l10n/te.php | 2 +- core/l10n/th_TH.php | 4 +- core/l10n/tr.php | 4 +- core/l10n/ug.php | 2 +- core/l10n/uk.php | 4 +- core/l10n/ur_PK.php | 4 +- core/l10n/vi.php | 4 +- core/l10n/zh_CN.GB2312.php | 4 +- core/l10n/zh_CN.php | 4 +- core/l10n/zh_HK.php | 2 +- core/l10n/zh_TW.php | 4 +- l10n/af_ZA/core.po | 30 +++++++----- l10n/af_ZA/lib.po | 68 ++++++++++++++------------- l10n/ar/core.po | 30 +++++++----- l10n/ar/files.po | 4 +- l10n/ar/files_external.po | 4 +- l10n/ar/files_sharing.po | 4 +- l10n/ar/files_trashbin.po | 4 +- l10n/ar/lib.po | 70 ++++++++++++++------------- l10n/ar/settings.po | 4 +- l10n/ar/user_ldap.po | 4 +- l10n/bg_BG/core.po | 30 +++++++----- l10n/bg_BG/files.po | 4 +- l10n/bg_BG/files_external.po | 4 +- l10n/bg_BG/files_sharing.po | 4 +- l10n/bg_BG/files_trashbin.po | 4 +- l10n/bg_BG/lib.po | 70 ++++++++++++++------------- l10n/bg_BG/settings.po | 4 +- l10n/bg_BG/user_ldap.po | 4 +- l10n/bn_BD/core.po | 30 +++++++----- l10n/bn_BD/files.po | 4 +- l10n/bn_BD/files_external.po | 4 +- l10n/bn_BD/files_sharing.po | 4 +- l10n/bn_BD/files_trashbin.po | 4 +- l10n/bn_BD/lib.po | 68 ++++++++++++++------------- l10n/bn_BD/settings.po | 4 +- l10n/bn_BD/user_ldap.po | 4 +- l10n/ca/core.po | 30 +++++++----- l10n/ca/files.po | 4 +- l10n/ca/files_external.po | 8 ++-- l10n/ca/files_sharing.po | 4 +- l10n/ca/files_trashbin.po | 4 +- l10n/ca/lib.po | 70 ++++++++++++++------------- l10n/ca/settings.po | 4 +- l10n/ca/user_ldap.po | 4 +- l10n/cs_CZ/core.po | 30 +++++++----- l10n/cs_CZ/files.po | 4 +- l10n/cs_CZ/files_external.po | 4 +- l10n/cs_CZ/files_sharing.po | 4 +- l10n/cs_CZ/files_trashbin.po | 4 +- l10n/cs_CZ/lib.po | 70 ++++++++++++++------------- l10n/cs_CZ/settings.po | 4 +- l10n/cs_CZ/user_ldap.po | 4 +- l10n/cy_GB/core.po | 30 +++++++----- l10n/cy_GB/files.po | 4 +- l10n/cy_GB/files_external.po | 4 +- l10n/cy_GB/files_sharing.po | 4 +- l10n/cy_GB/files_trashbin.po | 4 +- l10n/cy_GB/lib.po | 70 ++++++++++++++------------- l10n/cy_GB/settings.po | 4 +- l10n/cy_GB/user_ldap.po | 4 +- l10n/da/core.po | 30 +++++++----- l10n/da/files.po | 4 +- l10n/da/files_external.po | 4 +- l10n/da/files_sharing.po | 4 +- l10n/da/files_trashbin.po | 4 +- l10n/da/lib.po | 70 ++++++++++++++------------- l10n/da/settings.po | 4 +- l10n/da/user_ldap.po | 4 +- l10n/de/core.po | 30 +++++++----- l10n/de/files.po | 4 +- l10n/de/files_external.po | 4 +- l10n/de/files_sharing.po | 4 +- l10n/de/files_trashbin.po | 4 +- l10n/de/lib.po | 62 ++++++++++++------------ l10n/de/settings.po | 4 +- l10n/de/user_ldap.po | 4 +- l10n/de_DE/core.po | 30 +++++++----- l10n/de_DE/files.po | 4 +- l10n/de_DE/files_external.po | 4 +- l10n/de_DE/files_sharing.po | 4 +- l10n/de_DE/files_trashbin.po | 4 +- l10n/de_DE/lib.po | 62 ++++++++++++------------ l10n/de_DE/settings.po | 4 +- l10n/de_DE/user_ldap.po | 9 ++-- l10n/el/core.po | 32 +++++++------ l10n/el/files.po | 9 ++-- l10n/el/files_external.po | 4 +- l10n/el/files_sharing.po | 4 +- l10n/el/files_trashbin.po | 4 +- l10n/el/lib.po | 70 ++++++++++++++------------- l10n/el/settings.po | 4 +- l10n/el/user_ldap.po | 4 +- l10n/en@pirate/files.po | 4 +- l10n/en@pirate/files_sharing.po | 4 +- l10n/eo/core.po | 30 +++++++----- l10n/eo/files.po | 4 +- l10n/eo/files_external.po | 4 +- l10n/eo/files_sharing.po | 4 +- l10n/eo/files_trashbin.po | 4 +- l10n/eo/lib.po | 68 ++++++++++++++------------- l10n/eo/settings.po | 4 +- l10n/eo/user_ldap.po | 4 +- l10n/es/core.po | 30 +++++++----- l10n/es/files.po | 4 +- l10n/es/files_external.po | 4 +- l10n/es/files_sharing.po | 4 +- l10n/es/files_trashbin.po | 4 +- l10n/es/lib.po | 62 ++++++++++++------------ l10n/es/settings.po | 4 +- l10n/es/user_ldap.po | 4 +- l10n/es_AR/core.po | 30 +++++++----- l10n/es_AR/files.po | 4 +- l10n/es_AR/files_external.po | 4 +- l10n/es_AR/files_sharing.po | 4 +- l10n/es_AR/files_trashbin.po | 4 +- l10n/es_AR/lib.po | 70 ++++++++++++++------------- l10n/es_AR/settings.po | 4 +- l10n/es_AR/user_ldap.po | 4 +- l10n/et_EE/core.po | 30 +++++++----- l10n/et_EE/files.po | 4 +- l10n/et_EE/files_external.po | 4 +- l10n/et_EE/files_sharing.po | 4 +- l10n/et_EE/files_trashbin.po | 4 +- l10n/et_EE/lib.po | 62 ++++++++++++------------ l10n/et_EE/settings.po | 4 +- l10n/et_EE/user_ldap.po | 4 +- l10n/eu/core.po | 30 +++++++----- l10n/eu/files.po | 4 +- l10n/eu/files_external.po | 4 +- l10n/eu/files_sharing.po | 4 +- l10n/eu/files_trashbin.po | 4 +- l10n/eu/lib.po | 70 ++++++++++++++------------- l10n/eu/settings.po | 4 +- l10n/eu/user_ldap.po | 4 +- l10n/fa/core.po | 30 +++++++----- l10n/fa/files.po | 4 +- l10n/fa/files_external.po | 4 +- l10n/fa/files_sharing.po | 4 +- l10n/fa/files_trashbin.po | 4 +- l10n/fa/lib.po | 68 ++++++++++++++------------- l10n/fa/settings.po | 4 +- l10n/fa/user_ldap.po | 4 +- l10n/fi/core.po | 32 +++++++------ l10n/fi/files.po | 6 +-- l10n/fi/lib.po | 70 ++++++++++++++------------- l10n/fi_FI/core.po | 36 +++++++------- l10n/fi_FI/files.po | 4 +- l10n/fi_FI/files_external.po | 4 +- l10n/fi_FI/files_sharing.po | 4 +- l10n/fi_FI/files_trashbin.po | 4 +- l10n/fi_FI/lib.po | 73 +++++++++++++++-------------- l10n/fi_FI/settings.po | 4 +- l10n/fi_FI/user_ldap.po | 4 +- l10n/fr/core.po | 30 +++++++----- l10n/fr/files.po | 4 +- l10n/fr/files_external.po | 4 +- l10n/fr/files_sharing.po | 4 +- l10n/fr/files_trashbin.po | 4 +- l10n/fr/lib.po | 70 ++++++++++++++------------- l10n/fr/settings.po | 4 +- l10n/fr/user_ldap.po | 4 +- l10n/gl/core.po | 30 +++++++----- l10n/gl/files.po | 4 +- l10n/gl/files_external.po | 4 +- l10n/gl/files_sharing.po | 4 +- l10n/gl/files_trashbin.po | 4 +- l10n/gl/lib.po | 70 ++++++++++++++------------- l10n/gl/settings.po | 4 +- l10n/gl/user_ldap.po | 4 +- l10n/he/core.po | 30 +++++++----- l10n/he/files.po | 4 +- l10n/he/files_external.po | 4 +- l10n/he/files_sharing.po | 4 +- l10n/he/files_trashbin.po | 4 +- l10n/he/lib.po | 68 ++++++++++++++------------- l10n/he/settings.po | 4 +- l10n/he/user_ldap.po | 4 +- l10n/hi/core.po | 30 +++++++----- l10n/hi/lib.po | 68 ++++++++++++++------------- l10n/hr/core.po | 30 +++++++----- l10n/hr/files.po | 4 +- l10n/hr/files_external.po | 4 +- l10n/hr/files_sharing.po | 4 +- l10n/hr/files_trashbin.po | 4 +- l10n/hr/lib.po | 68 ++++++++++++++------------- l10n/hr/settings.po | 4 +- l10n/hr/user_ldap.po | 4 +- l10n/hu_HU/core.po | 30 +++++++----- l10n/hu_HU/files.po | 4 +- l10n/hu_HU/files_external.po | 4 +- l10n/hu_HU/files_sharing.po | 4 +- l10n/hu_HU/files_trashbin.po | 4 +- l10n/hu_HU/lib.po | 70 ++++++++++++++------------- l10n/hu_HU/settings.po | 4 +- l10n/hu_HU/user_ldap.po | 4 +- l10n/hy/files.po | 6 +-- l10n/hy/files_external.po | 4 +- l10n/hy/files_sharing.po | 4 +- l10n/hy/files_trashbin.po | 4 +- l10n/hy/settings.po | 26 +++++----- l10n/ia/core.po | 30 +++++++----- l10n/ia/files.po | 4 +- l10n/ia/files_external.po | 4 +- l10n/ia/files_sharing.po | 4 +- l10n/ia/files_trashbin.po | 4 +- l10n/ia/lib.po | 68 ++++++++++++++------------- l10n/ia/settings.po | 4 +- l10n/ia/user_ldap.po | 4 +- l10n/id/core.po | 30 +++++++----- l10n/id/files.po | 4 +- l10n/id/files_external.po | 4 +- l10n/id/files_sharing.po | 4 +- l10n/id/files_trashbin.po | 4 +- l10n/id/lib.po | 70 ++++++++++++++------------- l10n/id/settings.po | 4 +- l10n/id/user_ldap.po | 4 +- l10n/is/core.po | 30 +++++++----- l10n/is/files.po | 4 +- l10n/is/files_external.po | 4 +- l10n/is/files_sharing.po | 4 +- l10n/is/files_trashbin.po | 4 +- l10n/is/lib.po | 68 ++++++++++++++------------- l10n/is/settings.po | 4 +- l10n/is/user_ldap.po | 4 +- l10n/it/core.po | 30 +++++++----- l10n/it/files.po | 4 +- l10n/it/files_external.po | 4 +- l10n/it/files_sharing.po | 4 +- l10n/it/files_trashbin.po | 4 +- l10n/it/lib.po | 63 +++++++++++++------------ l10n/it/settings.po | 4 +- l10n/it/user_ldap.po | 4 +- l10n/ja_JP/core.po | 30 +++++++----- l10n/ja_JP/files.po | 4 +- l10n/ja_JP/files_external.po | 4 +- l10n/ja_JP/files_sharing.po | 4 +- l10n/ja_JP/files_trashbin.po | 4 +- l10n/ja_JP/lib.po | 70 ++++++++++++++------------- l10n/ja_JP/settings.po | 4 +- l10n/ja_JP/user_ldap.po | 4 +- l10n/ka/files.po | 4 +- l10n/ka/files_sharing.po | 4 +- l10n/ka_GE/core.po | 30 +++++++----- l10n/ka_GE/files.po | 4 +- l10n/ka_GE/files_external.po | 4 +- l10n/ka_GE/files_sharing.po | 4 +- l10n/ka_GE/files_trashbin.po | 4 +- l10n/ka_GE/lib.po | 70 ++++++++++++++------------- l10n/ka_GE/settings.po | 4 +- l10n/ka_GE/user_ldap.po | 4 +- l10n/ko/core.po | 30 +++++++----- l10n/ko/files.po | 4 +- l10n/ko/files_external.po | 4 +- l10n/ko/files_sharing.po | 4 +- l10n/ko/files_trashbin.po | 4 +- l10n/ko/lib.po | 68 ++++++++++++++------------- l10n/ko/settings.po | 4 +- l10n/ko/user_ldap.po | 4 +- l10n/ku_IQ/core.po | 30 +++++++----- l10n/ku_IQ/files.po | 4 +- l10n/ku_IQ/files_sharing.po | 4 +- l10n/ku_IQ/files_trashbin.po | 4 +- l10n/ku_IQ/lib.po | 68 ++++++++++++++------------- l10n/ku_IQ/settings.po | 4 +- l10n/ku_IQ/user_ldap.po | 4 +- l10n/lb/core.po | 30 +++++++----- l10n/lb/files.po | 4 +- l10n/lb/files_external.po | 4 +- l10n/lb/files_sharing.po | 4 +- l10n/lb/files_trashbin.po | 4 +- l10n/lb/lib.po | 68 ++++++++++++++------------- l10n/lb/settings.po | 4 +- l10n/lb/user_ldap.po | 4 +- l10n/lt_LT/core.po | 30 +++++++----- l10n/lt_LT/files.po | 4 +- l10n/lt_LT/files_external.po | 4 +- l10n/lt_LT/files_sharing.po | 4 +- l10n/lt_LT/files_trashbin.po | 4 +- l10n/lt_LT/lib.po | 68 ++++++++++++++------------- l10n/lt_LT/settings.po | 4 +- l10n/lt_LT/user_ldap.po | 4 +- l10n/lv/core.po | 30 +++++++----- l10n/lv/files.po | 4 +- l10n/lv/files_external.po | 4 +- l10n/lv/files_sharing.po | 4 +- l10n/lv/files_trashbin.po | 4 +- l10n/lv/lib.po | 70 ++++++++++++++------------- l10n/lv/settings.po | 4 +- l10n/lv/user_ldap.po | 4 +- l10n/mk/core.po | 30 +++++++----- l10n/mk/files.po | 4 +- l10n/mk/files_external.po | 4 +- l10n/mk/files_sharing.po | 4 +- l10n/mk/files_trashbin.po | 4 +- l10n/mk/lib.po | 68 ++++++++++++++------------- l10n/mk/settings.po | 4 +- l10n/mk/user_ldap.po | 4 +- l10n/ms_MY/core.po | 30 +++++++----- l10n/ms_MY/files.po | 4 +- l10n/ms_MY/files_external.po | 4 +- l10n/ms_MY/files_sharing.po | 4 +- l10n/ms_MY/files_trashbin.po | 4 +- l10n/ms_MY/lib.po | 68 ++++++++++++++------------- l10n/ms_MY/settings.po | 4 +- l10n/ms_MY/user_ldap.po | 4 +- l10n/my_MM/core.po | 30 +++++++----- l10n/my_MM/files.po | 4 +- l10n/my_MM/files_sharing.po | 4 +- l10n/my_MM/lib.po | 68 ++++++++++++++------------- l10n/nb_NO/core.po | 30 +++++++----- l10n/nb_NO/files.po | 4 +- l10n/nb_NO/files_external.po | 4 +- l10n/nb_NO/files_sharing.po | 4 +- l10n/nb_NO/files_trashbin.po | 4 +- l10n/nb_NO/lib.po | 60 +++++++++++++----------- l10n/nb_NO/settings.po | 4 +- l10n/nb_NO/user_ldap.po | 4 +- l10n/nl/core.po | 30 +++++++----- l10n/nl/files.po | 4 +- l10n/nl/files_external.po | 4 +- l10n/nl/files_sharing.po | 4 +- l10n/nl/files_trashbin.po | 4 +- l10n/nl/lib.po | 70 ++++++++++++++------------- l10n/nl/settings.po | 4 +- l10n/nl/user_ldap.po | 4 +- l10n/nn_NO/core.po | 30 +++++++----- l10n/nn_NO/files.po | 4 +- l10n/nn_NO/files_external.po | 4 +- l10n/nn_NO/files_sharing.po | 4 +- l10n/nn_NO/files_trashbin.po | 4 +- l10n/nn_NO/lib.po | 60 +++++++++++++----------- l10n/nn_NO/settings.po | 4 +- l10n/nn_NO/user_ldap.po | 4 +- l10n/oc/core.po | 30 +++++++----- l10n/oc/files.po | 4 +- l10n/oc/files_external.po | 4 +- l10n/oc/files_sharing.po | 4 +- l10n/oc/files_trashbin.po | 4 +- l10n/oc/lib.po | 68 ++++++++++++++------------- l10n/oc/settings.po | 4 +- l10n/oc/user_ldap.po | 4 +- l10n/pl/core.po | 30 +++++++----- l10n/pl/files.po | 4 +- l10n/pl/files_external.po | 4 +- l10n/pl/files_sharing.po | 4 +- l10n/pl/files_trashbin.po | 4 +- l10n/pl/lib.po | 70 ++++++++++++++------------- l10n/pl/settings.po | 4 +- l10n/pl/user_ldap.po | 4 +- l10n/pl_PL/core.po | 32 +++++++------ l10n/pl_PL/files.po | 6 +-- l10n/pl_PL/lib.po | 70 ++++++++++++++------------- l10n/pl_PL/settings.po | 26 +++++----- l10n/pt_BR/core.po | 30 +++++++----- l10n/pt_BR/files.po | 4 +- l10n/pt_BR/files_external.po | 4 +- l10n/pt_BR/files_sharing.po | 4 +- l10n/pt_BR/files_trashbin.po | 4 +- l10n/pt_BR/lib.po | 73 +++++++++++++++-------------- l10n/pt_BR/settings.po | 4 +- l10n/pt_BR/user_ldap.po | 4 +- l10n/pt_PT/core.po | 30 +++++++----- l10n/pt_PT/files.po | 4 +- l10n/pt_PT/files_external.po | 4 +- l10n/pt_PT/files_sharing.po | 4 +- l10n/pt_PT/files_trashbin.po | 4 +- l10n/pt_PT/lib.po | 70 ++++++++++++++------------- l10n/pt_PT/settings.po | 4 +- l10n/pt_PT/user_ldap.po | 4 +- l10n/ro/core.po | 30 +++++++----- l10n/ro/files.po | 4 +- l10n/ro/files_external.po | 4 +- l10n/ro/files_sharing.po | 4 +- l10n/ro/files_trashbin.po | 4 +- l10n/ro/lib.po | 68 ++++++++++++++------------- l10n/ro/settings.po | 4 +- l10n/ro/user_ldap.po | 4 +- l10n/ru/core.po | 30 +++++++----- l10n/ru/files.po | 4 +- l10n/ru/files_external.po | 4 +- l10n/ru/files_sharing.po | 4 +- l10n/ru/files_trashbin.po | 4 +- l10n/ru/lib.po | 70 ++++++++++++++------------- l10n/ru/settings.po | 4 +- l10n/ru/user_ldap.po | 4 +- l10n/ru_RU/core.po | 36 +++++++------- l10n/ru_RU/files.po | 30 ++++++------ l10n/ru_RU/files_external.po | 45 +++++++++--------- l10n/ru_RU/files_sharing.po | 19 ++++---- l10n/ru_RU/files_trashbin.po | 8 ++-- l10n/ru_RU/lib.po | 72 ++++++++++++++-------------- l10n/ru_RU/settings.po | 12 ++--- l10n/ru_RU/user_ldap.po | 4 +- l10n/si_LK/core.po | 30 +++++++----- l10n/si_LK/files.po | 4 +- l10n/si_LK/files_external.po | 4 +- l10n/si_LK/files_sharing.po | 4 +- l10n/si_LK/files_trashbin.po | 4 +- l10n/si_LK/lib.po | 68 ++++++++++++++------------- l10n/si_LK/settings.po | 4 +- l10n/si_LK/user_ldap.po | 4 +- l10n/sk_SK/core.po | 30 +++++++----- l10n/sk_SK/files.po | 4 +- l10n/sk_SK/files_external.po | 4 +- l10n/sk_SK/files_sharing.po | 4 +- l10n/sk_SK/files_trashbin.po | 4 +- l10n/sk_SK/lib.po | 70 ++++++++++++++------------- l10n/sk_SK/settings.po | 4 +- l10n/sk_SK/user_ldap.po | 4 +- l10n/sl/core.po | 30 +++++++----- l10n/sl/files.po | 4 +- l10n/sl/files_external.po | 4 +- l10n/sl/files_sharing.po | 4 +- l10n/sl/files_trashbin.po | 4 +- l10n/sl/lib.po | 70 ++++++++++++++------------- l10n/sl/settings.po | 4 +- l10n/sl/user_ldap.po | 4 +- l10n/sq/core.po | 30 +++++++----- l10n/sq/files.po | 4 +- l10n/sq/files_external.po | 4 +- l10n/sq/files_sharing.po | 4 +- l10n/sq/files_trashbin.po | 4 +- l10n/sq/lib.po | 70 ++++++++++++++------------- l10n/sq/settings.po | 4 +- l10n/sq/user_ldap.po | 4 +- l10n/sr/core.po | 30 +++++++----- l10n/sr/files.po | 4 +- l10n/sr/files_external.po | 4 +- l10n/sr/files_sharing.po | 4 +- l10n/sr/files_trashbin.po | 4 +- l10n/sr/lib.po | 68 ++++++++++++++------------- l10n/sr/settings.po | 4 +- l10n/sr/user_ldap.po | 4 +- l10n/sr@latin/core.po | 30 +++++++----- l10n/sr@latin/files.po | 4 +- l10n/sr@latin/files_external.po | 4 +- l10n/sr@latin/files_sharing.po | 4 +- l10n/sr@latin/files_trashbin.po | 4 +- l10n/sr@latin/lib.po | 68 ++++++++++++++------------- l10n/sr@latin/settings.po | 26 +++++----- l10n/sv/core.po | 30 +++++++----- l10n/sv/files.po | 4 +- l10n/sv/files_external.po | 4 +- l10n/sv/files_sharing.po | 4 +- l10n/sv/files_trashbin.po | 4 +- l10n/sv/lib.po | 68 ++++++++++++++------------- l10n/sv/settings.po | 4 +- l10n/sv/user_ldap.po | 4 +- l10n/ta_LK/core.po | 30 +++++++----- l10n/ta_LK/files.po | 4 +- l10n/ta_LK/files_external.po | 4 +- l10n/ta_LK/files_sharing.po | 4 +- l10n/ta_LK/files_trashbin.po | 4 +- l10n/ta_LK/lib.po | 68 ++++++++++++++------------- l10n/ta_LK/settings.po | 4 +- l10n/ta_LK/user_ldap.po | 4 +- l10n/te/core.po | 30 +++++++----- l10n/te/files.po | 4 +- l10n/te/files_external.po | 4 +- l10n/te/files_trashbin.po | 4 +- l10n/te/lib.po | 68 ++++++++++++++------------- l10n/te/settings.po | 4 +- l10n/te/user_ldap.po | 4 +- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 30 +++++++----- l10n/th_TH/files.po | 4 +- l10n/th_TH/files_external.po | 4 +- l10n/th_TH/files_sharing.po | 4 +- l10n/th_TH/files_trashbin.po | 4 +- l10n/th_TH/lib.po | 68 ++++++++++++++------------- l10n/th_TH/settings.po | 4 +- l10n/th_TH/user_ldap.po | 4 +- l10n/tr/core.po | 30 +++++++----- l10n/tr/files.po | 4 +- l10n/tr/files_external.po | 4 +- l10n/tr/files_sharing.po | 4 +- l10n/tr/files_trashbin.po | 4 +- l10n/tr/lib.po | 62 ++++++++++++------------ l10n/tr/settings.po | 4 +- l10n/tr/user_ldap.po | 4 +- l10n/ug/core.po | 30 +++++++----- l10n/ug/files.po | 4 +- l10n/ug/files_external.po | 4 +- l10n/ug/files_sharing.po | 4 +- l10n/ug/files_trashbin.po | 4 +- l10n/ug/lib.po | 60 +++++++++++++----------- l10n/ug/settings.po | 4 +- l10n/ug/user_ldap.po | 4 +- l10n/uk/core.po | 30 +++++++----- l10n/uk/files.po | 4 +- l10n/uk/files_external.po | 4 +- l10n/uk/files_sharing.po | 4 +- l10n/uk/files_trashbin.po | 4 +- l10n/uk/lib.po | 70 ++++++++++++++------------- l10n/uk/settings.po | 4 +- l10n/uk/user_ldap.po | 4 +- l10n/ur_PK/core.po | 30 +++++++----- l10n/ur_PK/files.po | 4 +- l10n/ur_PK/files_trashbin.po | 4 +- l10n/ur_PK/lib.po | 68 ++++++++++++++------------- l10n/ur_PK/settings.po | 4 +- l10n/ur_PK/user_ldap.po | 4 +- l10n/vi/core.po | 30 +++++++----- l10n/vi/files.po | 4 +- l10n/vi/files_external.po | 4 +- l10n/vi/files_sharing.po | 4 +- l10n/vi/files_trashbin.po | 4 +- l10n/vi/lib.po | 68 ++++++++++++++------------- l10n/vi/settings.po | 4 +- l10n/vi/user_ldap.po | 4 +- l10n/zh_CN.GB2312/core.po | 30 +++++++----- l10n/zh_CN.GB2312/files.po | 4 +- l10n/zh_CN.GB2312/files_external.po | 4 +- l10n/zh_CN.GB2312/files_sharing.po | 4 +- l10n/zh_CN.GB2312/files_trashbin.po | 4 +- l10n/zh_CN.GB2312/lib.po | 68 ++++++++++++++------------- l10n/zh_CN.GB2312/settings.po | 4 +- l10n/zh_CN.GB2312/user_ldap.po | 4 +- l10n/zh_CN/core.po | 30 +++++++----- l10n/zh_CN/files.po | 4 +- l10n/zh_CN/files_external.po | 4 +- l10n/zh_CN/files_sharing.po | 4 +- l10n/zh_CN/files_trashbin.po | 4 +- l10n/zh_CN/lib.po | 70 ++++++++++++++------------- l10n/zh_CN/settings.po | 4 +- l10n/zh_CN/user_ldap.po | 4 +- l10n/zh_HK/core.po | 30 +++++++----- l10n/zh_HK/files.po | 4 +- l10n/zh_HK/files_external.po | 4 +- l10n/zh_HK/files_sharing.po | 4 +- l10n/zh_HK/files_trashbin.po | 4 +- l10n/zh_HK/lib.po | 68 ++++++++++++++------------- l10n/zh_HK/settings.po | 4 +- l10n/zh_HK/user_ldap.po | 4 +- l10n/zh_TW/core.po | 30 +++++++----- l10n/zh_TW/files.po | 4 +- l10n/zh_TW/files_external.po | 4 +- l10n/zh_TW/files_sharing.po | 4 +- l10n/zh_TW/files_trashbin.po | 4 +- l10n/zh_TW/lib.po | 70 ++++++++++++++------------- l10n/zh_TW/settings.po | 4 +- l10n/zh_TW/user_ldap.po | 4 +- lib/l10n/ar.php | 2 +- lib/l10n/bg_BG.php | 2 +- lib/l10n/ca.php | 2 +- lib/l10n/cs_CZ.php | 2 +- lib/l10n/cy_GB.php | 2 +- lib/l10n/da.php | 2 +- lib/l10n/de.php | 2 +- lib/l10n/de_DE.php | 2 +- lib/l10n/el.php | 2 +- lib/l10n/es.php | 2 +- lib/l10n/es_AR.php | 2 +- lib/l10n/et_EE.php | 2 +- lib/l10n/eu.php | 2 +- lib/l10n/fi_FI.php | 3 +- lib/l10n/fr.php | 2 +- lib/l10n/gl.php | 2 +- lib/l10n/hu_HU.php | 2 +- lib/l10n/id.php | 2 +- lib/l10n/it.php | 3 +- lib/l10n/ja_JP.php | 2 +- lib/l10n/ka_GE.php | 2 +- lib/l10n/lv.php | 2 +- lib/l10n/nl.php | 2 +- lib/l10n/pl.php | 2 +- lib/l10n/pt_BR.php | 3 +- lib/l10n/pt_PT.php | 2 +- lib/l10n/ru.php | 2 +- lib/l10n/ru_RU.php | 3 +- lib/l10n/sk_SK.php | 2 +- lib/l10n/sl.php | 2 +- lib/l10n/sq.php | 2 +- lib/l10n/tr.php | 2 +- lib/l10n/uk.php | 2 +- lib/l10n/zh_CN.php | 2 +- lib/l10n/zh_TW.php | 2 +- settings/l10n/ru_RU.php | 6 ++- 646 files changed, 4749 insertions(+), 4188 deletions(-) diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index a8bb96cdfc..b273f6b522 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} φάκελοι", "1 file" => "1 αρχείο", "{count} files" => "{count} αρχεία", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από το ownCloud", "Unable to rename file" => "Αδυναμία μετονομασίας αρχείου", "Upload" => "Μεταφόρτωση", "File handling" => "Διαχείριση αρχείων", diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php index 1ef163d48f..e0bfab3321 100644 --- a/apps/files/l10n/ru_RU.php +++ b/apps/files/l10n/ru_RU.php @@ -1,3 +1,16 @@ "Ошибка" +"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" => "Размер загружаемого файла превысил максимально допустимый в директиве MAX_FILE_SIZE, специфицированной в HTML-форме", +"The uploaded file was only partially uploaded" => "Загружаемый файл был загружен лишь частично", +"No file was uploaded" => "Файл не был загружен", +"Missing a temporary folder" => "Отсутствие временной папки", +"Failed to write to disk" => "Не удалось записать на диск", +"Not enough storage available" => "Недостаточно места в хранилище", +"Share" => "Сделать общим", +"Delete" => "Удалить", +"Error" => "Ошибка", +"Name" => "Имя", +"Save" => "Сохранить", +"Download" => "Загрузка" ); diff --git a/apps/files_external/l10n/ru_RU.php b/apps/files_external/l10n/ru_RU.php index 406e284b27..a43417dfbc 100644 --- a/apps/files_external/l10n/ru_RU.php +++ b/apps/files_external/l10n/ru_RU.php @@ -1,23 +1,4 @@ "Доступ разрешен", -"Error configuring Dropbox storage" => "Ошибка при конфигурировании хранилища Dropbox", -"Grant access" => "Предоставить доступ", -"Please provide a valid Dropbox app key and secret." => "Пожалуйста представьте допустимый ключ приложения Dropbox и пароль.", -"Error configuring Google Drive storage" => "Ошибка настройки хранилища Google Drive", -"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Предупреждение: \"smbclient\" не установлен. Подключение общих папок CIFS/SMB невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить его.", -"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Предупреждение: Поддержка FTP в PHP не включена или не установлена. Подключение по FTP невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить ее.", -"External Storage" => "Внешние системы хранения данных", -"Folder name" => "Имя папки", -"Configuration" => "Конфигурация", -"Options" => "Опции", -"Applicable" => "Применимый", -"None set" => "Не задан", -"All Users" => "Все пользователи", "Groups" => "Группы", -"Users" => "Пользователи", -"Delete" => "Удалить", -"Enable User External Storage" => "Включить пользовательскую внешнюю систему хранения данных", -"Allow users to mount their own external storage" => "Разрешить пользователям монтировать их собственную внешнюю систему хранения данных", -"SSL root certificates" => "Корневые сертификаты SSL", -"Import Root Certificate" => "Импортировать корневые сертификаты" +"Delete" => "Удалить" ); diff --git a/apps/files_sharing/l10n/ru_RU.php b/apps/files_sharing/l10n/ru_RU.php index 36e4b2fd0e..2cadd16346 100644 --- a/apps/files_sharing/l10n/ru_RU.php +++ b/apps/files_sharing/l10n/ru_RU.php @@ -1,9 +1,3 @@ "Пароль", -"Submit" => "Передать", -"%s shared the folder %s with you" => "%s имеет общий с Вами доступ к папке %s ", -"%s shared the file %s with you" => "%s имеет общий с Вами доступ к файлу %s ", -"Download" => "Загрузка", -"No preview available for" => "Предварительный просмотр недоступен", -"web services under your control" => "веб-сервисы под Вашим контролем" +"Download" => "Загрузка" ); diff --git a/apps/files_trashbin/l10n/ru_RU.php b/apps/files_trashbin/l10n/ru_RU.php index 1ef163d48f..8636e417ec 100644 --- a/apps/files_trashbin/l10n/ru_RU.php +++ b/apps/files_trashbin/l10n/ru_RU.php @@ -1,3 +1,5 @@ "Ошибка" +"Error" => "Ошибка", +"Name" => "Имя", +"Delete" => "Удалить" ); diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php index de2dd118e5..e22c5b5bdd 100644 --- a/apps/user_ldap/l10n/de_DE.php +++ b/apps/user_ldap/l10n/de_DE.php @@ -73,6 +73,7 @@ "User Home Folder Naming Rule" => "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls tragen Sie bitte ein LDAP/AD-Attribut ein.", "Internal Username" => "Interner Benutzername", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "Standardmäßig wird der interne Benutzername mittels des UUID-Attributes erzeugt. Dies stellt sicher, dass der Benutzername einzigartig ist und keinerlei Zeichen konvertiert werden müssen. Der interne Benutzername unterliegt Beschränkungen, die nur die nachfolgenden Zeichen erlauben: [ a-zA-Z0-9_.@- ]. Andere Zeichenwerden mittels ihrer korrespondierenden Zeichen ersetzt oder einfach ausgelassen. Bei Übereinstimmungen wird ein Zähler hinzugefügt bzw. der Zähler um einen Wert erhöht. Der interne Benutzername wird benutzt, um einen Benutzer intern zu identifizieren. Es ist ebenso der standardmäßig vorausgewählte Namen des Heimatverzeichnisses in ownCloud. Es dient weiterhin als Port für Remote-URLs - zum Beispiel für alle *DAV-Dienste Mit dieser Einstellung kann das Standardverhalten überschrieben werden. Um ein ähnliches Verhalten wie vor ownCloud 5 zu erzielen, fügen Sie das anzuzeigende Attribut des Benutzernamens in das nachfolgende Feld ein. Lassen Sie dies hingegen für das Standardverhalten leer. Die Änderungen werden sich einzig und allein nur auf neu gemappte (hinzugefügte) LDAP-Benutzer auswirken.", "Test Configuration" => "Testkonfiguration", "Help" => "Hilfe" ); diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 587e59695c..8bd4429338 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -44,11 +44,11 @@ "months ago" => "شهر مضى", "last year" => "السنةالماضية", "years ago" => "سنة مضت", -"Ok" => "موافق", -"Cancel" => "الغاء", "Choose" => "اختيار", +"Cancel" => "الغاء", "Yes" => "نعم", "No" => "لا", +"Ok" => "موافق", "The object type is not specified." => "نوع العنصر غير محدد.", "Error" => "خطأ", "The app name is not specified." => "اسم التطبيق غير محدد.", diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index 74e28bf290..6c04907e15 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -28,10 +28,10 @@ "last month" => "последният месец", "last year" => "последната година", "years ago" => "последните години", -"Ok" => "Добре", "Cancel" => "Отказ", "Yes" => "Да", "No" => "Не", +"Ok" => "Добре", "Error" => "Грешка", "Share" => "Споделяне", "Share with" => "Споделено с", diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php index 63a80edad3..218bbce04a 100644 --- a/core/l10n/bn_BD.php +++ b/core/l10n/bn_BD.php @@ -43,11 +43,11 @@ "months ago" => "মাস পূর্বে", "last year" => "গত বছর", "years ago" => "বছর পূর্বে", -"Ok" => "তথাস্তু", -"Cancel" => "বাতির", "Choose" => "বেছে নিন", +"Cancel" => "বাতির", "Yes" => "হ্যাঁ", "No" => "না", +"Ok" => "তথাস্তু", "The object type is not specified." => "অবজেক্টের ধরণটি সুনির্দিষ্ট নয়।", "Error" => "সমস্যা", "The app name is not specified." => "অ্যাপের নামটি সুনির্দিষ্ট নয়।", diff --git a/core/l10n/ca.php b/core/l10n/ca.php index a1430d547f..6a5a6ea542 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -44,11 +44,11 @@ "months ago" => "mesos enrere", "last year" => "l'any passat", "years ago" => "anys enrere", -"Ok" => "D'acord", -"Cancel" => "Cancel·la", "Choose" => "Escull", +"Cancel" => "Cancel·la", "Yes" => "Sí", "No" => "No", +"Ok" => "D'acord", "The object type is not specified." => "No s'ha especificat el tipus d'objecte.", "Error" => "Error", "The app name is not specified." => "No s'ha especificat el nom de l'aplicació.", diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index be354386e1..06cf7c214b 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -44,11 +44,11 @@ "months ago" => "před měsíci", "last year" => "minulý rok", "years ago" => "před lety", -"Ok" => "Ok", -"Cancel" => "Zrušit", "Choose" => "Vybrat", +"Cancel" => "Zrušit", "Yes" => "Ano", "No" => "Ne", +"Ok" => "Ok", "The object type is not specified." => "Není určen typ objektu.", "Error" => "Chyba", "The app name is not specified." => "Není určen název aplikace.", diff --git a/core/l10n/cy_GB.php b/core/l10n/cy_GB.php index a874d43965..cdb2576d45 100644 --- a/core/l10n/cy_GB.php +++ b/core/l10n/cy_GB.php @@ -44,11 +44,11 @@ "months ago" => "misoedd yn ôl", "last year" => "y llynedd", "years ago" => "blwyddyn yn ôl", -"Ok" => "Iawn", -"Cancel" => "Diddymu", "Choose" => "Dewisiwch", +"Cancel" => "Diddymu", "Yes" => "Ie", "No" => "Na", +"Ok" => "Iawn", "The object type is not specified." => "Nid yw'r math o wrthrych wedi cael ei nodi.", "Error" => "Gwall", "The app name is not specified." => "Nid yw enw'r pecyn wedi cael ei nodi.", diff --git a/core/l10n/da.php b/core/l10n/da.php index 43b2f4f840..4e9f742e80 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -44,11 +44,11 @@ "months ago" => "måneder siden", "last year" => "sidste år", "years ago" => "år siden", -"Ok" => "OK", -"Cancel" => "Annuller", "Choose" => "Vælg", +"Cancel" => "Annuller", "Yes" => "Ja", "No" => "Nej", +"Ok" => "OK", "The object type is not specified." => "Objekttypen er ikke angivet.", "Error" => "Fejl", "The app name is not specified." => "Den app navn er ikke angivet.", diff --git a/core/l10n/de.php b/core/l10n/de.php index b53bda109d..62e9925b94 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -44,11 +44,11 @@ "months ago" => "Vor Monaten", "last year" => "Letztes Jahr", "years ago" => "Vor Jahren", -"Ok" => "OK", -"Cancel" => "Abbrechen", "Choose" => "Auswählen", +"Cancel" => "Abbrechen", "Yes" => "Ja", "No" => "Nein", +"Ok" => "OK", "The object type is not specified." => "Der Objekttyp ist nicht angegeben.", "Error" => "Fehler", "The app name is not specified." => "Der App-Name ist nicht angegeben.", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index 7e9b64193c..f395c192bd 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -44,11 +44,11 @@ "months ago" => "Vor Monaten", "last year" => "Letztes Jahr", "years ago" => "Vor Jahren", -"Ok" => "OK", -"Cancel" => "Abbrechen", "Choose" => "Auswählen", +"Cancel" => "Abbrechen", "Yes" => "Ja", "No" => "Nein", +"Ok" => "OK", "The object type is not specified." => "Der Objekttyp ist nicht angegeben.", "Error" => "Fehler", "The app name is not specified." => "Der App-Name ist nicht angegeben.", diff --git a/core/l10n/el.php b/core/l10n/el.php index dbe0d0ee3d..11295105e3 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -44,11 +44,11 @@ "months ago" => "μήνες πριν", "last year" => "τελευταίο χρόνο", "years ago" => "χρόνια πριν", -"Ok" => "Οκ", -"Cancel" => "Άκυρο", "Choose" => "Επιλέξτε", +"Cancel" => "Άκυρο", "Yes" => "Ναι", "No" => "Όχι", +"Ok" => "Οκ", "The object type is not specified." => "Δεν καθορίστηκε ο τύπος του αντικειμένου.", "Error" => "Σφάλμα", "The app name is not specified." => "Δεν καθορίστηκε το όνομα της εφαρμογής.", diff --git a/core/l10n/eo.php b/core/l10n/eo.php index 1889de1ea2..72cdf90c61 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -43,11 +43,11 @@ "months ago" => "monatoj antaŭe", "last year" => "lastajare", "years ago" => "jaroj antaŭe", -"Ok" => "Akcepti", -"Cancel" => "Nuligi", "Choose" => "Elekti", +"Cancel" => "Nuligi", "Yes" => "Jes", "No" => "Ne", +"Ok" => "Akcepti", "The object type is not specified." => "Ne indikiĝis tipo de la objekto.", "Error" => "Eraro", "The app name is not specified." => "Ne indikiĝis nomo de la aplikaĵo.", diff --git a/core/l10n/es.php b/core/l10n/es.php index d99ac861ce..2d9adb15cc 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -44,11 +44,11 @@ "months ago" => "hace meses", "last year" => "el año pasado", "years ago" => "hace años", -"Ok" => "Aceptar", -"Cancel" => "Cancelar", "Choose" => "Seleccionar", +"Cancel" => "Cancelar", "Yes" => "Sí", "No" => "No", +"Ok" => "Aceptar", "The object type is not specified." => "No se ha especificado el tipo de objeto", "Error" => "Error", "The app name is not specified." => "No se ha especificado el nombre de la aplicación.", diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php index 8f77843708..38b0791b94 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -44,11 +44,11 @@ "months ago" => "meses atrás", "last year" => "el año pasado", "years ago" => "años atrás", -"Ok" => "Aceptar", -"Cancel" => "Cancelar", "Choose" => "Elegir", +"Cancel" => "Cancelar", "Yes" => "Sí", "No" => "No", +"Ok" => "Aceptar", "The object type is not specified." => "El tipo de objeto no esta especificado. ", "Error" => "Error", "The app name is not specified." => "El nombre de la aplicación no esta especificado.", diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index 79d3024f01..d298b74fc0 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -44,11 +44,11 @@ "months ago" => "kuu tagasi", "last year" => "viimasel aastal", "years ago" => "aastat tagasi", -"Ok" => "Ok", -"Cancel" => "Loobu", "Choose" => "Vali", +"Cancel" => "Loobu", "Yes" => "Jah", "No" => "Ei", +"Ok" => "Ok", "The object type is not specified." => "Objekti tüüp pole määratletud.", "Error" => "Viga", "The app name is not specified." => "Rakenduse nimi ole määratletud", diff --git a/core/l10n/eu.php b/core/l10n/eu.php index 9c9d28133c..1ec4ee8f5c 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -44,11 +44,11 @@ "months ago" => "hilabete", "last year" => "joan den urtean", "years ago" => "urte", -"Ok" => "Ados", -"Cancel" => "Ezeztatu", "Choose" => "Aukeratu", +"Cancel" => "Ezeztatu", "Yes" => "Bai", "No" => "Ez", +"Ok" => "Ados", "The object type is not specified." => "Objetu mota ez dago zehaztuta.", "Error" => "Errorea", "The app name is not specified." => "App izena ez dago zehaztuta.", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index ff73e80448..fb8a312587 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -44,11 +44,11 @@ "months ago" => "ماه‌های قبل", "last year" => "سال قبل", "years ago" => "سال‌های قبل", -"Ok" => "قبول", -"Cancel" => "منصرف شدن", "Choose" => "انتخاب کردن", +"Cancel" => "منصرف شدن", "Yes" => "بله", "No" => "نه", +"Ok" => "قبول", "The object type is not specified." => "نوع شی تعیین نشده است.", "Error" => "خطا", "The app name is not specified." => "نام برنامه تعیین نشده است.", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 3f50e81484..1f7a01e0e0 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -42,11 +42,11 @@ "months ago" => "kuukautta sitten", "last year" => "viime vuonna", "years ago" => "vuotta sitten", -"Ok" => "Ok", -"Cancel" => "Peru", "Choose" => "Valitse", +"Cancel" => "Peru", "Yes" => "Kyllä", "No" => "Ei", +"Ok" => "Ok", "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!", @@ -84,6 +84,7 @@ "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}", +"Request failed!
          Did you make sure your email/username was right?" => "Pyyntö epäonnistui!
          Olihan sähköpostiosoitteesi/käyttäjätunnuksesi oikein?", "You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.", "Username" => "Käyttäjätunnus", "Request reset" => "Tilaus lähetetty", @@ -118,6 +119,7 @@ "Database host" => "Tietokantapalvelin", "Finish setup" => "Viimeistele asennus", "web services under your control" => "verkkopalvelut hallinnassasi", +"%s is available. Get more information on how to update." => "%s on saatavilla. Lue lisätietoja, miten päivitys asennetaan.", "Log out" => "Kirjaudu ulos", "Automatic logon rejected!" => "Automaattinen sisäänkirjautuminen hylättiin!", "If you did not change your password recently, your account may be compromised!" => "Jos et vaihtanut salasanaasi äskettäin, tilisi saattaa olla murrettu.", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index 84ea35abcf..b01625a887 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -44,11 +44,11 @@ "months ago" => "il y a plusieurs mois", "last year" => "l'année dernière", "years ago" => "il y a plusieurs années", -"Ok" => "Ok", -"Cancel" => "Annuler", "Choose" => "Choisir", +"Cancel" => "Annuler", "Yes" => "Oui", "No" => "Non", +"Ok" => "Ok", "The object type is not specified." => "Le type d'objet n'est pas spécifié.", "Error" => "Erreur", "The app name is not specified." => "Le nom de l'application n'est pas spécifié.", diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 7269e79274..3e05f7ec3f 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -44,11 +44,11 @@ "months ago" => "meses atrás", "last year" => "último ano", "years ago" => "anos atrás", -"Ok" => "Aceptar", -"Cancel" => "Cancelar", "Choose" => "Escoller", +"Cancel" => "Cancelar", "Yes" => "Si", "No" => "Non", +"Ok" => "Aceptar", "The object type is not specified." => "Non se especificou o tipo de obxecto.", "Error" => "Erro", "The app name is not specified." => "Non se especificou o nome do aplicativo.", diff --git a/core/l10n/he.php b/core/l10n/he.php index 2560336074..eb2c3f3d15 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -44,11 +44,11 @@ "months ago" => "חודשים", "last year" => "שנה שעברה", "years ago" => "שנים", -"Ok" => "בסדר", -"Cancel" => "ביטול", "Choose" => "בחירה", +"Cancel" => "ביטול", "Yes" => "כן", "No" => "לא", +"Ok" => "בסדר", "The object type is not specified." => "סוג הפריט לא צוין.", "Error" => "שגיאה", "The app name is not specified." => "שם היישום לא צוין.", diff --git a/core/l10n/hr.php b/core/l10n/hr.php index e79e71d4b2..660b47c54f 100644 --- a/core/l10n/hr.php +++ b/core/l10n/hr.php @@ -28,11 +28,11 @@ "months ago" => "mjeseci", "last year" => "prošlu godinu", "years ago" => "godina", -"Ok" => "U redu", -"Cancel" => "Odustani", "Choose" => "Izaberi", +"Cancel" => "Odustani", "Yes" => "Da", "No" => "Ne", +"Ok" => "U redu", "Error" => "Greška", "Share" => "Podijeli", "Error while sharing" => "Greška prilikom djeljenja", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 4c44404fbc..6b477746f2 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -44,11 +44,11 @@ "months ago" => "több hónapja", "last year" => "tavaly", "years ago" => "több éve", -"Ok" => "Ok", -"Cancel" => "Mégsem", "Choose" => "Válasszon", +"Cancel" => "Mégsem", "Yes" => "Igen", "No" => "Nem", +"Ok" => "Ok", "The object type is not specified." => "Az objektum típusa nincs megadva.", "Error" => "Hiba", "The app name is not specified." => "Az alkalmazás neve nincs megadva.", diff --git a/core/l10n/id.php b/core/l10n/id.php index 984822af1e..065a4f2e72 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -44,11 +44,11 @@ "months ago" => "beberapa bulan lalu", "last year" => "tahun kemarin", "years ago" => "beberapa tahun lalu", -"Ok" => "Oke", -"Cancel" => "Batal", "Choose" => "Pilih", +"Cancel" => "Batal", "Yes" => "Ya", "No" => "Tidak", +"Ok" => "Oke", "The object type is not specified." => "Tipe objek tidak ditentukan.", "Error" => "Galat", "The app name is not specified." => "Nama aplikasi tidak ditentukan.", diff --git a/core/l10n/is.php b/core/l10n/is.php index d30d8bca11..bd8b58b290 100644 --- a/core/l10n/is.php +++ b/core/l10n/is.php @@ -43,11 +43,11 @@ "months ago" => "mánuðir síðan", "last year" => "síðasta ári", "years ago" => "einhverjum árum", -"Ok" => "Í lagi", -"Cancel" => "Hætta við", "Choose" => "Veldu", +"Cancel" => "Hætta við", "Yes" => "Já", "No" => "Nei", +"Ok" => "Í lagi", "The object type is not specified." => "Tegund ekki tilgreind", "Error" => "Villa", "The app name is not specified." => "Nafn forrits ekki tilgreint", diff --git a/core/l10n/it.php b/core/l10n/it.php index 15fba6ec7d..ce8f641129 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -44,11 +44,12 @@ "months ago" => "mesi fa", "last year" => "anno scorso", "years ago" => "anni fa", -"Ok" => "Ok", -"Cancel" => "Annulla", "Choose" => "Scegli", +"Cancel" => "Annulla", +"Error loading file picker template" => "Errore durante il caricamento del modello del selezionatore di file", "Yes" => "Sì", "No" => "No", +"Ok" => "Ok", "The object type is not specified." => "Il tipo di oggetto non è specificato.", "Error" => "Errore", "The app name is not specified." => "Il nome dell'applicazione non è specificato.", diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 783fe288ba..5f25445080 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -44,11 +44,11 @@ "months ago" => "月前", "last year" => "一年前", "years ago" => "年前", -"Ok" => "OK", -"Cancel" => "キャンセル", "Choose" => "選択", +"Cancel" => "キャンセル", "Yes" => "はい", "No" => "いいえ", +"Ok" => "OK", "The object type is not specified." => "オブジェクタイプが指定されていません。", "Error" => "エラー", "The app name is not specified." => "アプリ名がしていされていません。", diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php index fd2e512654..b474548eae 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -44,11 +44,11 @@ "months ago" => "თვის წინ", "last year" => "ბოლო წელს", "years ago" => "წლის წინ", -"Ok" => "დიახ", -"Cancel" => "უარყოფა", "Choose" => "არჩევა", +"Cancel" => "უარყოფა", "Yes" => "კი", "No" => "არა", +"Ok" => "დიახ", "The object type is not specified." => "ობიექტის ტიპი არ არის მითითებული.", "Error" => "შეცდომა", "The app name is not specified." => "აპლიკაციის სახელი არ არის მითითებული.", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index 08713edaee..6b97d672cf 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -44,11 +44,11 @@ "months ago" => "개월 전", "last year" => "작년", "years ago" => "년 전", -"Ok" => "승락", -"Cancel" => "취소", "Choose" => "선택", +"Cancel" => "취소", "Yes" => "예", "No" => "아니요", +"Ok" => "승락", "The object type is not specified." => "객체 유형이 지정되지 않았습니다.", "Error" => "오류", "The app name is not specified." => "앱 이름이 지정되지 않았습니다.", diff --git a/core/l10n/lb.php b/core/l10n/lb.php index f2277445f9..4c312df661 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -28,11 +28,11 @@ "months ago" => "Méint hier", "last year" => "Läscht Joer", "years ago" => "Joren hier", -"Ok" => "OK", -"Cancel" => "Ofbriechen", "Choose" => "Auswielen", +"Cancel" => "Ofbriechen", "Yes" => "Jo", "No" => "Nee", +"Ok" => "OK", "Error" => "Fehler", "Share" => "Deelen", "Password" => "Passwuert", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 85b76fe694..1cd400117c 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -33,11 +33,11 @@ "months ago" => "prieš mėnesį", "last year" => "praeitais metais", "years ago" => "prieš metus", -"Ok" => "Gerai", -"Cancel" => "Atšaukti", "Choose" => "Pasirinkite", +"Cancel" => "Atšaukti", "Yes" => "Taip", "No" => "Ne", +"Ok" => "Gerai", "Error" => "Klaida", "Share" => "Dalintis", "Error while sharing" => "Klaida, dalijimosi metu", diff --git a/core/l10n/lv.php b/core/l10n/lv.php index 18af82e4e3..e3d668d018 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -44,11 +44,11 @@ "months ago" => "mēnešus atpakaļ", "last year" => "gājušajā gadā", "years ago" => "gadus atpakaļ", -"Ok" => "Labi", -"Cancel" => "Atcelt", "Choose" => "Izvēlieties", +"Cancel" => "Atcelt", "Yes" => "Jā", "No" => "Nē", +"Ok" => "Labi", "The object type is not specified." => "Nav norādīts objekta tips.", "Error" => "Kļūda", "The app name is not specified." => "Nav norādīts lietotnes nosaukums.", diff --git a/core/l10n/mk.php b/core/l10n/mk.php index a6c06e4780..b0c39debb8 100644 --- a/core/l10n/mk.php +++ b/core/l10n/mk.php @@ -43,11 +43,11 @@ "months ago" => "пред месеци", "last year" => "минатата година", "years ago" => "пред години", -"Ok" => "Во ред", -"Cancel" => "Откажи", "Choose" => "Избери", +"Cancel" => "Откажи", "Yes" => "Да", "No" => "Не", +"Ok" => "Во ред", "The object type is not specified." => "Не е специфициран типот на објект.", "Error" => "Грешка", "The app name is not specified." => "Името на апликацијата не е специфицирано.", diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php index 70581ff769..e7dc73a32c 100644 --- a/core/l10n/ms_MY.php +++ b/core/l10n/ms_MY.php @@ -21,10 +21,10 @@ "November" => "November", "December" => "Disember", "Settings" => "Tetapan", -"Ok" => "Ok", "Cancel" => "Batal", "Yes" => "Ya", "No" => "Tidak", +"Ok" => "Ok", "Error" => "Ralat", "Share" => "Kongsi", "Password" => "Kata laluan", diff --git a/core/l10n/my_MM.php b/core/l10n/my_MM.php index ef8be954ed..6ea6a2c7bb 100644 --- a/core/l10n/my_MM.php +++ b/core/l10n/my_MM.php @@ -21,11 +21,11 @@ "last month" => "ပြီးခဲ့သောလ", "last year" => "မနှစ်က", "years ago" => "နှစ် အရင်က", -"Ok" => "အိုကေ", -"Cancel" => "ပယ်ဖျက်မည်", "Choose" => "ရွေးချယ်", +"Cancel" => "ပယ်ဖျက်မည်", "Yes" => "ဟုတ်", "No" => "မဟုတ်ဘူး", +"Ok" => "အိုကေ", "Password" => "စကားဝှက်", "Set expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်", "Expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index 6efb31a7de..30d3f91df2 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -34,11 +34,11 @@ "months ago" => "måneder siden", "last year" => "forrige år", "years ago" => "år siden", -"Ok" => "Ok", -"Cancel" => "Avbryt", "Choose" => "Velg", +"Cancel" => "Avbryt", "Yes" => "Ja", "No" => "Nei", +"Ok" => "Ok", "Error" => "Feil", "Share" => "Del", "Error while sharing" => "Feil under deling", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 7e823b2e61..a39f34fb90 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -44,11 +44,11 @@ "months ago" => "maanden geleden", "last year" => "vorig jaar", "years ago" => "jaar geleden", -"Ok" => "Ok", -"Cancel" => "Annuleer", "Choose" => "Kies", +"Cancel" => "Annuleer", "Yes" => "Ja", "No" => "Nee", +"Ok" => "Ok", "The object type is not specified." => "Het object type is niet gespecificeerd.", "Error" => "Fout", "The app name is not specified." => "De app naam is niet gespecificeerd.", diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php index d11ff92fa8..de181ccc7a 100644 --- a/core/l10n/nn_NO.php +++ b/core/l10n/nn_NO.php @@ -44,11 +44,11 @@ "months ago" => "månadar sidan", "last year" => "i fjor", "years ago" => "år sidan", -"Ok" => "Greitt", -"Cancel" => "Avbryt", "Choose" => "Vel", +"Cancel" => "Avbryt", "Yes" => "Ja", "No" => "Nei", +"Ok" => "Greitt", "The object type is not specified." => "Objekttypen er ikkje spesifisert.", "Error" => "Feil", "The app name is not specified." => "Programnamnet er ikkje spesifisert.", diff --git a/core/l10n/oc.php b/core/l10n/oc.php index a384b0315b..1d14428f18 100644 --- a/core/l10n/oc.php +++ b/core/l10n/oc.php @@ -29,11 +29,11 @@ "months ago" => "meses a", "last year" => "an passat", "years ago" => "ans a", -"Ok" => "D'accòrdi", -"Cancel" => "Annula", "Choose" => "Causís", +"Cancel" => "Annula", "Yes" => "Òc", "No" => "Non", +"Ok" => "D'accòrdi", "Error" => "Error", "Share" => "Parteja", "Error while sharing" => "Error al partejar", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 37d01abf84..335dda6f4d 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -44,11 +44,11 @@ "months ago" => "miesięcy temu", "last year" => "w zeszłym roku", "years ago" => "lat temu", -"Ok" => "OK", -"Cancel" => "Anuluj", "Choose" => "Wybierz", +"Cancel" => "Anuluj", "Yes" => "Tak", "No" => "Nie", +"Ok" => "OK", "The object type is not specified." => "Nie określono typu obiektu.", "Error" => "Błąd", "The app name is not specified." => "Nie określono nazwy aplikacji.", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index b52a9bb508..9ce255980c 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -44,11 +44,11 @@ "months ago" => "meses atrás", "last year" => "último ano", "years ago" => "anos atrás", -"Ok" => "Ok", -"Cancel" => "Cancelar", "Choose" => "Escolha", +"Cancel" => "Cancelar", "Yes" => "Sim", "No" => "Não", +"Ok" => "Ok", "The object type is not specified." => "O tipo de objeto não foi especificado.", "Error" => "Erro", "The app name is not specified." => "O nome do app não foi especificado.", diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 1084fc618f..0b2f511cb8 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -44,11 +44,11 @@ "months ago" => "meses atrás", "last year" => "ano passado", "years ago" => "anos atrás", -"Ok" => "Ok", -"Cancel" => "Cancelar", "Choose" => "Escolha", +"Cancel" => "Cancelar", "Yes" => "Sim", "No" => "Não", +"Ok" => "Ok", "The object type is not specified." => "O tipo de objecto não foi especificado", "Error" => "Erro", "The app name is not specified." => "O nome da aplicação não foi especificado", diff --git a/core/l10n/ro.php b/core/l10n/ro.php index 36ee8ab4b6..3d25a5f042 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -44,11 +44,11 @@ "months ago" => "luni în urmă", "last year" => "ultimul an", "years ago" => "ani în urmă", -"Ok" => "Ok", -"Cancel" => "Anulare", "Choose" => "Alege", +"Cancel" => "Anulare", "Yes" => "Da", "No" => "Nu", +"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", diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 43dd398119..781eb1bbfa 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -44,11 +44,11 @@ "months ago" => "несколько месяцев назад", "last year" => "в прошлом году", "years ago" => "несколько лет назад", -"Ok" => "Ок", -"Cancel" => "Отменить", "Choose" => "Выбрать", +"Cancel" => "Отменить", "Yes" => "Да", "No" => "Нет", +"Ok" => "Ок", "The object type is not specified." => "Тип объекта не указан", "Error" => "Ошибка", "The app name is not specified." => "Имя приложения не указано", diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php index d43ee8cf54..580df5961f 100644 --- a/core/l10n/ru_RU.php +++ b/core/l10n/ru_RU.php @@ -1,4 +1,7 @@ "Настройки", -"Error" => "Ошибка" +"Cancel" => "Отмена", +"Error" => "Ошибка", +"Share" => "Сделать общим", +"Add" => "Добавить" ); diff --git a/core/l10n/si_LK.php b/core/l10n/si_LK.php index c1e8ba37ed..be7c1a24aa 100644 --- a/core/l10n/si_LK.php +++ b/core/l10n/si_LK.php @@ -28,11 +28,11 @@ "months ago" => "මාස කීපයකට පෙර", "last year" => "පෙර අවුරුද්දේ", "years ago" => "අවුරුදු කීපයකට පෙර", -"Ok" => "හරි", -"Cancel" => "එපා", "Choose" => "තෝරන්න", +"Cancel" => "එපා", "Yes" => "ඔව්", "No" => "එපා", +"Ok" => "හරි", "Error" => "දෝෂයක්", "Share" => "බෙදා හදා ගන්න", "Share with" => "බෙදාගන්න", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index 6a2d0aa5ec..2dfaa01b5a 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -44,11 +44,11 @@ "months ago" => "pred mesiacmi", "last year" => "minulý rok", "years ago" => "pred rokmi", -"Ok" => "Ok", -"Cancel" => "Zrušiť", "Choose" => "Výber", +"Cancel" => "Zrušiť", "Yes" => "Áno", "No" => "Nie", +"Ok" => "Ok", "The object type is not specified." => "Nešpecifikovaný typ objektu.", "Error" => "Chyba", "The app name is not specified." => "Nešpecifikované meno aplikácie.", diff --git a/core/l10n/sl.php b/core/l10n/sl.php index 2854807130..a433aa2cc4 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -44,11 +44,11 @@ "months ago" => "mesecev nazaj", "last year" => "lansko leto", "years ago" => "let nazaj", -"Ok" => "V redu", -"Cancel" => "Prekliči", "Choose" => "Izbor", +"Cancel" => "Prekliči", "Yes" => "Da", "No" => "Ne", +"Ok" => "V redu", "The object type is not specified." => "Vrsta predmeta ni podana.", "Error" => "Napaka", "The app name is not specified." => "Ime programa ni podano.", diff --git a/core/l10n/sq.php b/core/l10n/sq.php index 8769a833e1..40562add93 100644 --- a/core/l10n/sq.php +++ b/core/l10n/sq.php @@ -44,11 +44,11 @@ "months ago" => "muaj më parë", "last year" => "vitin e shkuar", "years ago" => "vite më parë", -"Ok" => "Në rregull", -"Cancel" => "Anulo", "Choose" => "Zgjidh", +"Cancel" => "Anulo", "Yes" => "Po", "No" => "Jo", +"Ok" => "Në rregull", "The object type is not specified." => "Nuk është specifikuar tipi i objektit.", "Error" => "Veprim i gabuar", "The app name is not specified." => "Nuk është specifikuar emri i app-it.", diff --git a/core/l10n/sr.php b/core/l10n/sr.php index 2329dc49b1..49664f19f3 100644 --- a/core/l10n/sr.php +++ b/core/l10n/sr.php @@ -41,11 +41,11 @@ "months ago" => "месеци раније", "last year" => "прошле године", "years ago" => "година раније", -"Ok" => "У реду", -"Cancel" => "Откажи", "Choose" => "Одабери", +"Cancel" => "Откажи", "Yes" => "Да", "No" => "Не", +"Ok" => "У реду", "The object type is not specified." => "Врста објекта није подешена.", "Error" => "Грешка", "The app name is not specified." => "Име програма није унето.", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index 26bcebdf6c..d4154678b6 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -44,11 +44,11 @@ "months ago" => "månader sedan", "last year" => "förra året", "years ago" => "år sedan", -"Ok" => "Ok", -"Cancel" => "Avbryt", "Choose" => "Välj", +"Cancel" => "Avbryt", "Yes" => "Ja", "No" => "Nej", +"Ok" => "Ok", "The object type is not specified." => "Objekttypen är inte specificerad.", "Error" => "Fel", "The app name is not specified." => " Namnet på appen är inte specificerad.", diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php index b01f8df945..b67f5e967e 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -39,11 +39,11 @@ "months ago" => "மாதங்களுக்கு முன்", "last year" => "கடந்த வருடம்", "years ago" => "வருடங்களுக்கு முன்", -"Ok" => "சரி", -"Cancel" => "இரத்து செய்க", "Choose" => "தெரிவுசெய்க ", +"Cancel" => "இரத்து செய்க", "Yes" => "ஆம்", "No" => "இல்லை", +"Ok" => "சரி", "The object type is not specified." => "பொருள் வகை குறிப்பிடப்படவில்லை.", "Error" => "வழு", "The app name is not specified." => "செயலி பெயர் குறிப்பிடப்படவில்லை.", diff --git a/core/l10n/te.php b/core/l10n/te.php index 040ab9b550..1469d37296 100644 --- a/core/l10n/te.php +++ b/core/l10n/te.php @@ -33,10 +33,10 @@ "months ago" => "నెలల క్రితం", "last year" => "పోయిన సంవత్సరం", "years ago" => "సంవత్సరాల క్రితం", -"Ok" => "సరే", "Cancel" => "రద్దుచేయి", "Yes" => "అవును", "No" => "కాదు", +"Ok" => "సరే", "Error" => "పొరపాటు", "Password" => "సంకేతపదం", "Send" => "పంపించు", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index 1114726434..66f5629b93 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -43,11 +43,11 @@ "months ago" => "เดือน ที่ผ่านมา", "last year" => "ปีที่แล้ว", "years ago" => "ปี ที่ผ่านมา", -"Ok" => "ตกลง", -"Cancel" => "ยกเลิก", "Choose" => "เลือก", +"Cancel" => "ยกเลิก", "Yes" => "ตกลง", "No" => "ไม่ตกลง", +"Ok" => "ตกลง", "The object type is not specified." => "ชนิดของวัตถุยังไม่ได้รับการระบุ", "Error" => "ข้อผิดพลาด", "The app name is not specified." => "ชื่อของแอปยังไม่ได้รับการระบุชื่อ", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 29a6e7a286..47574a0125 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -44,11 +44,11 @@ "months ago" => "ay önce", "last year" => "geçen yıl", "years ago" => "yıl önce", -"Ok" => "Tamam", -"Cancel" => "İptal", "Choose" => "seç", +"Cancel" => "İptal", "Yes" => "Evet", "No" => "Hayır", +"Ok" => "Tamam", "The object type is not specified." => "Nesne türü belirtilmemiş.", "Error" => "Hata", "The app name is not specified." => "uygulama adı belirtilmedi.", diff --git a/core/l10n/ug.php b/core/l10n/ug.php index 4727e37deb..c1bf48e07d 100644 --- a/core/l10n/ug.php +++ b/core/l10n/ug.php @@ -23,10 +23,10 @@ "1 hour ago" => "1 سائەت ئىلگىرى", "today" => "بۈگۈن", "yesterday" => "تۈنۈگۈن", -"Ok" => "جەزملە", "Cancel" => "ۋاز كەچ", "Yes" => "ھەئە", "No" => "ياق", +"Ok" => "جەزملە", "Error" => "خاتالىق", "Share" => "ھەمبەھىر", "Share with" => "ھەمبەھىر", diff --git a/core/l10n/uk.php b/core/l10n/uk.php index a9e4117a61..65577297c3 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -44,11 +44,11 @@ "months ago" => "місяці тому", "last year" => "минулого року", "years ago" => "роки тому", -"Ok" => "Ok", -"Cancel" => "Відмінити", "Choose" => "Обрати", +"Cancel" => "Відмінити", "Yes" => "Так", "No" => "Ні", +"Ok" => "Ok", "The object type is not specified." => "Не визначено тип об'єкту.", "Error" => "Помилка", "The app name is not specified." => "Не визначено ім'я програми.", diff --git a/core/l10n/ur_PK.php b/core/l10n/ur_PK.php index 544d041e48..cf26212c25 100644 --- a/core/l10n/ur_PK.php +++ b/core/l10n/ur_PK.php @@ -14,11 +14,11 @@ "November" => "نومبر", "December" => "دسمبر", "Settings" => "سیٹینگز", -"Ok" => "اوکے", -"Cancel" => "منسوخ کریں", "Choose" => "منتخب کریں", +"Cancel" => "منسوخ کریں", "Yes" => "ہاں", "No" => "نہیں", +"Ok" => "اوکے", "Error" => "ایرر", "Error while sharing" => "شئیرنگ کے دوران ایرر", "Error while unsharing" => "شئیرنگ ختم کرنے کے دوران ایرر", diff --git a/core/l10n/vi.php b/core/l10n/vi.php index 31c4a37545..3e320ecf80 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -44,11 +44,11 @@ "months ago" => "tháng trước", "last year" => "năm trước", "years ago" => "năm trước", -"Ok" => "Đồng ý", -"Cancel" => "Hủy", "Choose" => "Chọn", +"Cancel" => "Hủy", "Yes" => "Có", "No" => "Không", +"Ok" => "Đồng ý", "The object type is not specified." => "Loại đối tượng không được chỉ định.", "Error" => "Lỗi", "The app name is not specified." => "Tên ứng dụng không được chỉ định.", diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php index 7e98d69b64..2e0d0da6f2 100644 --- a/core/l10n/zh_CN.GB2312.php +++ b/core/l10n/zh_CN.GB2312.php @@ -41,11 +41,11 @@ "months ago" => "月前", "last year" => "去年", "years ago" => "年前", -"Ok" => "好的", -"Cancel" => "取消", "Choose" => "选择", +"Cancel" => "取消", "Yes" => "是", "No" => "否", +"Ok" => "好的", "The object type is not specified." => "未指定对象类型。", "Error" => "出错", "The app name is not specified." => "未指定应用名称。", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index c37f7b2602..59dd4d2b86 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -44,11 +44,11 @@ "months ago" => "月前", "last year" => "去年", "years ago" => "年前", -"Ok" => "好", -"Cancel" => "取消", "Choose" => "选择(&C)...", +"Cancel" => "取消", "Yes" => "是", "No" => "否", +"Ok" => "好", "The object type is not specified." => "未指定对象类型。", "Error" => "错误", "The app name is not specified." => "未指定App名称。", diff --git a/core/l10n/zh_HK.php b/core/l10n/zh_HK.php index c4f4009517..21418fe2ee 100644 --- a/core/l10n/zh_HK.php +++ b/core/l10n/zh_HK.php @@ -23,10 +23,10 @@ "yesterday" => "昨日", "last month" => "前一月", "months ago" => "個月之前", -"Ok" => "OK", "Cancel" => "取消", "Yes" => "Yes", "No" => "No", +"Ok" => "OK", "Error" => "錯誤", "Shared" => "已分享", "Share" => "分享", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index 6537e6dff0..4de9123032 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -44,11 +44,11 @@ "months ago" => "幾個月前", "last year" => "去年", "years ago" => "幾年前", -"Ok" => "好", -"Cancel" => "取消", "Choose" => "選擇", +"Cancel" => "取消", "Yes" => "是", "No" => "否", +"Ok" => "好", "The object type is not specified." => "未指定物件類型。", "Error" => "錯誤", "The app name is not specified." => "沒有指定 app 名稱。", diff --git a/l10n/af_ZA/core.po b/l10n/af_ZA/core.po index 75c2b8c54c..7474a030a0 100644 --- a/l10n/af_ZA/core.po +++ b/l10n/af_ZA/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/af_ZA/lib.po b/l10n/af_ZA/lib.po index cd9b771d47..007aa81cc8 100644 --- a/l10n/af_ZA/lib.po +++ b/l10n/af_ZA/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hulp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persoonlik" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Instellings" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Gebruikers" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Toepassings" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ar/core.po b/l10n/ar/core.po index 06a5795244..c1ec6581da 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "السنةالماضية" msgid "years ago" msgstr "سنة مضت" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "موافق" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "الغاء" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "اختيار" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "الغاء" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "نعم" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "لا" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "موافق" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 0136882b87..dd86ceb4bc 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_external.po b/l10n/ar/files_external.po index 6ba8fd6540..bbe335948c 100644 --- a/l10n/ar/files_external.po +++ b/l10n/ar/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 58288103c1..369e400f5f 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index de67c217d3..97578e2ef9 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index c05edd40e0..07c5b6fd22 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "المساعدة" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "شخصي" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "إعدادات" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "المستخدمين" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "التطبيقات" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "المدير" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "تحميل ملفات ZIP متوقف" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "الملفات بحاجة الى ان يتم تحميلها واحد تلو الاخر" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "العودة الى الملفات" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "الملفات المحددة كبيرة جدا ليتم ضغطها في ملف zip" @@ -113,72 +113,76 @@ msgstr "%s لا يسمح لك باستخدام نقطه (.) في اسم قاعد msgid "%s set the database host." msgstr "%s ادخل اسم خادم قاعدة البيانات" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "اسم المستخدم / أو كلمة المرور الخاصة بـPostgreSQL غير صحيحة" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "اسم المستخدم و/أو كلمة المرور لنظام Oracle غير صحيح" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "اسم المستخدم و/أو كلمة المرور لنظام MySQL غير صحيح" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "خطأ في قواعد البيانات : \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "الأمر المخالف كان : \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "أسم المستخدم '%s'@'localhost' الخاص بـ MySQL موجود مسبقا" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "احذف اسم المستخدم هذا من الـ MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "أسم المستخدم '%s'@'%%' الخاص بـ MySQL موجود مسبقا" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "احذف اسم المستخدم هذا من الـ MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "اسم المستخدم و/أو كلمة المرور لنظام Oracle غير صحيح" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "الأمر المخالف كان : \"%s\", اسم المستخدم : %s, كلمة المرور: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "اسم المستخدم و/أو كلمة المرور لنظام MS SQL غير صحيح : %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "اعدادات خادمك غير صحيحة بشكل تسمح لك بمزامنة ملفاتك وذلك بسبب أن واجهة WebDAV تبدو معطلة" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "الرجاء التحقق من دليل التنصيب." diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index e0f912c9ba..de2dc8b777 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/user_ldap.po b/l10n/ar/user_ldap.po index 459d3c4da5..9674f31fb6 100644 --- a/l10n/ar/user_ldap.po +++ b/l10n/ar/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index 7d6092b5f4..e2a9f071ad 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "последната година" msgid "years ago" msgstr "последните години" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Добре" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Отказ" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Отказ" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Не" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Добре" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 160de033ba..2dbb38e8b9 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index 8c95fe66a3..00fc8947a1 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index 156d054e77..7c4ce74f7a 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index 76a4f6c926..4784eccbdd 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index 5ba599532f..9926586c63 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Помощ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Лични" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Настройки" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Потребители" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Приложения" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Админ" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Изтеглянето като ZIP е изключено." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Файловете трябва да се изтеглят един по един." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Назад към файловете" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Избраните файлове са прекалено големи за генерирането на ZIP архив." @@ -113,72 +113,76 @@ msgstr "%s, не можете да ползвате точки в името н msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Невалидно PostgreSQL потребителско име и/или парола" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Необходимо е да влезете в всъществуващ акаунт или като администратора" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Невалидно Oracle потребителско име и/или парола" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Невалидно MySQL потребителско име и/или парола" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Грешка в базата от данни: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL потребителят '%s'@'localhost' вече съществува" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Изтриване на потребителя от MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL потребителят '%s'@'%%' вече съществува." -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Изтриване на потребителя от MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Невалидно Oracle потребителско име и/или парола" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Невалидно MS SQL потребителско име и/или парола: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Моля направете повторна справка с ръководството за инсталиране." diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index e6d0abbf85..4a48feafd4 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/user_ldap.po b/l10n/bg_BG/user_ldap.po index 0859379edb..523a9f3f6b 100644 --- a/l10n/bg_BG/user_ldap.po +++ b/l10n/bg_BG/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index ffb1faa6bd..04357e7be9 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "গত বছর" msgid "years ago" msgstr "বছর পূর্বে" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "তথাস্তু" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "বাতির" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "বেছে নিন" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "বাতির" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "হ্যাঁ" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "না" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "তথাস্তু" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index 25a098953c..ef080f3a2c 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_external.po b/l10n/bn_BD/files_external.po index 910f1b7be0..756e68e648 100644 --- a/l10n/bn_BD/files_external.po +++ b/l10n/bn_BD/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index 32181f41e1..1125bc4119 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index 01a1615790..941d663b7b 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index 6ba334e04d..c0026153b0 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "সহায়িকা" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "ব্যক্তিগত" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "নিয়ামকসমূহ" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "ব্যবহারকারী" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "অ্যাপ" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "প্রশাসন" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP ডাউনলোড বন্ধ করা আছে।" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ফাইলগুলো একে একে ডাউনলোড করা আবশ্যক।" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "ফাইলে ফিরে চল" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "নির্বাচিত ফাইলগুলো এতই বৃহৎ যে জিপ ফাইল তৈরী করা সম্ভব নয়।" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index e0081ad76a..69adcbebf6 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/user_ldap.po b/l10n/bn_BD/user_ldap.po index 470c3d630b..95e7905df4 100644 --- a/l10n/bn_BD/user_ldap.po +++ b/l10n/bn_BD/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index fe0bd380da..f507c90fb8 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "l'any passat" msgid "years ago" msgstr "anys enrere" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "D'acord" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancel·la" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Escull" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancel·la" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "No" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "D'acord" + #: 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." diff --git a/l10n/ca/files.po b/l10n/ca/files.po index cf8af961c9..04981726ab 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_external.po b/l10n/ca/files_external.po index ae9bf2ab8a..8891a75a0e 100644 --- a/l10n/ca/files_external.po +++ b/l10n/ca/files_external.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# rogerc , 2013 +# rogerc, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-01 01:59+0200\n" -"PO-Revision-Date: 2013-04-30 21:50+0000\n" -"Last-Translator: rogerc \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index d23fa03363..74044813bc 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index af988ccbae..42c6cf5a92 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 9225ebad50..0bacb709f9 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ajuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Configuració" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usuaris" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicacions" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administració" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "La baixada en ZIP està desactivada." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Els fitxers s'han de baixar d'un en un." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Torna a Fitxers" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Els fitxers seleccionats son massa grans per generar un fitxer zip." @@ -113,72 +113,76 @@ msgstr "%s no podeu usar punts en el nom de la base de dades" msgid "%s set the database host." msgstr "%s establiu l'ordinador central de la base de dades." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nom d'usuari i/o contrasenya PostgreSQL no vàlids" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Heu d'escriure un compte existent o el d'administrador." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nom d'usuari i/o contrasenya Oracle no vàlids" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nom d'usuari i/o contrasenya MySQL no vàlids" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Error DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "L'ordre en conflicte és: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "L'usuari MySQL '%s'@'localhost' ja existeix." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Elimina aquest usuari de MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "L'usuari MySQL '%s'@'%%' ja existeix" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Elimina aquest usuari de MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nom d'usuari i/o contrasenya Oracle no vàlids" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nom d'usuari i/o contrasenya MS SQL no vàlids: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Comproveu les guies d'instal·lació." diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 0d6054fa5b..1fdca4c9dc 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/user_ldap.po b/l10n/ca/user_ldap.po index b664c8a830..10f3f0166d 100644 --- a/l10n/ca/user_ldap.po +++ b/l10n/ca/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 11:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index 48fbe83a66..be3bbdc893 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "minulý rok" msgid "years ago" msgstr "před lety" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Zrušit" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Vybrat" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Zrušit" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ano" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ne" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index f164d72836..7a36587eeb 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index 62dc51cbd5..927cfd451c 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index b26c3b61d6..ce9e280736 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index ce5f4e645f..a7f3b6ea85 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index ae5d9d8705..ad1a269592 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Nápověda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Osobní" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Nastavení" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Uživatelé" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikace" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrace" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Stahování ZIPu je vypnuto." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Soubory musí být stahovány jednotlivě." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Zpět k souborům" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Vybrané soubory jsou příliš velké pro vytvoření zip souboru." @@ -113,72 +113,76 @@ msgstr "V názvu databáze %s nesmíte používat tečky." msgid "%s set the database host." msgstr "Zadejte název počítače s databází %s." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Uživatelské jméno, či heslo PostgreSQL není platné" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Musíte zadat existující účet, či správce." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Uživatelské jméno, či heslo Oracle není platné" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Uživatelské jméno, či heslo MySQL není platné" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Chyba DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Podezřelý příkaz byl: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Uživatel '%s'@'localhost' již v MySQL existuje." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Zahodit uživatele z MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Uživatel '%s'@'%%' již v MySQL existuje" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Zahodit uživatele z MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Uživatelské jméno, či heslo Oracle není platné" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Podezřelý příkaz byl: \"%s\", jméno: %s, heslo: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Uživatelské jméno, či heslo MSSQL není platné: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Váš webový server není správně nastaven pro umožnění synchronizace, protože rozhraní WebDAV je rozbité." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Zkonzultujte, prosím, průvodce instalací." diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 9af35dfb21..64f7c79490 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/user_ldap.po b/l10n/cs_CZ/user_ldap.po index 70baa024a0..60c1780300 100644 --- a/l10n/cs_CZ/user_ldap.po +++ b/l10n/cs_CZ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/core.po b/l10n/cy_GB/core.po index 2afb7a5ea8..7d0fc54707 100644 --- a/l10n/cy_GB/core.po +++ b/l10n/cy_GB/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "y llynedd" msgid "years ago" msgstr "blwyddyn yn ôl" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Iawn" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Diddymu" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Dewisiwch" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Diddymu" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ie" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Na" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Iawn" + #: 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." diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index 32f11d2044..e6532a72d4 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_external.po b/l10n/cy_GB/files_external.po index 08d181aa3b..8eedfc37f7 100644 --- a/l10n/cy_GB/files_external.po +++ b/l10n/cy_GB/files_external.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-05-01 01:59+0200\n" -"PO-Revision-Date: 2013-04-30 15:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index 8a848fc501..a7f0caca27 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.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-05-01 01:59+0200\n" -"PO-Revision-Date: 2013-04-30 14:47+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_trashbin.po b/l10n/cy_GB/files_trashbin.po index e1cc6bccb9..45e6ca9476 100644 --- a/l10n/cy_GB/files_trashbin.po +++ b/l10n/cy_GB/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/lib.po b/l10n/cy_GB/lib.po index b0dbdfec6c..e29f1d19e6 100644 --- a/l10n/cy_GB/lib.po +++ b/l10n/cy_GB/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-05-01 02:00+0200\n" -"PO-Revision-Date: 2013-04-30 14:46+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: cy_GB\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Cymorth" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personol" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Gosodiadau" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Defnyddwyr" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Pecynnau" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Gweinyddu" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Mae llwytho ZIP wedi ei ddiffodd." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Mae angen llwytho ffeiliau i lawr fesul un." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Nôl i Ffeiliau" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Mae'r ffeiliau ddewiswyd yn rhy fawr i gynhyrchu ffeil zip." @@ -113,72 +113,76 @@ msgstr "%s does dim hawl defnyddio dot yn enw'r gronfa ddata" msgid "%s set the database host." msgstr "%s gosod gwesteiwr y gronfa ddata." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Enw a/neu gyfrinair PostgreSQL annilys" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Rhaid i chi naill ai gyflwyno cyfrif presennol neu'r gweinyddwr." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Enw a/neu gyfrinair Oracle annilys" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Enw a/neu gyfrinair MySQL annilys" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Gwall DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Defnyddiwr MySQL '%s'@'localhost' yn bodoli eisoes." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Gollwng y defnyddiwr hwn o MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Defnyddiwr MySQL '%s'@'%%' eisoes yn bodoli" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Gollwng y defnyddiwr hwn o MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Enw a/neu gyfrinair Oracle annilys" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\", enw: %s, cyfrinair: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Enw a/neu gyfrinair MS SQL annilys: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Nid yw eich gweinydd wedi'i gyflunio eto i ganiatáu cydweddu ffeiliau oherwydd bod y rhyngwyneb WebDAV wedi torri." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Gwiriwch y canllawiau gosod eto." diff --git a/l10n/cy_GB/settings.po b/l10n/cy_GB/settings.po index 3d0b6fb4d4..4680367639 100644 --- a/l10n/cy_GB/settings.po +++ b/l10n/cy_GB/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/user_ldap.po b/l10n/cy_GB/user_ldap.po index 193441f938..b8246f1cea 100644 --- a/l10n/cy_GB/user_ldap.po +++ b/l10n/cy_GB/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/core.po b/l10n/da/core.po index a7b1bd9925..3d81bf96c9 100644 --- a/l10n/da/core.po +++ b/l10n/da/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "sidste år" msgid "years ago" msgstr "år siden" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Annuller" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Vælg" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Annuller" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nej" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/da/files.po b/l10n/da/files.po index 36c60585d2..57a44c5f98 100644 --- a/l10n/da/files.po +++ b/l10n/da/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_external.po b/l10n/da/files_external.po index 85d11b63bf..3a75895703 100644 --- a/l10n/da/files_external.po +++ b/l10n/da/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index 39cc42941e..a51c29810a 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index 05219a3d19..909dec96ad 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index ac8b6efab1..021991572a 100644 --- a/l10n/da/lib.po +++ b/l10n/da/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hjælp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personligt" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Indstillinger" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Brugere" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP-download er slået fra." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Filer skal downloades en for en." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Tilbage til Filer" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "De markerede filer er for store til at generere en ZIP-fil." @@ -113,72 +113,76 @@ msgstr "%s du må ikke bruge punktummer i databasenavnet." msgid "%s set the database host." msgstr "%s sæt database værten." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL brugernavn og/eller kodeord er ikke gyldigt." -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle brugernavn og/eller kodeord er ikke gyldigt." +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL brugernavn og/eller kodeord er ikke gyldigt." -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Databasefejl: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Fejlende kommando var: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL brugeren '%s'@'localhost' eksisterer allerede." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Slet denne bruger fra MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL brugeren '%s'@'%%' eksisterer allerede." -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Slet denne bruger fra MySQL" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle brugernavn og/eller kodeord er ikke gyldigt." + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Fejlende kommando var: \"%s\", navn: %s, password: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL brugernavn og/eller adgangskode ikke er gyldigt: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Din webserver er endnu ikke sat op til at tillade fil synkronisering fordi WebDAV grænsefladen virker ødelagt." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Dobbelttjek venligst installations vejledningerne." diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 0d668d9af3..1fc6fbb763 100644 --- a/l10n/da/settings.po +++ b/l10n/da/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Ole Holm Frandsen \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 0d1223e965..9639ba3b5f 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/core.po b/l10n/de/core.po index dbe7d0f5ad..4d051755e2 100644 --- a/l10n/de/core.po +++ b/l10n/de/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Marcel Kühlhorn \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -215,26 +215,30 @@ msgstr "Letztes Jahr" msgid "years ago" msgstr "Vor Jahren" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Abbrechen" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Auswählen" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Abbrechen" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nein" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/de/files.po b/l10n/de/files.po index 2a33c07223..6c709fddd8 100644 --- a/l10n/de/files.po +++ b/l10n/de/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_external.po b/l10n/de/files_external.po index aaa2995382..762e9d3486 100644 --- a/l10n/de/files_external.po +++ b/l10n/de/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 21:55+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 3b551c2031..5662022a29 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-09 19:50+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index fb1fdac414..ea4291698a 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index 417ce173f3..6f60dd7fd8 100644 --- a/l10n/de/lib.po +++ b/l10n/de/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-05-12 02:02+0200\n" -"PO-Revision-Date: 2013-05-06 22:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hilfe" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persönlich" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Einstellungen" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Benutzer" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administration" @@ -114,72 +114,76 @@ msgstr "%s Der Datenbank-Name darf keine Punkte enthalten" msgid "%s set the database host." msgstr "%s setze den Datenbank-Host" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL Benutzername und/oder Passwort ungültig" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Du musst entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle Benutzername und/oder Passwort ungültig" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL Benutzername und/oder Passwort ungültig" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB Fehler: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Fehlerhafter Befehl war: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL Benutzer '%s'@'localhost' existiert bereits." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Lösche diesen Benutzer von MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL Benutzer '%s'@'%%' existiert bereits" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Lösche diesen Benutzer aus MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle Benutzername und/oder Passwort ungültig" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL Benutzername und/oder Password ungültig: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Dein Web-Server ist noch nicht für Datei-Synchronisation bereit, weil die WebDAV-Schnittstelle vermutlich defekt ist." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Bitte prüfe die Installationsanleitungen." diff --git a/l10n/de/settings.po b/l10n/de/settings.po index d161a392cc..b84c87664b 100644 --- a/l10n/de/settings.po +++ b/l10n/de/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index be5f6d9eb1..1d0d538225 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index f6939d83e5..9a849c6a2b 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" @@ -216,26 +216,30 @@ msgstr "Letztes Jahr" msgid "years ago" msgstr "Vor Jahren" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Abbrechen" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Auswählen" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Abbrechen" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nein" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index 9dc6112859..9f2775390a 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po index 7646967a4f..95a49523f0 100644 --- a/l10n/de_DE/files_external.po +++ b/l10n/de_DE/files_external.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 22:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index 5a9782beeb..ecf16837b2 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 21:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index 4cdafce673..7528aa33b1 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index bcbe6b91ad..802433b473 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/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-05-12 02:02+0200\n" -"PO-Revision-Date: 2013-05-06 21:53+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hilfe" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persönlich" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Einstellungen" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Benutzer" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrator" @@ -113,72 +113,76 @@ msgstr "%s Der Datenbank-Name darf keine Punkte enthalten" msgid "%s set the database host." msgstr "%s setze den Datenbank-Host" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL Benutzername und/oder Passwort ungültig" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle Benutzername und/oder Passwort ungültig" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL Benutzername und/oder Passwort ungültig" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB Fehler: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Fehlerhafter Befehl war: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL Benutzer '%s'@'localhost' existiert bereits." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Lösche diesen Benutzer aus MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL Benutzer '%s'@'%%' existiert bereits" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Lösche diesen Benutzer aus MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle Benutzername und/oder Passwort ungültig" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL Benutzername und/oder Passwort ungültig: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Ihr Web-Server ist noch nicht für eine Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Bitte prüfen Sie die Installationsanleitungen." diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index 860895432a..231673b043 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index c0780d51b8..7f49c8e8ea 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.po @@ -5,13 +5,14 @@ # Translators: # a.tangemann , 2013 # Marcel Kühlhorn , 2013 +# traductor , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-19 01:58+0200\n" -"PO-Revision-Date: 2013-05-18 22:00+0000\n" -"Last-Translator: a.tangemann \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -360,7 +361,7 @@ msgid "" "achieve a similar behaviour as before ownCloud 5 enter the user display name" " attribute in the following field. Leave it empty for default behaviour. " "Changes will have effect only on newly mapped (added) LDAP users." -msgstr "" +msgstr "Standardmäßig wird der interne Benutzername mittels des UUID-Attributes erzeugt. Dies stellt sicher, dass der Benutzername einzigartig ist und keinerlei Zeichen konvertiert werden müssen. Der interne Benutzername unterliegt Beschränkungen, die nur die nachfolgenden Zeichen erlauben: [ a-zA-Z0-9_.@- ]. Andere Zeichenwerden mittels ihrer korrespondierenden Zeichen ersetzt oder einfach ausgelassen. Bei Übereinstimmungen wird ein Zähler hinzugefügt bzw. der Zähler um einen Wert erhöht. Der interne Benutzername wird benutzt, um einen Benutzer intern zu identifizieren. Es ist ebenso der standardmäßig vorausgewählte Namen des Heimatverzeichnisses in ownCloud. Es dient weiterhin als Port für Remote-URLs - zum Beispiel für alle *DAV-Dienste Mit dieser Einstellung kann das Standardverhalten überschrieben werden. Um ein ähnliches Verhalten wie vor ownCloud 5 zu erzielen, fügen Sie das anzuzeigende Attribut des Benutzernamens in das nachfolgende Feld ein. Lassen Sie dies hingegen für das Standardverhalten leer. Die Änderungen werden sich einzig und allein nur auf neu gemappte (hinzugefügte) LDAP-Benutzer auswirken." #: templates/settings.php:103 msgid "Internal Username Attribute:" diff --git a/l10n/el/core.po b/l10n/el/core.po index adff3efe96..404b31bf2c 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Wasilis , 2013 +# Wasilis , 2013 # KAT.RAT12 , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "τελευταίο χρόνο" msgid "years ago" msgstr "χρόνια πριν" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Οκ" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Άκυρο" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Επιλέξτε" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Άκυρο" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ναι" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Όχι" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Οκ" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/el/files.po b/l10n/el/files.po index 78423ef928..776ae2e521 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Efstathios Iosifidis , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"Last-Translator: Efstathios Iosifidis \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" @@ -217,7 +218,7 @@ msgstr "{count} αρχεία" #: lib/app.php:53 msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" -msgstr "" +msgstr "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από το ownCloud" #: lib/app.php:73 msgid "Unable to rename file" diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index 592955425a..cc6ffbfcf0 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 17:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index 793338e63d..b963f18ed1 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index 05b9266f9e..09dfdf6d4a 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index aa1aed6797..66fdcec8a4 100644 --- a/l10n/el/lib.po +++ b/l10n/el/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Βοήθεια" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Προσωπικά" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ρυθμίσεις" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Χρήστες" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Εφαρμογές" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Διαχειριστής" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Η λήψη ZIP απενεργοποιήθηκε." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Τα αρχεία πρέπει να ληφθούν ένα-ένα." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Πίσω στα Αρχεία" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Τα επιλεγμένα αρχεία είναι μεγάλα ώστε να δημιουργηθεί αρχείο zip." @@ -113,72 +113,76 @@ msgstr "%s μάλλον δεν χρησιμοποιείτε τελείες στ msgid "%s set the database host." msgstr "%s ρυθμίση του κεντρικόυ υπολογιστή βάσης δεδομένων. " -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Μη έγκυρος χρήστης και/ή συνθηματικό της MySQL" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Σφάλμα Βάσης Δεδομένων: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Η εντολη παραβατικοτητας ηταν: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Υπάρχει ήδη ο χρήστης '%s'@'localhost' της MySQL." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Απόρριψη αυτού του χρήστη από την MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Ο χρήστης '%s'@'%%' της MySQL υπάρχει ήδη" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Απόρριψη αυτού του χρήστη από την MySQL" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Η εντολη παραβατικοτητας ηταν: \"%s\", ονομα: %s, κωδικος: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Το όνομα χρήστη και/ή ο κωδικός της MS SQL δεν είναι έγκυρα: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Ο διακομιστής σας δεν έχει ρυθμιστεί κατάλληλα ώστε να επιτρέπει τον συγχρονισμό αρχείων γιατί η διεπαφή WebDAV πιθανόν να είναι κατεστραμμένη." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Ελέγξτε ξανά τις οδηγίες εγκατάστασης." diff --git a/l10n/el/settings.po b/l10n/el/settings.po index 9103a1e0fc..b5ee78199a 100644 --- a/l10n/el/settings.po +++ b/l10n/el/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/user_ldap.po b/l10n/el/user_ldap.po index 815d1c8291..39de6e98c6 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files.po b/l10n/en@pirate/files.po index 754680e81f..c3f62f9571 100644 --- a/l10n/en@pirate/files.po +++ b/l10n/en@pirate/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_sharing.po b/l10n/en@pirate/files_sharing.po index b60b265114..c8e6a64b2e 100644 --- a/l10n/en@pirate/files_sharing.po +++ b/l10n/en@pirate/files_sharing.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 04:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 3fc75e6110..0ed73ec376 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "lastajare" msgid "years ago" msgstr "jaroj antaŭe" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Akcepti" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Nuligi" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Elekti" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Nuligi" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Jes" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ne" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Akcepti" + #: 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." diff --git a/l10n/eo/files.po b/l10n/eo/files.po index bc5988ea85..9e476a415a 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index ef0f0605dd..915ab9e130 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index 4e6e0cbf14..c1815327db 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index edd0e86b30..e30b73af02 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index b88a2dd5e2..7b7db0ac13 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Helpo" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persona" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Agordo" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Uzantoj" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikaĵoj" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administranto" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP-elŝuto estas malkapabligita." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Dosieroj devas elŝutiĝi unuope." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Reen al la dosieroj" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "La elektitaj dosieroj tro grandas por genero de ZIP-dosiero." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index 5103daa931..ea11dc41a8 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index 2a5527f375..305aa9ebd8 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/core.po b/l10n/es/core.po index 7e587eed77..bcbb2c83cc 100644 --- a/l10n/es/core.po +++ b/l10n/es/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-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 23:10+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ggam \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -215,26 +215,30 @@ msgstr "el año pasado" msgid "years ago" msgstr "hace años" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Aceptar" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancelar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Seleccionar" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancelar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "No" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Aceptar" + #: 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." diff --git a/l10n/es/files.po b/l10n/es/files.po index eff94d9cc9..f6922124d9 100644 --- a/l10n/es/files.po +++ b/l10n/es/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_external.po b/l10n/es/files_external.po index 3160441fa9..435a62fe2f 100644 --- a/l10n/es/files_external.po +++ b/l10n/es/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index dde7058914..55007656ed 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index 06773f7cd2..c51f723c6c 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index cf73637ca6..9affc11972 100644 --- a/l10n/es/lib.po +++ b/l10n/es/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-05-12 02:02+0200\n" -"PO-Revision-Date: 2013-05-04 16:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ayuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ajustes" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usuarios" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicaciones" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administración" @@ -113,72 +113,76 @@ msgstr "%s no se puede utilizar puntos en el nombre de la base de datos" msgid "%s set the database host." msgstr "%s ingresar el host de la base de datos." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Usuario y/o contraseña de PostgreSQL no válidos" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Tiene que ingresar una cuenta existente o la del administrador." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Usuario y/o contraseña de Oracle no válidos" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Usuario y/o contraseña de MySQL no válidos" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Error BD: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Comando infractor: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Usuario MySQL '%s'@'localhost' ya existe." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Eliminar este usuario de MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Usuario MySQL '%s'@'%%' ya existe" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Eliminar este usuario de MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Usuario y/o contraseña de Oracle no válidos" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Comando infractor: \"%s\", nombre: %s, contraseña: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Usuario y/o contraseña de MS SQL no válidos: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Por favor, vuelva a comprobar las guías de instalación." diff --git a/l10n/es/settings.po b/l10n/es/settings.po index 4c899470e4..04074a0a42 100644 --- a/l10n/es/settings.po +++ b/l10n/es/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ggam \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/user_ldap.po b/l10n/es/user_ldap.po index 61e06ea4d9..60ce98ad43 100644 --- a/l10n/es/user_ldap.po +++ b/l10n/es/user_ldap.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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 23:50+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index c0ae45f5a3..e4e0a5550b 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "el año pasado" msgid "years ago" msgstr "años atrás" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Aceptar" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancelar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Elegir" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancelar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sí" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "No" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Aceptar" + #: 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." diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index f89b59caad..a6178d4834 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 23:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_external.po b/l10n/es_AR/files_external.po index f2b512a503..14fa3cdbff 100644 --- a/l10n/es_AR/files_external.po +++ b/l10n/es_AR/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index 75310dddcc..1e7b677a93 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 6677f0c624..433e065a7c 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index d22bcbdee2..0c4628ce5d 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ayuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Configuración" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usuarios" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicaciones" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administración" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "La descarga en ZIP está desactivada." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Los archivos deben ser descargados de a uno." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Volver a archivos" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Los archivos seleccionados son demasiado grandes para generar el archivo zip." @@ -113,72 +113,76 @@ msgstr "%s no puede usar puntos en el nombre de la Base de Datos" msgid "%s set the database host." msgstr "%s Especifique la dirección de la Base de Datos" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nombre de usuario o contraseña de PostgradeSQL no válido." -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Debe ingresar una cuenta existente o el administrador" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "El nombre de usuario y contraseña no son válidos" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Usuario y/o contraseña MySQL no válido" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Error DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "El comando no comprendido es: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Usuario MySQL '%s'@'localhost' ya existente" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Borrar este usuario de MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Usuario MySQL '%s'@'%%' ya existente" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Borrar este usuario de MySQL" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "El nombre de usuario y contraseña no son válidos" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "El comando no comprendido es: \"%s\", nombre: \"%s\", contraseña: \"%s\"" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nombre de usuario y contraseña de MS SQL no son válidas: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Tu servidor web no está configurado todavía para permitir sincronización de archivos porque la interfaz WebDAV parece no funcionar." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Por favor, comprobá nuevamente la guía de instalación." diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index fdf454a85e..d2e301928f 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/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-05-20 02:05+0200\n" -"PO-Revision-Date: 2013-05-19 23:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 9912a5ca2b..701428e5ae 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index a03e773beb..44a8a4e36b 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "viimasel aastal" msgid "years ago" msgstr "aastat tagasi" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Loobu" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Vali" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Loobu" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Jah" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ei" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 3084922f77..025cdc35cf 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index bcacfde3df..347a4b9d54 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 11:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index a698beda26..90d63ed0ae 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 11:07+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 655ddff375..632d1ffb0f 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index 7015ed74a8..15363d6f0e 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-16 01:58+0200\n" -"PO-Revision-Date: 2013-05-15 08:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Abiinfo" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Isiklik" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Seaded" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Kasutajad" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Rakendused" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" @@ -114,72 +114,76 @@ msgstr "%s punktide kasutamine andmebaasi nimes pole lubatud" msgid "%s set the database host." msgstr "%s määra andmebaasi server." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL kasutajatunnus ja/või parool pole õiged" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Sisesta kas juba olemasolev konto või administrator." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle kasutajatunnus ja/või parool pole õiged" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL kasutajatunnus ja/või parool pole õiged" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Andmebaasi viga: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Tõrkuv käsk oli: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL kasutaja '%s'@'localhost' on juba olemas." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Kustuta see kasutaja MySQL-ist" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL kasutaja '%s'@'%%' on juba olemas" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Kustuta see kasutaja MySQL-ist." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle kasutajatunnus ja/või parool pole õiged" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Tõrkuv käsk oli: \"%s\", nimi: %s, parool: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL kasutajatunnus ja/või parool pole õiged: %s" -#: setup.php:859 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Veebiserveri ei ole veel korralikult seadistatud võimaldamaks failide sünkroniseerimist, kuna WebDAV liides näib olevat mittetoimiv." -#: setup.php:860 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Palun tutvu veelkord paigalduse juhenditega." diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index 8ba6e31707..6162b117d9 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index 93e601cf3e..8ced5675c1 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.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-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 07:58+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 930dc72fd7..1678d02561 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "joan den urtean" msgid "years ago" msgstr "urte" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ados" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Ezeztatu" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Aukeratu" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Ezeztatu" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Bai" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ez" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Ados" + #: 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." diff --git a/l10n/eu/files.po b/l10n/eu/files.po index df564bee56..b63a4ea80e 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_external.po b/l10n/eu/files_external.po index f6059f3288..c1517d8e38 100644 --- a/l10n/eu/files_external.po +++ b/l10n/eu/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index ca0772183c..7b2e073f37 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index d29b34cf73..d0cad8e270 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 2319ead910..0fb97f4caf 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Laguntza" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Pertsonala" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ezarpenak" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Erabiltzaileak" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikazioak" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP deskarga ez dago gaituta." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Fitxategiak banan-banan deskargatu behar dira." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Itzuli fitxategietara" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Hautatuko fitxategiak oso handiak dira zip fitxategia sortzeko." @@ -113,72 +113,76 @@ msgstr "%s ezin duzu punturik erabili datu basearen izenean." msgid "%s set the database host." msgstr "%s sartu datu basearen hostalaria." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak." -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Existitzen den kontu bat edo administradorearena jarri behar duzu." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle erabiltzaile edota pasahitza ez dira egokiak." +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL erabiltzaile edota pasahitza ez dira egokiak." -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB errorea: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Errorea komando honek sortu du: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL '%s'@'localhost' erabiltzailea dagoeneko existitzen da." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Ezabatu erabiltzaile hau MySQLtik" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL '%s'@'%%' erabiltzailea dagoeneko existitzen da" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Ezabatu erabiltzaile hau MySQLtik." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle erabiltzaile edota pasahitza ez dira egokiak." + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Errorea komando honek sortu du: \"%s\", izena: %s, pasahitza: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL erabiltzaile izena edota pasahitza ez dira egokiak: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Zure web zerbitzaria ez dago oraindik ongi konfiguratuta fitxategien sinkronizazioa egiteko, WebDAV interfazea ongi ez dagoela dirudi." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Mesedez begiratu instalazio gidak." diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index 6c4e25ee0a..5564b94a31 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/user_ldap.po b/l10n/eu/user_ldap.po index c0a31304c6..a86914e471 100644 --- a/l10n/eu/user_ldap.po +++ b/l10n/eu/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index b399c5fbc0..dc320638bd 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "سال قبل" msgid "years ago" msgstr "سال‌های قبل" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "قبول" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "منصرف شدن" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "انتخاب کردن" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "منصرف شدن" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "بله" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "نه" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "قبول" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/fa/files.po b/l10n/fa/files.po index ca53e5b2c9..b16787e022 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_external.po b/l10n/fa/files_external.po index d9f3a99ddf..316ca3fb55 100644 --- a/l10n/fa/files_external.po +++ b/l10n/fa/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index 9bc4ac8a32..f23556b137 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index adcafe886a..a246816ff7 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 41bd3beeae..62b626ded1 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "راه‌نما" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "شخصی" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "تنظیمات" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "کاربران" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr " برنامه ها" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "مدیر" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "دانلود به صورت فشرده غیر فعال است" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "فایل ها باید به صورت یکی یکی دانلود شوند" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "بازگشت به فایل ها" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "فایل های انتخاب شده بزرگتر از آن هستند که بتوان یک فایل فشرده تولید کرد" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "احتمالاً وب سرور شما طوری تنظیم نشده است که اجازه ی همگام سازی فایلها را بدهد زیرا به نظر میرسد رابط WebDAV از کار افتاده است." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "لطفاً دوباره راهنمای نصبرا بررسی کنید." diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 2b0be04165..373f6ca85e 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/user_ldap.po b/l10n/fa/user_ldap.po index 4a8fe98a4c..1d8c8ce4b6 100644 --- a/l10n/fa/user_ldap.po +++ b/l10n/fa/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/core.po b/l10n/fi/core.po index 03746586e2..ec04afbad4 100644 --- a/l10n/fi/core.po +++ b/l10n/fi/core.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/fi/files.po b/l10n/fi/files.po index a43906c14d..0625ba07dd 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/files.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/l10n/fi/lib.po b/l10n/fi/lib.po index 93a7b3b4ed..8996a10489 100644 --- a/l10n/fi/lib.po +++ b/l10n/fi/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "asetukset" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 0110a051c4..e2afacc780 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/core.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -213,26 +213,30 @@ msgstr "viime vuonna" msgid "years ago" msgstr "vuotta sitten" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Peru" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Valitse" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Peru" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Kyllä" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ei" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." @@ -406,7 +410,7 @@ msgstr "" #: lostpassword/templates/lostpassword.php:12 msgid "Request failed!
          Did you make sure your email/username was right?" -msgstr "" +msgstr "Pyyntö epäonnistui!
          Olihan sähköpostiosoitteesi/käyttäjätunnuksesi oikein?" #: lostpassword/templates/lostpassword.php:15 msgid "You will receive a link to reset your password via Email." @@ -564,7 +568,7 @@ msgstr "verkkopalvelut hallinnassasi" #: templates/layout.user.php:36 #, php-format msgid "%s is available. Get more information on how to update." -msgstr "" +msgstr "%s on saatavilla. Lue lisätietoja, miten päivitys asennetaan." #: templates/layout.user.php:61 msgid "Log out" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index d1f62c02c7..35eb801053 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_external.po b/l10n/fi_FI/files_external.po index 5063d70911..edd382a35e 100644 --- a/l10n/fi_FI/files_external.po +++ b/l10n/fi_FI/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index dedda4f435..3b9d716daf 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index b3da91aeff..851ab24cd6 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 4a438cdbf2..14b138f950 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Jiri Grönroos , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,43 +18,43 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ohje" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Henkilökohtainen" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Asetukset" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Käyttäjät" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Sovellukset" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Ylläpitäjä" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP-lataus on poistettu käytöstä." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Tiedostot on ladattava yksittäin." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Takaisin tiedostoihin" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Valitut tiedostot ovat liian suurikokoisia mahtuakseen zip-tiedostoon." @@ -113,72 +114,76 @@ msgstr "%s et voi käyttää pisteitä tietokannan nimessä" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL:n käyttäjätunnus ja/tai salasana on väärin" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oraclen käyttäjätunnus ja/tai salasana on väärin" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "Oracle-yhteyttä ei voitu muodostaa" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL:n käyttäjätunnus ja/tai salasana on väärin" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Tietokantavirhe: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL-käyttäjä '%s'@'localhost' on jo olemassa." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Pudota tämä käyttäjä MySQL:stä" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL-käyttäjä '%s'@'%%' on jo olemassa" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Pudota tämä käyttäjä MySQL:stä." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oraclen käyttäjätunnus ja/tai salasana on väärin" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL -käyttäjätunnus ja/tai -salasana on väärin: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Lue tarkasti asennusohjeet." diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index 52d5c8723a..6ff0246e51 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/user_ldap.po b/l10n/fi_FI/user_ldap.po index 0bfc9766d9..d4087f7e42 100644 --- a/l10n/fi_FI/user_ldap.po +++ b/l10n/fi_FI/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index 62215da210..89298278d5 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: msoko \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "l'année dernière" msgid "years ago" msgstr "il y a plusieurs années" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Annuler" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Choisir" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Annuler" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Oui" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Non" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/fr/files.po b/l10n/fr/files.po index aef01563f9..3bea1fc06d 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_external.po b/l10n/fr/files_external.po index 1038a04378..6426a14ef8 100644 --- a/l10n/fr/files_external.po +++ b/l10n/fr/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index d1da943c7c..72d0af006b 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index 1116a5b394..699ddf1fa0 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index 6443c8f3bd..fc6f5e5ae5 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Aide" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personnel" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Paramètres" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Utilisateurs" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Applications" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administration" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Téléchargement ZIP désactivé." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Les fichiers nécessitent d'être téléchargés un par un." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Retour aux Fichiers" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Les fichiers sélectionnés sont trop volumineux pour être compressés." @@ -113,72 +113,76 @@ msgstr "%s vous nez pouvez pas utiliser de points dans le nom de la base de donn msgid "%s set the database host." msgstr "%s spécifiez l'hôte de la base de données." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL invalide" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Vous devez spécifier soit le nom d'un compte existant, soit celui de l'administrateur." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nom d'utilisateur et/ou mot de passe de la base Oracle invalide" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nom d'utilisateur et/ou mot de passe de la base MySQL invalide" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Erreur de la base de données : \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "La requête en cause est : \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "L'utilisateur MySQL '%s'@'localhost' existe déjà." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Retirer cet utilisateur de la base MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "L'utilisateur MySQL '%s'@'%%' existe déjà" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Retirer cet utilisateur de la base MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nom d'utilisateur et/ou mot de passe de la base Oracle invalide" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "La requête en cause est : \"%s\", nom : %s, mot de passe : %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Le nom d'utilisateur et/ou le mot de passe de la base MS SQL est invalide : %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Veuillez vous référer au guide d'installation." diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index d6ec6b40d0..755128df72 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index d277eef42e..4067405dd2 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.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-05-19 01:58+0200\n" -"PO-Revision-Date: 2013-05-18 18:01+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: plachance \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index 74443dba87..3a992b1ece 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "último ano" msgid "years ago" msgstr "anos atrás" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Aceptar" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancelar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Escoller" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancelar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Si" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Non" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Aceptar" + #: 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." diff --git a/l10n/gl/files.po b/l10n/gl/files.po index 627dadfcfa..8b39cf6301 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index d0b6177856..5353e0077d 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index e9c4c07adc..90d51ee3cf 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index 917e0cfc51..ecaed1a19b 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index f537590573..e5cf1f4955 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Axuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persoal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Axustes" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usuarios" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicativos" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administración" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "As descargas ZIP están desactivadas." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Os ficheiros necesitan seren descargados dun en un." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Volver aos ficheiros" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip." @@ -113,72 +113,76 @@ msgstr "%s non se poden empregar puntos na base de datos" msgid "%s set the database host." msgstr "%s estabeleza o servidor da base de datos" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Deberá introducir unha conta existente ou o administrador." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nome de usuario e/ou contrasinal de Oracle incorrecto" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nome de usuario e/ou contrasinal de MySQL incorrecto" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Produciuse un erro na base de datos: «%s»" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "A orde ofensiva foi: «%s»" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "O usuario MySQL '%s'@'localhost' xa existe." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Omitir este usuario de MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "O usuario MySQL «%s»@«%%» xa existe." -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Omitir este usuario de MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nome de usuario e/ou contrasinal de Oracle incorrecto" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "A orde ofensiva foi: «%s», nome: %s, contrasinal: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nome de usuario e/ou contrasinal de MS SQL incorrecto: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "O seu servidor web non está aínda configurado adecuadamente para permitir a sincronización de ficheiros xa que semella que a interface WebDAV non está a funcionar." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Volva comprobar as guías de instalación" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 3914db5ce1..74c09165be 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index a4c52f858f..49b8fa8f96 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 11:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/core.po b/l10n/he/core.po index d605f6893b..0af74d8309 100644 --- a/l10n/he/core.po +++ b/l10n/he/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "שנה שעברה" msgid "years ago" msgstr "שנים" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "בסדר" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "ביטול" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "בחירה" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "ביטול" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "כן" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "לא" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "בסדר" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/he/files.po b/l10n/he/files.po index a9d272af9c..abb7b0cc67 100644 --- a/l10n/he/files.po +++ b/l10n/he/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index c0c781c9cd..9a1d53589b 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index a457a7f614..c9c3852419 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index 7c32f2b83b..dfdeec5351 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index d611275471..0f47beffef 100644 --- a/l10n/he/lib.po +++ b/l10n/he/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "עזרה" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "אישי" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "הגדרות" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "משתמשים" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "יישומים" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "מנהל" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "הורדת ZIP כבויה" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "יש להוריד את הקבצים אחד אחרי השני." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "חזרה לקבצים" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "הקבצים הנבחרים גדולים מידי ליצירת קובץ zip." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index fa36b2f31e..e3beab8096 100644 --- a/l10n/he/settings.po +++ b/l10n/he/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po index 86da072797..7612e8edea 100644 --- a/l10n/he/user_ldap.po +++ b/l10n/he/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index 09e45c10d5..7b7465c414 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index bee0b2803d..b6ed4f2b48 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "सहयोग" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "यक्तिगत" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "सेटिंग्स" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "उपयोगकर्ता" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index 73cc62216f..9471638d9f 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "prošlu godinu" msgid "years ago" msgstr "godina" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "U redu" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Odustani" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Izaberi" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Odustani" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ne" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "U redu" + #: 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." diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 8e5d034383..d85601532c 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_external.po b/l10n/hr/files_external.po index 2e386aed7b..6eef1684f4 100644 --- a/l10n/hr/files_external.po +++ b/l10n/hr/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index 7e51b0c2de..6a0b1c13e7 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index a0d1710ecd..7c054264c4 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index 4004b99b0e..98511a6ff2 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pomoć" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Osobno" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Postavke" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Korisnici" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikacije" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrator" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index 958c0ac531..f86beb7215 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/user_ldap.po b/l10n/hr/user_ldap.po index 166e8e4738..ec2531ec06 100644 --- a/l10n/hr/user_ldap.po +++ b/l10n/hr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 3d1f00c6a4..e077229e9a 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "tavaly" msgid "years ago" msgstr "több éve" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Mégsem" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Válasszon" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Mégsem" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Igen" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nem" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index bbdedfe71e..11ac1f30c0 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_external.po b/l10n/hu_HU/files_external.po index f040dbabdc..45c8d923e2 100644 --- a/l10n/hu_HU/files_external.po +++ b/l10n/hu_HU/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" -"PO-Revision-Date: 2013-05-01 16:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index c2a6ad60a7..56e7f66070 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index 2b1cf55a60..3b66e1260b 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index 9b4f3529f8..a03140c35c 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Súgó" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Személyes" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Beállítások" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Felhasználók" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Alkalmazások" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Adminsztráció" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "A ZIP-letöltés nincs engedélyezve." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "A fájlokat egyenként kell letölteni." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Vissza a Fájlokhoz" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "A kiválasztott fájlok túl nagyok a zip tömörítéshez." @@ -113,72 +113,76 @@ msgstr "%s az adatbázis neve nem tartalmazhat pontot" msgid "%s set the database host." msgstr "%s adja meg az adatbázist szolgáltató számítógép nevét." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Az Oracle felhasználói név és/vagy jelszó érvénytelen" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "A MySQL felhasználói név és/vagy jelszó érvénytelen" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Adatbázis hiba: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "A hibát ez a parancs okozta: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "A '%s'@'localhost' MySQL felhasználó már létezik." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Törölje ezt a felhasználót a MySQL-ből" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "A '%s'@'%%' MySQL felhasználó már létezik" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Törölje ezt a felhasználót a MySQL-ből." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Az Oracle felhasználói név és/vagy jelszó érvénytelen" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "A hibát okozó parancs ez volt: \"%s\", login név: %s, jelszó: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Az MS SQL felhasználónév és/vagy jelszó érvénytelen: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Az Ön webkiszolgálója nincs megfelelően beállítva az állományok szinkronizálásához, mert a WebDAV-elérés úgy tűnik, nem működik." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Kérjük tüzetesen tanulmányozza át a telepítési útmutatót." diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 4bc6f8ef6f..357d84fe56 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/user_ldap.po b/l10n/hu_HU/user_ldap.po index 537f774ff5..1cfe317651 100644 --- a/l10n/hu_HU/user_ldap.po +++ b/l10n/hu_HU/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files.po b/l10n/hy/files.po index 52f66f4a8d..72daa086dd 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/files.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/l10n/hy/files_external.po b/l10n/hy/files_external.po index a6e391b464..245e624257 100644 --- a/l10n/hy/files_external.po +++ b/l10n/hy/files_external.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/l10n/hy/files_sharing.po b/l10n/hy/files_sharing.po index 22d56339ab..c39089bded 100644 --- a/l10n/hy/files_sharing.po +++ b/l10n/hy/files_sharing.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/l10n/hy/files_trashbin.po b/l10n/hy/files_trashbin.po index 57d556aab1..afbe098759 100644 --- a/l10n/hy/files_trashbin.po +++ b/l10n/hy/files_trashbin.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/l10n/hy/settings.po b/l10n/hy/settings.po index 0ce7e26c45..4d039f2ea6 100644 --- a/l10n/hy/settings.po +++ b/l10n/hy/settings.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:17+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 +#: js/users.js:92 templates/users.php:26 templates/users.php:78 #: templates/users.php:103 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:80 templates/users.php:115 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:155 msgid "Delete" msgstr "Ջնջել" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:420 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:421 js/users.js:427 js/users.js:442 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:426 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancellar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancellar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 861f74f821..e30ef22aa4 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_external.po b/l10n/ia/files_external.po index bebf028aa8..e59e245c38 100644 --- a/l10n/ia/files_external.po +++ b/l10n/ia/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index 0234ab82aa..b4104ed933 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index 262c7e82f7..788abf2929 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index 304647c370..a1ee19817d 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Adjuta" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Configurationes" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usatores" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Applicationes" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administration" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 9297795c3b..2a9cb44575 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/user_ldap.po b/l10n/ia/user_ldap.po index 2cccdd93f8..df0015b677 100644 --- a/l10n/ia/user_ldap.po +++ b/l10n/ia/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index e17e73ed17..059487c899 100644 --- a/l10n/id/core.po +++ b/l10n/id/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "tahun kemarin" msgid "years ago" msgstr "beberapa tahun lalu" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Oke" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Batal" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Pilih" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Batal" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ya" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Tidak" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Oke" + #: 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." diff --git a/l10n/id/files.po b/l10n/id/files.po index 9d29950e69..2b55a07afc 100644 --- a/l10n/id/files.po +++ b/l10n/id/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index af35c34bf0..560eebccca 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index 7e044193ad..153f33d41c 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index eb5ff111db..01a06ac1fa 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 88c6934ad6..1339358d4d 100644 --- a/l10n/id/lib.po +++ b/l10n/id/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Bantuan" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Pribadi" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Setelan" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Pengguna" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikasi" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Pengunduhan ZIP dimatikan." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Berkas harus diunduh satu persatu." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Kembali ke Daftar Berkas" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Berkas yang dipilih terlalu besar untuk dibuat berkas zip-nya." @@ -113,72 +113,76 @@ msgstr "%sAnda tidak boleh menggunakan karakter titik pada nama basis data" msgid "%s set the database host." msgstr "%s setel host basis data." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nama pengguna dan/atau sandi PostgreSQL tidak valid" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Anda harus memasukkan akun yang sudah ada atau administrator." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nama pengguna dan/atau sandi Oracle tidak valid" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nama pengguna dan/atau sandi MySQL tidak valid" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Galat Basis Data: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Perintah yang bermasalah: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Pengguna MySQL '%s'@'localhost' sudah ada." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Hapus pengguna ini dari MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Pengguna MySQL '%s'@'%%' sudah ada." -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Hapus pengguna ini dari MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nama pengguna dan/atau sandi Oracle tidak valid" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Perintah yang bermasalah: \"%s\", nama pengguna: %s, sandi: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nama pengguna dan/atau sandi MySQL tidak valid: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Web server Anda belum dikonfigurasikan dengan baik untuk mengizinkan sinkronisasi berkas karena tampaknya antarmuka WebDAV rusak." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Silakan periksa ulang panduan instalasi." diff --git a/l10n/id/settings.po b/l10n/id/settings.po index e490ada997..4a0a14b40b 100644 --- a/l10n/id/settings.po +++ b/l10n/id/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 339de48ade..362136515b 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/core.po b/l10n/is/core.po index 53ede14ddb..e22a70549e 100644 --- a/l10n/is/core.po +++ b/l10n/is/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "síðasta ári" msgid "years ago" msgstr "einhverjum árum" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Í lagi" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Hætta við" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Veldu" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Hætta við" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Já" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nei" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Í lagi" + #: 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." diff --git a/l10n/is/files.po b/l10n/is/files.po index c568952bc0..869426fc92 100644 --- a/l10n/is/files.po +++ b/l10n/is/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_external.po b/l10n/is/files_external.po index e92632bcfa..24ffcf24c1 100644 --- a/l10n/is/files_external.po +++ b/l10n/is/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index bd919a4af3..04af1ac95b 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index ceeac18a09..8883af2d41 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index 3aa394501c..6e7680443b 100644 --- a/l10n/is/lib.po +++ b/l10n/is/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hjálp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Um mig" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Stillingar" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Notendur" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Forrit" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Stjórnun" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Slökkt á ZIP niðurhali." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Skrárnar verður að sækja eina og eina" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Aftur í skrár" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Valdar skrár eru of stórar til að búa til ZIP skrá." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/is/settings.po b/l10n/is/settings.po index 0906807b3c..5f4d199f3e 100644 --- a/l10n/is/settings.po +++ b/l10n/is/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/user_ldap.po b/l10n/is/user_ldap.po index ee1bb681f8..da829f884d 100644 --- a/l10n/is/user_ldap.po +++ b/l10n/is/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/core.po b/l10n/it/core.po index df7f35c828..dbaa6ad613 100644 --- a/l10n/it/core.po +++ b/l10n/it/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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:22+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "anno scorso" msgid "years ago" msgstr "anni fa" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Annulla" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Scegli" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Annulla" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "Errore durante il caricamento del modello del selezionatore di file" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sì" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "No" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/it/files.po b/l10n/it/files.po index 4245330eb1..212df78a49 100644 --- a/l10n/it/files.po +++ b/l10n/it/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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:23+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_external.po b/l10n/it/files_external.po index 14033bcc2c..69822dc443 100644 --- a/l10n/it/files_external.po +++ b/l10n/it/files_external.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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:23+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 3e03f7b349..f6a7ae0e9d 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:24+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 3091e2a39f..24417db353 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:24+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index cebca82b59..9d852114bd 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -3,12 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Vincenzo Reale , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:03+0200\n" -"PO-Revision-Date: 2013-05-19 09:23+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -17,27 +18,27 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Aiuto" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personale" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Impostazioni" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Utenti" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Applicazioni" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" @@ -113,72 +114,76 @@ msgstr "%s non dovresti utilizzare punti nel nome del database" msgid "%s set the database host." msgstr "%s imposta l'host del database." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nome utente e/o password di PostgreSQL non validi" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "È necessario inserire un account esistente o l'amministratore." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nome utente e/o password di Oracle non validi" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "La connessione a Oracle non può essere stabilita" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nome utente e/o password di MySQL non validi" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Errore DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Il comando non consentito era: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "L'utente MySQL '%s'@'localhost' esiste già." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Elimina questo utente da MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "L'utente MySQL '%s'@'%%' esiste già" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Elimina questo utente da MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nome utente e/o password di Oracle non validi" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Il comando non consentito era: \"%s\", nome: %s, password: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nome utente e/o password MS SQL non validi: %s" -#: setup.php:859 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata." -#: setup.php:860 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Leggi attentamente le guide d'installazione." diff --git a/l10n/it/settings.po b/l10n/it/settings.po index ca626d4fa3..ae610e485c 100644 --- a/l10n/it/settings.po +++ b/l10n/it/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-05-20 02:05+0200\n" -"PO-Revision-Date: 2013-05-19 09:23+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/user_ldap.po b/l10n/it/user_ldap.po index 294dede933..21ebc69f2a 100644 --- a/l10n/it/user_ldap.po +++ b/l10n/it/user_ldap.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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:24+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index f36a992b11..beac431856 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "一年前" msgid "years ago" msgstr "年前" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "キャンセル" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "選択" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "キャンセル" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "はい" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "いいえ" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 32f0f5daf3..9990444dd1 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 12:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_external.po b/l10n/ja_JP/files_external.po index ebea1cd842..fc034819a2 100644 --- a/l10n/ja_JP/files_external.po +++ b/l10n/ja_JP/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index c6e1114ec1..cf0e397f11 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index bdec5a3450..669aa32490 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index a65b9bba76..6d06b310e7 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "ヘルプ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "個人" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "設定" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "ユーザ" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "アプリ" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "管理" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIPダウンロードは無効です。" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ファイルは1つずつダウンロードする必要があります。" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "ファイルに戻る" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "選択したファイルはZIPファイルの生成には大きすぎます。" @@ -113,72 +113,76 @@ msgstr "%s ではデータベース名にドットを利用できないかもし msgid "%s set the database host." msgstr "%s にデータベースホストを設定します。" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQLのユーザ名もしくはパスワードは有効ではありません" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "既存のアカウントもしくは管理者のどちらかを入力する必要があります。" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracleのユーザ名もしくはパスワードは有効ではありません" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQLのユーザ名もしくはパスワードは有効ではありません" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DBエラー: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "違反コマンド: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQLのユーザ '%s'@'localhost' はすでに存在します。" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "MySQLからこのユーザを削除" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQLのユーザ '%s'@'%%' はすでに存在します。" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "MySQLからこのユーザを削除する。" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracleのユーザ名もしくはパスワードは有効ではありません" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "違反コマンド: \"%s\"、名前: %s、パスワード: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL サーバーのユーザー名/パスワードが正しくありません: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "WebDAVインタフェースが動作していないと考えられるため、あなたのWEBサーバはまだファイルの同期を許可するように適切な設定がされていません。" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "インストールガイドをよく確認してください。" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 5c7b4905c9..6444931858 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/user_ldap.po b/l10n/ja_JP/user_ldap.po index 4c7f9ca2dc..db962e11ee 100644 --- a/l10n/ja_JP/user_ldap.po +++ b/l10n/ja_JP/user_ldap.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-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 07:58+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files.po b/l10n/ka/files.po index b139973c0c..bbfe04671f 100644 --- a/l10n/ka/files.po +++ b/l10n/ka/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_sharing.po b/l10n/ka/files_sharing.po index 9590d263fb..3c158ffc46 100644 --- a/l10n/ka/files_sharing.po +++ b/l10n/ka/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index e0df88abc2..a6fa0a1283 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "ბოლო წელს" msgid "years ago" msgstr "წლის წინ" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "დიახ" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "უარყოფა" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "არჩევა" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "უარყოფა" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "კი" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "არა" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "დიახ" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index 11183252ce..e94fb3a405 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po index 203e29f7c0..e3d4eb60b8 100644 --- a/l10n/ka_GE/files_external.po +++ b/l10n/ka_GE/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 09:03+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index 2cd7702bc6..2f4fa98163 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 09:03+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index 41bba41dbd..023bdfaf78 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index af7df55b76..254f201809 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "დახმარება" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "პირადი" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "პარამეტრები" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "მომხმარებელი" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "აპლიკაციები" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "ადმინისტრატორი" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP download–ი გათიშულია" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ფაილები უნდა გადმოიტვირთოს სათითაოდ." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "უკან ფაილებში" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "არჩეული ფაილები ძალიან დიდია zip ფაილის გენერაციისთვის." @@ -113,72 +113,76 @@ msgstr "%s არ მიუთითოთ წერტილი ბაზის msgid "%s set the database host." msgstr "%s მიუთითეთ ბაზის ჰოსტი." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL იუზერნეიმი და/ან პაროლი არ არის სწორი" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "თქვენ უნდა შეიყვანოთ არსებული მომხმარებელის სახელი ან ადმინისტრატორი." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle იუზერნეიმი და/ან პაროლი არ არის სწორი" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL იუზერნეიმი და/ან პაროლი არ არის სწორი" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB შეცდომა: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Offending ბრძანება იყო: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL მომხმარებელი '%s'@'localhost' უკვე არსებობს." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "წაშალე ეს მომხამრებელი MySQL–იდან" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL მომხმარებელი '%s'@'%%' უკვე არსებობს" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "წაშალე ეს მომხამრებელი MySQL–იდან" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle იუზერნეიმი და/ან პაროლი არ არის სწორი" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Offending ბრძანება იყო: \"%s\", სახელი: %s, პაროლი: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL მომხმარებელი და/ან პაროლი არ არის მართებული: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "თქვენი web სერვერი არ არის კონფიგურირებული ფაილ სინქრონიზაციისთვის, რადგან WebDAV ინტერფეისი შეიძლება იყოს გატეხილი." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "გთხოვთ გადაათვალიეროთ ინსტალაციის გზამკვლევი." diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index b7c222205a..04a0d9d034 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po index b59faa4d49..7f6f2193d4 100644 --- a/l10n/ka_GE/user_ldap.po +++ b/l10n/ka_GE/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index cdaa87d744..cee727ba0a 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "작년" msgid "years ago" msgstr "년 전" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "승락" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "취소" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "선택" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "취소" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "예" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "아니요" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "승락" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ko/files.po b/l10n/ko/files.po index 7db090797c..72a5537640 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index 05f9ba418c..da5082097d 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index 245187c115..54062f51db 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index fbea475af8..ace3627e1b 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index 06d9e41f52..b97c280d47 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "도움말" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "개인" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "설정" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "사용자" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "앱" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "관리자" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP 다운로드가 비활성화되었습니다." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "파일을 개별적으로 다운로드해야 합니다." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "파일로 돌아가기" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "선택한 파일들은 ZIP 파일을 생성하기에 너무 큽니다." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index a914eb0524..2c93f03d41 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index 9f36e614e1..73fcf08442 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index 9a9a456888..df702490ca 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 8a8df832c2..b7ff8f3d26 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 291c1ca15a..7c929822b6 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index f1b2bac0ba..348f5fc442 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index 2bf8387dbb..a1f467cb56 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "یارمەتی" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "ده‌ستكاری" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "به‌كارهێنه‌ر" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "به‌رنامه‌كان" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "به‌ڕێوه‌به‌ری سه‌ره‌كی" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 57cd5d6abc..20bae1d2d7 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/user_ldap.po b/l10n/ku_IQ/user_ldap.po index 1a425c728d..3d3bedc560 100644 --- a/l10n/ku_IQ/user_ldap.po +++ b/l10n/ku_IQ/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 91e5887e0b..463eb139e4 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "Läscht Joer" msgid "years ago" msgstr "Joren hier" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Ofbriechen" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Auswielen" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Ofbriechen" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Jo" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nee" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/lb/files.po b/l10n/lb/files.po index f6df3c8111..d52d6051d9 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_external.po b/l10n/lb/files_external.po index 2461cbdaeb..d4781c62a4 100644 --- a/l10n/lb/files_external.po +++ b/l10n/lb/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index 8905aedf43..c88a6bd12d 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index 69c55f0f89..cf346cfdc0 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 6060004b52..03a90b8536 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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hëllef" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Perséinlech" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Astellungen" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Benotzer" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Applicatiounen" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 6575b570b9..df0dc32b9f 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index 38893be1d6..acc80e3d59 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index 472e657708..d5b4a0e4df 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Roman Deniobe \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "praeitais metais" msgid "years ago" msgstr "prieš metus" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Gerai" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Atšaukti" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Pasirinkite" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Atšaukti" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Taip" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ne" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Gerai" + #: 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." diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index c4731e2bd8..8fe91c5cfd 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index 4e0ad2de01..ab55528f0b 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 3b808b3735..55fa2bf159 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index 38d8809bf8..b5ac859e3e 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index 91b409910d..cbc43ee811 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pagalba" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Asmeniniai" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Nustatymai" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Vartotojai" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Programos" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administravimas" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP atsisiuntimo galimybė yra išjungta." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Failai turi būti parsiunčiami vienas po kito." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Atgal į Failus" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Pasirinkti failai per dideli archyvavimui į ZIP." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index e8508048b4..45772fd1b8 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index 83ba46a5fd..1e73b74a00 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index f06cd6259b..27ef0cf51e 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "gājušajā gadā" msgid "years ago" msgstr "gadus atpakaļ" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Labi" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Atcelt" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Izvēlieties" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Atcelt" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Jā" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nē" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Labi" + #: 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." diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 40ca8300d6..64d7876673 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_external.po b/l10n/lv/files_external.po index 8f0bcb6261..c833916c88 100644 --- a/l10n/lv/files_external.po +++ b/l10n/lv/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index c3369954b8..ff9a877f0d 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index a777ecbef2..e376539f1d 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index c14518b06c..e27de079e8 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Palīdzība" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personīgi" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Iestatījumi" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Lietotāji" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Lietotnes" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administratori" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP lejupielādēšana ir izslēgta." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Datnes var lejupielādēt tikai katru atsevišķi." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Atpakaļ pie datnēm" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Izvēlētās datnes ir pārāk lielas, lai izveidotu zip datni." @@ -113,72 +113,76 @@ msgstr "%s datubāžu nosaukumos nedrīkst izmantot punktus" msgid "%s set the database host." msgstr "%s iestatiet datubāžu serveri." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nav derīga PostgreSQL parole un/vai lietotājvārds" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Jums jāievada vai nu esošs vai administratora konts." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nav derīga Oracle parole un/vai lietotājvārds" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nav derīga MySQL parole un/vai lietotājvārds" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB kļūda — “%s”" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Vainīgā komanda bija “%s”" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL lietotājs %s'@'localhost' jau eksistē." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Izmest šo lietotāju no MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL lietotājs '%s'@'%%' jau eksistē" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Izmest šo lietotāju no MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nav derīga Oracle parole un/vai lietotājvārds" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Vainīgā komanda bija \"%s\", vārds: %s, parole: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nav derīga MySQL parole un/vai lietotājvārds — %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Jūsu serveris vēl nav pareizi iestatīts, lai ļautu sinhronizēt datnes, jo izskatās, ka WebDAV saskarne ir salauzta." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Lūdzu, vēlreiz pārbaudiet instalēšanas palīdzību." diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index 0b232f50be..f8f6d620dc 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/user_ldap.po b/l10n/lv/user_ldap.po index cb1532a790..1165adf4e3 100644 --- a/l10n/lv/user_ldap.po +++ b/l10n/lv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index cffc24c7a7..3bd008969b 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "минатата година" msgid "years ago" msgstr "пред години" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Во ред" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Откажи" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Избери" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Откажи" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Не" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Во ред" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 299b8fd800..ec08eae8ff 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_external.po b/l10n/mk/files_external.po index c1d7e75e2e..129bb0f945 100644 --- a/l10n/mk/files_external.po +++ b/l10n/mk/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index 34a139dd73..f79af9510d 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index f0e618ecba..40ba1a5bec 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index e64e413995..602ebd67b8 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Помош" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Лично" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Подесувања" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Корисници" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Аппликации" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Админ" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Преземање во ZIP е исклучено" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Датотеките треба да се симнат една по една." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Назад кон датотеки" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Избраните датотеки се преголеми за да се генерира zip." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 945c5571df..658d0a099b 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/user_ldap.po b/l10n/mk/user_ldap.po index 9a3f735d5e..a7c58a824e 100644 --- a/l10n/mk/user_ldap.po +++ b/l10n/mk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index 366bfde66d..c7eaafc301 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Batal" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Batal" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ya" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Tidak" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index f213c62924..dbc1e5041c 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_external.po b/l10n/ms_MY/files_external.po index f1af46895a..032ecb7e41 100644 --- a/l10n/ms_MY/files_external.po +++ b/l10n/ms_MY/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index e2dd173597..d9b6bb9972 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index b54157fab2..57049cc4cd 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 7d00ce42b9..db278328fb 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Bantuan" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Peribadi" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Tetapan" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Pengguna" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikasi" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index 5f4003d2e8..dfb5957c75 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/user_ldap.po b/l10n/ms_MY/user_ldap.po index 784790e0e9..9525ea29a9 100644 --- a/l10n/ms_MY/user_ldap.po +++ b/l10n/ms_MY/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po index 46e82a3f92..8babf35390 100644 --- a/l10n/my_MM/core.po +++ b/l10n/my_MM/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "မနှစ်က" msgid "years ago" msgstr "နှစ် အရင်က" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "အိုကေ" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "ပယ်ဖျက်မည်" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "ရွေးချယ်" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "ပယ်ဖျက်မည်" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ဟုတ်" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "မဟုတ်ဘူး" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "အိုကေ" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/my_MM/files.po b/l10n/my_MM/files.po index fedecb2ad5..d99bb1abe9 100644 --- a/l10n/my_MM/files.po +++ b/l10n/my_MM/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po index 1105b88661..bc2fd5ec55 100644 --- a/l10n/my_MM/files_sharing.po +++ b/l10n/my_MM/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po index f6ebed8ec4..58fc7a42e0 100644 --- a/l10n/my_MM/lib.po +++ b/l10n/my_MM/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: my_MM\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "အကူအညီ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "သုံးစွဲသူ" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "အက်ဒမင်" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP ဒေါင်းလုတ်ကိုပိတ်ထားသည်" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ဖိုင်များသည် တစ်ခုပြီး တစ်ခုဒေါင်းလုတ်ချရန်လိုအပ်သည်" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "ဖိုင်သို့ပြန်သွားမည်" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "zip ဖိုင်အဖြစ်ပြုလုပ်ရန် ရွေးချယ်ထားသောဖိုင်များသည် အရမ်းကြီးလွန်းသည်" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index e229487e28..e7dd2477aa 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "forrige år" msgid "years ago" msgstr "år siden" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Avbryt" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Velg" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Avbryt" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nei" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index f1431fbd1f..e107543d82 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 23:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_external.po b/l10n/nb_NO/files_external.po index 476b81ff07..917f02c2bd 100644 --- a/l10n/nb_NO/files_external.po +++ b/l10n/nb_NO/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 12:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index ab1517bb3f..868b4fd6eb 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index 9ee75563d8..7f0b7fad5f 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 12:10+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 38770e18e4..08f2ae8e5f 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:03+0200\n" -"PO-Revision-Date: 2013-05-19 23:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hjelp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personlig" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Innstillinger" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Brukere" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apper" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:859 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Din nettservev er ikke konfigurert korrekt for filsynkronisering. WebDAV ser ut til å ikke funkere." -#: setup.php:860 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Vennligst dobbelsjekk installasjonsguiden." diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index 2f581ebbee..3debc0b668 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/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-05-20 02:05+0200\n" -"PO-Revision-Date: 2013-05-19 23:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index f6e688d102..49f8151a5f 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index d35357a3ad..5f6f7e5413 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "vorig jaar" msgid "years ago" msgstr "jaar geleden" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Annuleer" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Kies" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Annuleer" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nee" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/nl/files.po b/l10n/nl/files.po index c394fb203c..0c04c6ce0d 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index 1373520072..643ebd1c4b 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-29 01:58+0200\n" -"PO-Revision-Date: 2013-04-28 06:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index 75628354dc..924a6cedb2 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index ba389cde31..7ccc62dbeb 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index c56862e931..08b48b27de 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Help" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Persoonlijk" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Instellingen" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Gebruikers" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Beheerder" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP download is uitgeschakeld." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Bestanden moeten één voor één worden gedownload." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Terug naar bestanden" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "De geselecteerde bestanden zijn te groot om een zip bestand te maken." @@ -113,72 +113,76 @@ msgstr "%s er mogen geen puntjes in de databasenaam voorkomen" msgid "%s set the database host." msgstr "%s instellen databaseservernaam." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL gebruikersnaam en/of wachtwoord ongeldig" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Geef of een bestaand account op of het beheerdersaccount." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle gebruikersnaam en/of wachtwoord ongeldig" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL gebruikersnaam en/of wachtwoord ongeldig" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB Fout: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Onjuiste commande was: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL gebruiker '%s'@'localhost' bestaat al." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Verwijder deze gebruiker uit MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL gebruiker '%s'@'%%' bestaat al" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Verwijder deze gebruiker uit MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle gebruikersnaam en/of wachtwoord ongeldig" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Onjuiste commando was: \"%s\", naam: %s, wachtwoord: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL gebruikersnaam en/of wachtwoord niet geldig: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie omdat de WebDAV interface verbroken lijkt." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Controleer de installatiehandleiding goed." diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 24737684e0..84e5a9fa47 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index af11411cb6..5fae8e1644 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index 08adadd957..4cdd6e7d94 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "i fjor" msgid "years ago" msgstr "år sidan" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Greitt" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Avbryt" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Vel" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Avbryt" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nei" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Greitt" + #: 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." diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 8bf6b233b5..4fb7cfb26d 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-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 13:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_external.po b/l10n/nn_NO/files_external.po index 444e7be0a1..2cdb030bf8 100644 --- a/l10n/nn_NO/files_external.po +++ b/l10n/nn_NO/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index 1edc28d346..1b09608a94 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.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-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 13:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index 6abeaf62de..fb0d4b784b 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 11:10+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index 0fced10d32..f36faa6225 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/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-05-17 02:03+0200\n" -"PO-Revision-Date: 2013-05-16 09:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hjelp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personleg" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Innstillingar" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Brukarar" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Program" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrer" @@ -114,72 +114,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:859 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Tenaren din er ikkje enno rett innstilt til å tilby filsynkronisering sidan WebDAV-grensesnittet ser ut til å vera øydelagt." -#: setup.php:860 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Ver vennleg og dobbeltsjekk installasjonsrettleiinga." diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index 7661744100..ad438e4bd5 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/user_ldap.po b/l10n/nn_NO/user_ldap.po index aa60a28904..fcc357a041 100644 --- a/l10n/nn_NO/user_ldap.po +++ b/l10n/nn_NO/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index fb3ea7ee10..e9d807e557 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "an passat" msgid "years ago" msgstr "ans a" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "D'accòrdi" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Annula" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Causís" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Annula" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Òc" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Non" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "D'accòrdi" + #: 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." diff --git a/l10n/oc/files.po b/l10n/oc/files.po index 6add33eaeb..69839d306e 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_external.po b/l10n/oc/files_external.po index d4da7a4ee8..62da99608e 100644 --- a/l10n/oc/files_external.po +++ b/l10n/oc/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index 9f1de7e3bd..5a45905848 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 68e83d04f5..5258fea480 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index 68de313804..74a296f1ae 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ajuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Configuracion" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usancièrs" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Apps" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Avalcargar los ZIP es inactiu." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Los fichièrs devan èsser avalcargats un per un." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Torna cap als fichièrs" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index cf78308378..0c5eb4da19 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/user_ldap.po b/l10n/oc/user_ldap.po index 32a16d4e26..b30db96613 100644 --- a/l10n/oc/user_ldap.po +++ b/l10n/oc/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 8317035b93..2fb34b855d 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/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-05-22 02:17+0200\n" -"PO-Revision-Date: 2013-05-21 07:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "w zeszłym roku" msgid "years ago" msgstr "lat temu" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Anuluj" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Wybierz" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Anuluj" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Tak" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nie" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/pl/files.po b/l10n/pl/files.po index bd2888a2b8..ea95d73c5b 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index a130c038c3..964bffff5d 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-22 02:17+0200\n" -"PO-Revision-Date: 2013-05-21 07:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index e97f578322..ada05ce04a 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index 0b1495b8d0..3818146e22 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index db80af0529..9503eaaf77 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pomoc" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Osobiste" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ustawienia" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Użytkownicy" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikacje" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrator" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Pobieranie ZIP jest wyłączone." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Pliki muszą zostać pobrane pojedynczo." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Wróć do plików" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Wybrane pliki są zbyt duże, aby wygenerować plik zip." @@ -113,72 +113,76 @@ msgstr "%s nie można używać kropki w nazwie bazy danych" msgid "%s set the database host." msgstr "%s ustaw hosta bazy danych." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Należy wprowadzić istniejące konto użytkownika lub administratora." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL: Nazwa użytkownika i/lub hasło jest niepoprawne" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Błąd DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Niepoprawna komenda: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Użytkownik MySQL '%s'@'localhost' już istnieje" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Usuń tego użytkownika z MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Użytkownik MySQL '%s'@'%%t' już istnieje" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Usuń tego użytkownika z MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Niepoprawne polecania: \"%s\", nazwa: %s, hasło: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nazwa i/lub hasło serwera MS SQL jest niepoprawne: %s." -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Serwer internetowy nie jest jeszcze poprawnie skonfigurowany, aby umożliwić synchronizację plików, ponieważ interfejs WebDAV wydaje się być uszkodzony." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Sprawdź ponownie przewodniki instalacji." diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index 569af9fbc9..dd5b124971 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/user_ldap.po b/l10n/pl/user_ldap.po index 1cd3ec895b..1bf45fe73e 100644 --- a/l10n/pl/user_ldap.po +++ b/l10n/pl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 39727ca3ba..2407cc50ed 100644 --- a/l10n/pl_PL/core.po +++ b/l10n/pl_PL/core.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \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" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index 8e52449664..b650901aca 100644 --- a/l10n/pl_PL/files.po +++ b/l10n/pl_PL/files.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \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" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index d30c8af652..08ef2633ca 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \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" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ustawienia" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 6624c31b20..7245910d41 100644 --- a/l10n/pl_PL/settings.po +++ b/l10n/pl_PL/settings.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:17+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 +#: js/users.js:92 templates/users.php:26 templates/users.php:78 #: templates/users.php:103 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:80 templates/users.php:115 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:155 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:420 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:421 js/users.js:427 js/users.js:442 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:426 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "último ano" msgid "years ago" msgstr "anos atrás" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancelar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Escolha" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancelar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sim" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Não" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 5d86a5195a..3228aff3b8 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Flávio Veras \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/files_external.po b/l10n/pt_BR/files_external.po index 2ff8ade49d..ab7d6a869c 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 12:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Flávio Veras \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/files_sharing.po b/l10n/pt_BR/files_sharing.po index cbd0b6110f..19b81cd23c 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index c9a34e6093..4d9963fa4f 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index d2ecaa0216..91dd830a9b 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Flávio Veras , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:59+0000\n" +"Last-Translator: Flávio Veras \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" @@ -17,43 +18,43 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ajuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Pessoal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ajustes" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Usuários" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicações" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Download ZIP está desligado." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Arquivos precisam ser baixados um de cada vez." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Voltar para Arquivos" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Arquivos selecionados são muito grandes para gerar arquivo zip." @@ -113,72 +114,76 @@ msgstr "%s você não pode usar pontos no nome do banco de dados" msgid "%s set the database host." msgstr "%s defina o host do banco de dados." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nome de usuário e/ou senha PostgreSQL inválido(s)" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Você precisa inserir uma conta existente ou o administrador." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nome de usuário e/ou senha Oracle inválido(s)" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "Conexão Oracle não pode ser estabelecida" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nome de usuário e/ou senha MySQL inválido(s)" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Erro no BD: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Comando ofensivo era: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "O usuário MySQL '%s'@'localhost' já existe." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Derrubar este usuário do MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Usuário MySQL '%s'@'%%' já existe" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Derrube este usuário do MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nome de usuário e/ou senha Oracle inválido(s)" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Comando ofensivo era: \"%s\", nome: %s, senha: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nome de usuário e/ou senha MS SQL inválido(s): %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Seu servidor web não está configurado corretamente para permitir sincronização de arquivos porque a interface WebDAV parece estar quebrada." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Por favor, confira os guias de instalação." diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index c5cf67cadd..98faa1feb7 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Flávio Veras \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/user_ldap.po b/l10n/pt_BR/user_ldap.po index eb862c273a..943319be94 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:15+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Flávio Veras \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_PT/core.po b/l10n/pt_PT/core.po index 3e8b32a2e5..900edfc55f 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "ano passado" msgid "years ago" msgstr "anos atrás" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Cancelar" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Escolha" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Cancelar" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Sim" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Não" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 45addc54d2..96feb9f119 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_external.po b/l10n/pt_PT/files_external.po index 57de8c823e..7795ea340d 100644 --- a/l10n/pt_PT/files_external.po +++ b/l10n/pt_PT/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 16:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index 91d49b0b9a..3b7ae09e73 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 2b2ad1fa7b..1eb1cd9f59 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index 73f120fd81..0f08273d3d 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ajuda" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Pessoal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Configurações" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Utilizadores" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicações" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Descarregamento em ZIP está desligado." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Os ficheiros precisam de ser descarregados um por um." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Voltar a Ficheiros" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Os ficheiros seleccionados são grandes demais para gerar um ficheiro zip." @@ -113,72 +113,76 @@ msgstr "%s não é permitido utilizar pontos (.) no nome da base de dados" msgid "%s set the database host." msgstr "%s defina o servidor da base de dados (geralmente localhost)" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Nome de utilizador/password do PostgreSQL inválido" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Precisa de introduzir uma conta existente ou de administrador" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Nome de utilizador/password do Oracle inválida" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Nome de utilizador/password do MySQL inválida" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Erro na BD: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "O comando gerador de erro foi: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "O utilizador '%s'@'localhost' do MySQL já existe." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Eliminar este utilizador do MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "O utilizador '%s'@'%%' do MySQL já existe" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Eliminar este utilizador do MySQL" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Nome de utilizador/password do Oracle inválida" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "O comando gerador de erro foi: \"%s\", nome: %s, password: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Nome de utilizador/password do MySQL é inválido: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Por favor verifique installation guides." diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 8ac1ac314a..696961608e 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index 35d7b778aa..7186aa08f3 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index cb0f3da3c4..63e649fe27 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "ultimul an" msgid "years ago" msgstr "ani în urmă" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Anulare" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Alege" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Anulare" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nu" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 4d7f89ed97..21bd251d8f 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index 1823f0d97d..5d9b879da2 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index c6b95b1070..1e3ee609ff 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index c4888b41a0..0b656f9091 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index 7d85c7044f..23c2edaf60 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ajutor" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personal" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Setări" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Utilizatori" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplicații" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Descărcarea ZIP este dezactivată." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Fișierele trebuie descărcate unul câte unul." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Înapoi la fișiere" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Fișierele selectate sunt prea mari pentru a genera un fișier zip." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index b3c9bd49af..1cce576b45 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index 46778737fa..95cdac3c71 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index fbe806ab0e..18dbafd721 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: foool \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -214,26 +214,30 @@ msgstr "в прошлом году" msgid "years ago" msgstr "несколько лет назад" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ок" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Отменить" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Выбрать" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Отменить" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Нет" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Ок" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 99301a6874..90c3788e71 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index e418fb322c..1ed13f40c5 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 0e1c7422f8..908097384e 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index 42f971ee76..63bebc7818 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index 79b382794b..fd33536fc2 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Помощь" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Личное" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Конфигурация" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Пользователи" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Приложения" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP-скачивание отключено." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Файлы должны быть загружены по одному." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Назад к файлам" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Выбранные файлы слишком велики, чтобы создать zip файл." @@ -113,72 +113,76 @@ msgstr "%s Вы не можете использовать точки в име msgid "%s set the database host." msgstr "%s задайте хост базы данных." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Неверное имя пользователя и/или пароль PostgreSQL" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Вы должны войти или в существующий аккаунт или под администратором." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Неверное имя пользователя и/или пароль Oracle" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Неверное имя пользователя и/или пароль MySQL" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Ошибка БД: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Вызываемая команда была: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Пользователь MySQL '%s'@'localhost' уже существует." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Удалить этого пользователя из MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Пользователь MySQL '%s'@'%%' уже существует" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Удалить этого пользователя из MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Неверное имя пользователя и/или пароль Oracle" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Вызываемая команда была: \"%s\", имя: %s, пароль: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Имя пользователя и/или пароль MS SQL не подходит: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Ваш веб сервер до сих пор не настроен правильно для возможности синхронизации файлов, похоже что проблема в неисправности интерфейса WebDAV." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Пожалуйста, дважды просмотрите инструкции по установке." diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index 7b98bf3705..79c16bb485 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: eurekafag \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/user_ldap.po b/l10n/ru/user_ldap.po index 4b20940944..ea122b169b 100644 --- a/l10n/ru/user_ldap.po +++ b/l10n/ru/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index a63e62e68a..22b8f03bc0 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/core.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:20+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \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" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Отмена" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." @@ -259,7 +263,7 @@ msgstr "" #: js/share.js:90 msgid "Share" -msgstr "" +msgstr "Сделать общим" #: js/share.js:125 js/share.js:617 msgid "Error while sharing" @@ -470,7 +474,7 @@ msgstr "" #: templates/edit_categories_dialog.php:16 msgid "Add" -msgstr "" +msgstr "Добавить" #: templates/installation.php:24 templates/installation.php:31 #: templates/installation.php:38 diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 9803ad4bf8..04189fc1a3 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" @@ -29,11 +29,11 @@ msgstr "" #: ajax/upload.php:19 msgid "No file was uploaded. Unknown error" -msgstr "" +msgstr "Файл не был загружен. Неизвестная ошибка" #: ajax/upload.php:26 msgid "There is no error, the file uploaded with success" -msgstr "" +msgstr "Ошибки нет, файл успешно загружен" #: ajax/upload.php:27 msgid "" @@ -44,27 +44,27 @@ msgstr "" msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form" -msgstr "" +msgstr "Размер загружаемого файла превысил максимально допустимый в директиве MAX_FILE_SIZE, специфицированной в HTML-форме" #: ajax/upload.php:30 msgid "The uploaded file was only partially uploaded" -msgstr "" +msgstr "Загружаемый файл был загружен лишь частично" #: ajax/upload.php:31 msgid "No file was uploaded" -msgstr "" +msgstr "Файл не был загружен" #: ajax/upload.php:32 msgid "Missing a temporary folder" -msgstr "" +msgstr "Отсутствие временной папки" #: ajax/upload.php:33 msgid "Failed to write to disk" -msgstr "" +msgstr "Не удалось записать на диск" #: ajax/upload.php:51 msgid "Not enough storage available" -msgstr "" +msgstr "Недостаточно места в хранилище" #: ajax/upload.php:83 msgid "Invalid directory." @@ -76,7 +76,7 @@ msgstr "" #: js/fileactions.js:116 msgid "Share" -msgstr "" +msgstr "Сделать общим" #: js/fileactions.js:126 msgid "Delete permanently" @@ -84,7 +84,7 @@ msgstr "" #: js/fileactions.js:128 templates/index.php:93 templates/index.php:94 msgid "Delete" -msgstr "" +msgstr "Удалить" #: js/fileactions.js:194 msgid "Rename" @@ -189,7 +189,7 @@ msgstr "Ошибка" #: js/files.js:877 templates/index.php:69 msgid "Name" -msgstr "" +msgstr "Имя" #: js/files.js:878 templates/index.php:80 msgid "Size" @@ -257,7 +257,7 @@ msgstr "" #: templates/admin.php:26 msgid "Save" -msgstr "" +msgstr "Сохранить" #: templates/index.php:7 msgid "New" @@ -293,7 +293,7 @@ msgstr "" #: templates/index.php:75 msgid "Download" -msgstr "" +msgstr "Загрузка" #: templates/index.php:87 templates/index.php:88 msgid "Unshare" diff --git a/l10n/ru_RU/files_external.po b/l10n/ru_RU/files_external.po index 1410e66849..3efa280a09 100644 --- a/l10n/ru_RU/files_external.po +++ b/l10n/ru_RU/files_external.po @@ -3,14 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# AnnaSch , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-23 23:58+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,36 +19,36 @@ msgstr "" #: js/dropbox.js:7 js/dropbox.js:28 js/google.js:16 js/google.js:34 msgid "Access granted" -msgstr "Доступ разрешен" +msgstr "" #: js/dropbox.js:30 js/dropbox.js:96 js/dropbox.js:102 msgid "Error configuring Dropbox storage" -msgstr "Ошибка при конфигурировании хранилища Dropbox" +msgstr "" #: js/dropbox.js:65 js/google.js:66 msgid "Grant access" -msgstr "Предоставить доступ" +msgstr "" #: js/dropbox.js:101 msgid "Please provide a valid Dropbox app key and secret." -msgstr "Пожалуйста представьте допустимый ключ приложения Dropbox и пароль." +msgstr "" #: js/google.js:36 js/google.js:93 msgid "Error configuring Google Drive storage" -msgstr "Ошибка настройки хранилища Google Drive" +msgstr "" #: lib/config.php:431 msgid "" "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " "is not possible. Please ask your system administrator to install it." -msgstr "Предупреждение: \"smbclient\" не установлен. Подключение общих папок CIFS/SMB невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить его." +msgstr "" #: lib/config.php:434 msgid "" "Warning: The FTP support in PHP is not enabled or installed. Mounting" " of FTP shares is not possible. Please ask your system administrator to " "install it." -msgstr "Предупреждение: Поддержка FTP в PHP не включена или не установлена. Подключение по FTP невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить ее." +msgstr "" #: lib/config.php:437 msgid "" @@ -60,11 +59,11 @@ msgstr "" #: templates/settings.php:3 msgid "External Storage" -msgstr "Внешние системы хранения данных" +msgstr "" #: templates/settings.php:9 templates/settings.php:28 msgid "Folder name" -msgstr "Имя папки" +msgstr "" #: templates/settings.php:10 msgid "External storage" @@ -72,15 +71,15 @@ msgstr "" #: templates/settings.php:11 msgid "Configuration" -msgstr "Конфигурация" +msgstr "" #: templates/settings.php:12 msgid "Options" -msgstr "Опции" +msgstr "" #: templates/settings.php:13 msgid "Applicable" -msgstr "Применимый" +msgstr "" #: templates/settings.php:33 msgid "Add storage" @@ -88,11 +87,11 @@ msgstr "" #: templates/settings.php:90 msgid "None set" -msgstr "Не задан" +msgstr "" #: templates/settings.php:91 msgid "All Users" -msgstr "Все пользователи" +msgstr "" #: templates/settings.php:92 msgid "Groups" @@ -100,7 +99,7 @@ msgstr "Группы" #: templates/settings.php:100 msgid "Users" -msgstr "Пользователи" +msgstr "" #: templates/settings.php:113 templates/settings.php:114 #: templates/settings.php:149 templates/settings.php:150 @@ -109,16 +108,16 @@ msgstr "Удалить" #: templates/settings.php:129 msgid "Enable User External Storage" -msgstr "Включить пользовательскую внешнюю систему хранения данных" +msgstr "" #: templates/settings.php:130 msgid "Allow users to mount their own external storage" -msgstr "Разрешить пользователям монтировать их собственную внешнюю систему хранения данных" +msgstr "" #: templates/settings.php:141 msgid "SSL root certificates" -msgstr "Корневые сертификаты SSL" +msgstr "" #: templates/settings.php:159 msgid "Import Root Certificate" -msgstr "Импортировать корневые сертификаты" +msgstr "" diff --git a/l10n/ru_RU/files_sharing.po b/l10n/ru_RU/files_sharing.po index 2f1f872d54..c0973fddbc 100644 --- a/l10n/ru_RU/files_sharing.po +++ b/l10n/ru_RU/files_sharing.po @@ -3,14 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,21 +19,21 @@ msgstr "" #: templates/authenticate.php:4 msgid "Password" -msgstr "Пароль" +msgstr "" #: templates/authenticate.php:6 msgid "Submit" -msgstr "Передать" +msgstr "" #: templates/public.php:10 #, php-format msgid "%s shared the folder %s with you" -msgstr "%s имеет общий с Вами доступ к папке %s " +msgstr "" #: templates/public.php:13 #, php-format msgid "%s shared the file %s with you" -msgstr "%s имеет общий с Вами доступ к файлу %s " +msgstr "" #: templates/public.php:19 templates/public.php:43 msgid "Download" @@ -42,8 +41,8 @@ msgstr "Загрузка" #: templates/public.php:40 msgid "No preview available for" -msgstr "Предварительный просмотр недоступен" +msgstr "" #: templates/public.php:50 msgid "web services under your control" -msgstr "веб-сервисы под Вашим контролем" +msgstr "" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index 4e65e5d446..7e4bcb47ed 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" @@ -45,7 +45,7 @@ msgstr "" #: js/trash.js:174 templates/index.php:17 msgid "Name" -msgstr "" +msgstr "Имя" #: js/trash.js:175 templates/index.php:27 msgid "Deleted" @@ -77,7 +77,7 @@ msgstr "" #: templates/index.php:30 templates/index.php:31 msgid "Delete" -msgstr "" +msgstr "Удалить" #: templates/part.breadcrumb.php:9 msgid "Deleted Files" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 540aefaac4..31c091a0c9 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/lib.po @@ -7,53 +7,53 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:20+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \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" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Настройки" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -79,7 +79,7 @@ msgstr "" #: search/provider/file.php:26 search/provider/file.php:33 msgid "Text" -msgstr "" +msgstr "Текст" #: search/provider/file.php:29 msgid "Images" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index 5fc2851ce6..43c1d82fa7 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" @@ -139,7 +139,7 @@ msgstr "" #: js/users.js:92 templates/users.php:26 templates/users.php:78 #: templates/users.php:103 msgid "Groups" -msgstr "" +msgstr "Группы" #: js/users.js:95 templates/users.php:80 templates/users.php:115 msgid "Group Admin" @@ -147,7 +147,7 @@ msgstr "" #: js/users.js:115 templates/users.php:155 msgid "Delete" -msgstr "" +msgstr "Удалить" #: js/users.js:269 msgid "add group" @@ -429,7 +429,7 @@ msgstr "" #: templates/personal.php:68 msgid "Email" -msgstr "" +msgstr "Email" #: templates/personal.php:70 msgid "Your email address" @@ -473,7 +473,7 @@ msgstr "" #: templates/users.php:57 templates/users.php:148 msgid "Other" -msgstr "" +msgstr "Другое" #: templates/users.php:82 msgid "Storage" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index 5d247f8926..9e4d98945d 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: 2013-04-26 08:02+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index 21ffdc00b2..ebc75e66e2 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "පෙර අවුරුද්දේ" msgid "years ago" msgstr "අවුරුදු කීපයකට පෙර" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "හරි" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "එපා" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "තෝරන්න" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "එපා" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ඔව්" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "එපා" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "හරි" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index ba42d31041..58fe5a8217 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po index 170cf71d03..3fc997bbe1 100644 --- a/l10n/si_LK/files_external.po +++ b/l10n/si_LK/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index e0e7c51d28..ead4e52179 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index 872a72761b..df590ba871 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 992b3a584f..41cc98f783 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "උදව්" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "පෞද්ගලික" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "සිටුවම්" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "පරිශීලකයන්" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "යෙදුම්" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "පරිපාලක" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP භාගත කිරීම් අක්‍රියයි" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ගොනු එකින් එක භාගත යුතුයි" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "ගොනු වෙතට නැවත යන්න" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "තෝරාගත් ගොනු ZIP ගොනුවක් තැනීමට විශාල වැඩිය." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index dcbbfc411a..eee6f40820 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po index 76caf1c770..391d5cdf80 100644 --- a/l10n/si_LK/user_ldap.po +++ b/l10n/si_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index 0d1e882f63..992dcda4c5 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "minulý rok" msgid "years ago" msgstr "pred rokmi" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Zrušiť" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Výber" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Zrušiť" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Áno" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nie" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 46a8b51b5c..4107af7595 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/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-05-23 01:58+0200\n" -"PO-Revision-Date: 2013-05-22 16:10+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index fdd045ce13..2545d3dae8 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-29 01:58+0200\n" -"PO-Revision-Date: 2013-04-28 19:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index 4dbc07b1ac..986c44241a 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index 2ae6687e69..3cb233da32 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 2db5eafdca..8f6db323d2 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pomoc" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Osobné" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Nastavenia" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Používatelia" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Aplikácie" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Administrátor" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Sťahovanie súborov ZIP je vypnuté." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Súbory musia byť nahrávané jeden za druhým." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Späť na súbory" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Zvolené súbory sú príliš veľké na vygenerovanie zip súboru." @@ -113,72 +113,76 @@ msgstr "V názve databázy %s nemôžete používať bodky" msgid "%s set the database host." msgstr "Zadajte názov počítača s databázou %s." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Používateľské meno a/alebo heslo pre PostgreSQL databázu je neplatné" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Musíte zadať jestvujúci účet alebo administrátora." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Používateľské meno a/alebo heslo pre MySQL databázu je neplatné" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Chyba DB: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Podozrivý príkaz bol: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Používateľ '%s'@'localhost' už v MySQL existuje." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Zahodiť používateľa z MySQL." -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Používateľ '%s'@'%%' už v MySQL existuje" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Zahodiť používateľa z MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Podozrivý príkaz bol: \"%s\", meno: %s, heslo: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Používateľské meno, alebo heslo MS SQL nie je platné: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Váš webový server nie je správne nastavený na synchronizáciu, pretože rozhranie WebDAV je poškodené." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Prosím skontrolujte inštalačnú príručku." diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index a440dde639..2121c51ae9 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 740f7040fb..3d3ff42198 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index c16d289f19..1cc6c8be92 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "lansko leto" msgid "years ago" msgstr "let nazaj" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "V redu" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Prekliči" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Izbor" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Prekliči" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Da" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ne" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "V redu" + #: 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." diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 76edc3fd31..98dbfaa2d2 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index 9b47116228..bfc8aef54d 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 18:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index e1d7adc791..3a379322f4 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index 2ce8f9f03e..4e473f9e0d 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index 636c2a101d..f00e1cfe9e 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 18:10+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pomoč" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Osebno" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Nastavitve" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Uporabniki" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Programi" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Skrbništvo" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Prejemanje datotek v paketu ZIP je onemogočeno." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Datoteke je mogoče prejeti le posamično." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Nazaj na datoteke" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Izbrane datoteke so prevelike za ustvarjanje datoteke arhiva zip." @@ -113,72 +113,76 @@ msgstr "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik." msgid "%s set the database host." msgstr "%s - vnos gostitelja podatkovne zbirke." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Uporabniško ime ali geslo PostgreSQL ni veljavno" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Prijaviti se je treba v obstoječi ali pa skrbniški račun." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Uporabniško ime ali geslo Oracle ni veljavno" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Uporabniško ime ali geslo MySQL ni veljavno" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Napaka podatkovne zbirke: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Napačni ukaz je: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Uporabnik MySQL '%s'@'localhost' že obstaja." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Odstrani uporabnika s podatkovne zbirke MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Uporabnik MySQL '%s'@'%%' že obstaja." -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Odstrani uporabnika s podatkovne zbirke MySQL" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Uporabniško ime ali geslo Oracle ni veljavno" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Napačni ukaz je: \"%s\", ime: %s, geslo: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Uporabniško ime ali geslo MS SQL ni veljavno: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je nastavitev WebDAV okvarjena." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Preverite navodila namestitve." diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index b4b74e10e0..7aac3a9c61 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index b3d02a1760..3ef07c58ce 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index 758cd937b6..53b53efb25 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "vitin e shkuar" msgid "years ago" msgstr "vite më parë" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Në rregull" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Anulo" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Zgjidh" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Anulo" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Po" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Jo" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Në rregull" + #: 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." diff --git a/l10n/sq/files.po b/l10n/sq/files.po index 56ec4bbaf9..3cc87f36be 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po index 7e3f1dba76..40f6851fca 100644 --- a/l10n/sq/files_external.po +++ b/l10n/sq/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index 2ce9c10dbb..40e4950386 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_trashbin.po b/l10n/sq/files_trashbin.po index 630e921b32..0c02b9d17a 100644 --- a/l10n/sq/files_trashbin.po +++ b/l10n/sq/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po index 15687a76d3..ec8afab2c5 100644 --- a/l10n/sq/lib.po +++ b/l10n/sq/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sq\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Ndihmë" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personale" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Parametra" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Përdoruesit" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "App" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Shkarimi i skedarëve ZIP është i çaktivizuar." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Skedarët duhet të shkarkohen një nga një." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Kthehu tek skedarët" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Skedarët e selektuar janë shumë të mëdhenj për të krijuar një skedar ZIP." @@ -113,72 +113,76 @@ msgstr "%s nuk mund të përdorni pikat tek emri i database-it" msgid "%s set the database host." msgstr "%s caktoni pozicionin (host) e database-it." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "Përdoruesi dhe/apo kodi i PostgreSQL i pavlefshëm" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Duhet të përdorni një llogari ekzistuese ose llogarinë e administratorit." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Përdoruesi dhe/apo kodi i Oracle-it i pavlefshëm" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "Përdoruesi dhe/apo kodi i MySQL-it i pavlefshëm." -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Veprim i gabuar i DB-it: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Komanda e gabuar ishte: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Përdoruesi MySQL '%s'@'localhost' ekziston." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Eliminoni këtë përdorues nga MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Përdoruesi MySQL '%s'@'%%' ekziston" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Eliminoni këtë përdorues nga MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Përdoruesi dhe/apo kodi i Oracle-it i pavlefshëm" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Komanda e gabuar ishte: \"%s\", përdoruesi: %s, kodi: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "Përdoruesi dhe/apo kodi i MS SQL i pavlefshëm: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Serveri web i juaji nuk është konfiguruar akoma për të lejuar sinkronizimin e skedarëve sepse ndërfaqja WebDAV mund të jetë e dëmtuar." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Ju lutemi kontrolloni mirë shoqëruesin e instalimit." diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po index 4c1226537b..f8450cb1d6 100644 --- a/l10n/sq/settings.po +++ b/l10n/sq/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po index 839c6616a8..9e225efdf3 100644 --- a/l10n/sq/user_ldap.po +++ b/l10n/sq/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index 6866ad5df6..b1d533cb3e 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "прошле године" msgid "years ago" msgstr "година раније" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "У реду" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Откажи" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Одабери" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Откажи" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Да" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Не" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "У реду" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/sr/files.po b/l10n/sr/files.po index 008e27f634..f9bd1de117 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_external.po b/l10n/sr/files_external.po index 83105656cf..5a4ff450a2 100644 --- a/l10n/sr/files_external.po +++ b/l10n/sr/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index 60f8cfce70..b129a71228 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index 0c35b37936..fa2752d7b1 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index f2b8abefc5..485582b642 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Помоћ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Лично" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Поставке" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Корисници" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Апликације" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Администратор" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Преузимање ZIP-а је искључено." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Датотеке морате преузимати једну по једну." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Назад на датотеке" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Изабране датотеке су превелике да бисте направили ZIP датотеку." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Ваш веб сервер тренутно не подржава синхронизацију датотека јер се чини да је WebDAV сучеље неисправно." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Погледајте водиче за инсталацију." diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 372c87d23e..59a1cb704f 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/user_ldap.po b/l10n/sr/user_ldap.po index d13753c822..d743873a29 100644 --- a/l10n/sr/user_ldap.po +++ b/l10n/sr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 555da08b9e..0fdd177341 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Otkaži" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Otkaži" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index e7c6cc4f53..3b0df58b92 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_external.po b/l10n/sr@latin/files_external.po index 1c91965f29..c5525d7bad 100644 --- a/l10n/sr@latin/files_external.po +++ b/l10n/sr@latin/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index a36fa20fae..6b3b853248 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index 717696ba37..48e196f8f1 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index d2b1782668..8b50f9673b 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Pomoć" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Lično" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Podešavanja" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Korisnici" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Programi" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Adninistracija" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index dbfe43bcfc..43034f3b49 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/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-04-27 02:17+0200\n" -"PO-Revision-Date: 2013-04-26 08:31+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 +#: js/users.js:92 templates/users.php:26 templates/users.php:78 #: templates/users.php:103 msgid "Groups" msgstr "Grupe" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:80 templates/users.php:115 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:155 msgid "Delete" msgstr "Obriši" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:420 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:421 js/users.js:427 js/users.js:442 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:426 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "förra året" msgid "years ago" msgstr "år sedan" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Avbryt" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Välj" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Avbryt" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Ja" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Nej" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/sv/files.po b/l10n/sv/files.po index f99535735a..77f7e3f849 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_external.po b/l10n/sv/files_external.po index 9ebda80a2d..8264e4d067 100644 --- a/l10n/sv/files_external.po +++ b/l10n/sv/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 2ba2bb298c..652c7f84c9 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index 33c448aa9e..a2f0d01a62 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index d02feb64ea..a387fe4822 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Hjälp" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Personligt" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Inställningar" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Användare" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Program" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Admin" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Nerladdning av ZIP är avstängd." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Filer laddas ner en åt gången." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Tillbaka till Filer" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Valda filer är för stora för att skapa zip-fil." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Din webbserver är inte korrekt konfigurerad för att tillåta filsynkronisering eftersom WebDAV inte verkar fungera." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Var god kontrollera installationsguiden." diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index 3be85181fe..b2802dad5a 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/user_ldap.po b/l10n/sv/user_ldap.po index 9fca84c657..466f22acaf 100644 --- a/l10n/sv/user_ldap.po +++ b/l10n/sv/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 07325fade9..695c92e17f 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "கடந்த வருடம்" msgid "years ago" msgstr "வருடங்களுக்கு முன்" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "சரி" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "இரத்து செய்க" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "தெரிவுசெய்க " -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "இரத்து செய்க" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ஆம்" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "இல்லை" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "சரி" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 9ad71c544c..544d15e92e 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po index 2d1e185537..e5905a94a4 100644 --- a/l10n/ta_LK/files_external.po +++ b/l10n/ta_LK/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index 2522409a0d..4c9c4ab550 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index 79d45d3828..bb442763f3 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index 5ab85c3d26..84fbc746d8 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "உதவி" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "தனிப்பட்ட" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "அமைப்புகள்" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "பயனாளர்" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "செயலிகள்" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "நிர்வாகம்" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "வீசொலிப் பூட்டு பதிவிறக்கம் நிறுத்தப்பட்டுள்ளது." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "கோப்புகள்ஒன்றன் பின் ஒன்றாக பதிவிறக்கப்படவேண்டும்." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "கோப்புகளுக்கு செல்க" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "வீ சொலிக் கோப்புகளை உருவாக்குவதற்கு தெரிவுசெய்யப்பட்ட கோப்புகள் மிகப்பெரியவை" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index 96dcf4f465..22fbcef78d 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po index 2a5d7bf540..2e07179f97 100644 --- a/l10n/ta_LK/user_ldap.po +++ b/l10n/ta_LK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/core.po b/l10n/te/core.po index a4aaf33a49..514c0cb50a 100644 --- a/l10n/te/core.po +++ b/l10n/te/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "పోయిన సంవత్సరం" msgid "years ago" msgstr "సంవత్సరాల క్రితం" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "సరే" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "రద్దుచేయి" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "రద్దుచేయి" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "అవును" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "కాదు" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "సరే" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/te/files.po b/l10n/te/files.po index 2dbe5ff11e..95fe99e2dd 100644 --- a/l10n/te/files.po +++ b/l10n/te/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_external.po b/l10n/te/files_external.po index 7f8b65ba98..4b741282d9 100644 --- a/l10n/te/files_external.po +++ b/l10n/te/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_trashbin.po b/l10n/te/files_trashbin.po index 90a947f784..726aa934a2 100644 --- a/l10n/te/files_trashbin.po +++ b/l10n/te/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/lib.po b/l10n/te/lib.po index a51822fe45..4cc91ef1e9 100644 --- a/l10n/te/lib.po +++ b/l10n/te/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "సహాయం" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "అమరికలు" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "వాడుకరులు" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/te/settings.po b/l10n/te/settings.po index fb91ffa67f..0468471645 100644 --- a/l10n/te/settings.po +++ b/l10n/te/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/user_ldap.po b/l10n/te/user_ldap.po index eebc4da9ed..45077de378 100644 --- a/l10n/te/user_ldap.po +++ b/l10n/te/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index ebe74619f0..f16aa6c446 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 6560570071..6b6a9e05aa 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 5873f3e7b8..199e2828b8 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 004046e622..db915a6782 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 953d87a720..4b97bd4b71 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 4efb1b73c6..51720b0f3d 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index fccd0997a4..eb2b51e4f7 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index 0edba6ae59..cdf00a0782 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 70a5168611..bbf68c3a5a 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index c440c988ca..51427e13fb 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index a52cf0777f..4783300333 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-23 01:58+0200\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index 568570f897..d4d148f2c9 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "ปีที่แล้ว" msgid "years ago" msgstr "ปี ที่ผ่านมา" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "ตกลง" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "ยกเลิก" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "เลือก" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "ยกเลิก" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ตกลง" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "ไม่ตกลง" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "ตกลง" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 52962e21fb..0ee6248b27 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_external.po b/l10n/th_TH/files_external.po index 4aea7d4916..d1679d21f4 100644 --- a/l10n/th_TH/files_external.po +++ b/l10n/th_TH/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index eab4fbbbd7..6e48c1ef81 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 0481d13799..891b4da11c 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index cbe2379999..4dbdc8be1d 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "ช่วยเหลือ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "ส่วนตัว" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "ตั้งค่า" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "ผู้ใช้งาน" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "แอปฯ" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "ผู้ดูแล" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "คุณสมบัติการดาวน์โหลด zip ถูกปิดการใช้งานไว้" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "ไฟล์สามารถดาวน์โหลดได้ทีละครั้งเท่านั้น" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "กลับไปที่ไฟล์" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "ไฟล์ที่เลือกมีขนาดใหญ่เกินกว่าที่จะสร้างเป็นไฟล์ zip" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index 0c88025491..4d1ea92e63 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/user_ldap.po b/l10n/th_TH/user_ldap.po index ebb8a40aef..57aa79e2fa 100644 --- a/l10n/th_TH/user_ldap.po +++ b/l10n/th_TH/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index 6049fb79a2..d006494382 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "geçen yıl" msgid "years ago" msgstr "yıl önce" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Tamam" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "İptal" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "seç" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "İptal" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Evet" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Hayır" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Tamam" + #: 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." diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 204e6030a0..676603c65a 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/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-05-23 01:58+0200\n" -"PO-Revision-Date: 2013-05-22 07:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_external.po b/l10n/tr/files_external.po index b3199728fd..089a46d9f6 100644 --- a/l10n/tr/files_external.po +++ b/l10n/tr/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index 58a33bd65a..546d65d8d9 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index ff3ae0eaac..f00cf7484c 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index 851ae213cc..df47baf932 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/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-05-04 01:59+0200\n" -"PO-Revision-Date: 2013-05-03 12:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Yardım" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Kişisel" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Ayarlar" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Kullanıcılar" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Uygulamalar" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Yönetici" @@ -114,72 +114,76 @@ msgstr "%s veritabanı adında nokta kullanamayabilirsiniz" msgid "%s set the database host." msgstr "%s veritabanı sunucu adını tanımla" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL adi kullanici ve/veya parola yasal degildir. " -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Bir konto veya kullanici birlemek ihtiyacin. " -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Adi klullanici ve/veya parola Oracle mantikli değildir. " +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL kullanıcı adı ve/veya parolası geçerli değil" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "DB Hata: ''%s''" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Komut rahasiz ''%s''. " -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL kullanici '%s @local host zatan var. " -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Bu kullanici MySQLden list disari koymak. " -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL kullanici '%s @ % % zaten var (zaten yazili)" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Bu kulanıcıyı MySQL veritabanından kaldır" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Adi klullanici ve/veya parola Oracle mantikli değildir. " + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Hatalı komut: \"%s\", ad: %s, parola: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL kullanıcı adı ve/veya parolası geçersiz: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Lütfen kurulum kılavuzlarını iki kez kontrol edin." diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 2734559427..8f5cf140aa 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index fa75800dde..bfd9ca6593 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.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-05-23 01:58+0200\n" -"PO-Revision-Date: 2013-05-22 08:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/core.po b/l10n/ug/core.po index 4642a6e1a2..0c10b9e073 100644 --- a/l10n/ug/core.po +++ b/l10n/ug/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "جەزملە" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "ۋاز كەچ" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "ۋاز كەچ" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ھەئە" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "ياق" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "جەزملە" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ug/files.po b/l10n/ug/files.po index f69fcf0815..f4bce231f7 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_external.po b/l10n/ug/files_external.po index 1da94038c5..5c120aea0b 100644 --- a/l10n/ug/files_external.po +++ b/l10n/ug/files_external.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 11:50+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 85d88c6181..99599acd88 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-08 15:21+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: uqkun \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_trashbin.po b/l10n/ug/files_trashbin.po index d9d8571860..986d49ce3c 100644 --- a/l10n/ug/files_trashbin.po +++ b/l10n/ug/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/lib.po b/l10n/ug/lib.po index a14470fe87..0585574309 100644 --- a/l10n/ug/lib.po +++ b/l10n/ug/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-05-12 02:02+0200\n" -"PO-Revision-Date: 2013-05-04 12:00+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "Language: ug\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "ياردەم" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "شەخسىي" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "تەڭشەكلەر" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "ئىشلەتكۈچىلەر" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "ئەپلەر" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ug/settings.po b/l10n/ug/settings.po index d7d4d921f9..24ee51def4 100644 --- a/l10n/ug/settings.po +++ b/l10n/ug/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/user_ldap.po b/l10n/ug/user_ldap.po index 96f22a9e8b..79859271ff 100644 --- a/l10n/ug/user_ldap.po +++ b/l10n/ug/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 0d847d9392..60c0ac8968 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "минулого року" msgid "years ago" msgstr "роки тому" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Ok" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Відмінити" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Обрати" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Відмінити" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Так" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Ні" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 617b66ad3e..15bd0c1dfe 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index ef3ddfd152..0a8a49f6f9 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index a78808b327..7ac8549950 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index 7c13dac4da..fa4cda467f 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index af5a7ee2d8..e9b87cf8c6 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Допомога" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Особисте" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Налаштування" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Користувачі" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Додатки" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Адмін" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP завантаження вимкнено." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Файли повинні бути завантаженні послідовно." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Повернутися до файлів" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Вибрані фали завеликі для генерування zip файлу." @@ -113,72 +113,76 @@ msgstr "%s не можна використовувати крапки в наз msgid "%s set the database host." msgstr "%s встановити хост бази даних." -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL ім'я користувача та/або пароль не дійсні" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "Вам потрібно ввести або існуючий обліковий запис або administrator." -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle ім'я користувача та/або пароль не дійсні" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL ім'я користувача та/або пароль не дійсні" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "Помилка БД: \"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "Команда, що викликала проблему: \"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "Користувач MySQL '%s'@'localhost' вже існує." -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "Видалити цього користувача з MySQL" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "Користувач MySQL '%s'@'%%' вже існує" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "Видалити цього користувача з MySQL." -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle ім'я користувача та/або пароль не дійсні" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "Команда, що викликала проблему: \"%s\", ім'я: %s, пароль: %s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL ім'я користувача та/або пароль не дійсні: %s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Ваш Web-сервер ще не налаштований належним чином для того, щоб дозволити синхронізацію файлів, через те що інтерфейс WebDAV, здається, зламаний." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "Будь ласка, перевірте інструкції по встановленню." diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index dcbbcd3055..3fb2467187 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index e57d6368ab..98019dfaf4 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/core.po b/l10n/ur_PK/core.po index b16f5c533b..b9c4d4d054 100644 --- a/l10n/ur_PK/core.po +++ b/l10n/ur_PK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "اوکے" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "منسوخ کریں" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "منتخب کریں" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "منسوخ کریں" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "ہاں" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "نہیں" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "اوکے" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ur_PK/files.po b/l10n/ur_PK/files.po index e34cfafff4..2cedc88260 100644 --- a/l10n/ur_PK/files.po +++ b/l10n/ur_PK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_trashbin.po b/l10n/ur_PK/files_trashbin.po index 8844c8c59e..a767e6d265 100644 --- a/l10n/ur_PK/files_trashbin.po +++ b/l10n/ur_PK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/lib.po b/l10n/ur_PK/lib.po index f12d98a35a..c783af97eb 100644 --- a/l10n/ur_PK/lib.po +++ b/l10n/ur_PK/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 21:52+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ur_PK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "مدد" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "ذاتی" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "سیٹینگز" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "یوزرز" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "ایپز" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "ایڈمن" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ur_PK/settings.po b/l10n/ur_PK/settings.po index f659385b36..bc06878201 100644 --- a/l10n/ur_PK/settings.po +++ b/l10n/ur_PK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/user_ldap.po b/l10n/ur_PK/user_ldap.po index 61c99c1fcb..0f8cb26a3d 100644 --- a/l10n/ur_PK/user_ldap.po +++ b/l10n/ur_PK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index d5016bce85..e5093a94fd 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "năm trước" msgid "years ago" msgstr "năm trước" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "Đồng ý" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "Hủy" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "Chọn" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "Hủy" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Có" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "Không" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "Đồng ý" + #: 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." diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 67d6e94d7f..2cca8bcaa0 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index fd539c747a..c9777d959a 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-05 06:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index 97af1379ae..3421e01a4e 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 6e5de8cd4c..3a638c39e2 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 186aeccd94..9cf90a1574 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "Giúp đỡ" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "Cá nhân" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "Cài đặt" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "Người dùng" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "Ứng dụng" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "Quản trị" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "Tải về ZIP đã bị tắt." -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "Tập tin cần phải được tải về từng người một." -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "Trở lại tập tin" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "Tập tin được chọn quá lớn để tạo tập tin ZIP." @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index 22139400b8..645bd7baf8 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index c94715753c..2a8995440e 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 0915509f39..0388186c3c 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "去年" msgid "years ago" msgstr "年前" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "好的" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "取消" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "选择" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "取消" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "是" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "否" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "好的" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index c6e9e821ef..87d234de37 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_external.po b/l10n/zh_CN.GB2312/files_external.po index 3ab0f8b002..f65232c72a 100644 --- a/l10n/zh_CN.GB2312/files_external.po +++ b/l10n/zh_CN.GB2312/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_sharing.po b/l10n/zh_CN.GB2312/files_sharing.po index 61e2a5168a..2b091b8d3e 100644 --- a/l10n/zh_CN.GB2312/files_sharing.po +++ b/l10n/zh_CN.GB2312/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index a6c759cdf0..fb84ff6561 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index 526d5f2461..65e690b4fe 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "帮助" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "私人" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "设置" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "用户" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "程序" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "管理员" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP 下载已关闭" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "需要逐个下载文件。" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "返回到文件" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "选择的文件太大而不能生成 zip 文件。" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "因WebDAV接口故障,您的网络服务器好像并未允许文件同步。" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "请双击安装向导。" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index bd917dd80d..61d98359d0 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/user_ldap.po b/l10n/zh_CN.GB2312/user_ldap.po index 8eb298ee7e..80b5a7195f 100644 --- a/l10n/zh_CN.GB2312/user_ldap.po +++ b/l10n/zh_CN.GB2312/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 59cf8218e1..73520d3ac5 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "去年" msgid "years ago" msgstr "年前" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "好" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "取消" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "选择(&C)..." -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "取消" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "是" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "否" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "好" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 7bd8ad81e9..00903854a0 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index 4c1d4d64de..6e798b3bc3 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 32f5435899..77a25d1939 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index 75da62afbf..52c54bcbee 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index 27fe05a7de..bad9755133 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "帮助" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "个人" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "设置" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "用户" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "应用" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "管理" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP 下载已经关闭" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "需要逐一下载文件" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "回到文件" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "选择的文件太大,无法生成 zip 文件。" @@ -113,72 +113,76 @@ msgstr "%s 您不能在数据库名称中使用英文句号。" msgid "%s set the database host." msgstr "%s 设置数据库所在主机。" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL 数据库用户名和/或密码无效" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "你需要输入一个数据库中已有的账户或管理员账户。" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle 数据库用户名和/或密码无效" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL 数据库用户名和/或密码无效" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "数据库错误:\"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "冲突命令为:\"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL 用户 '%s'@'localhost' 已存在。" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "建议从 MySQL 数据库中丢弃 Drop 此用户" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL 用户 '%s'@'%%' 已存在" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "建议从 MySQL 数据库中丢弃 Drop 此用户。" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle 数据库用户名和/或密码无效" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "冲突命令为:\"%s\",名称:%s,密码:%s" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL 用户名和/或密码无效:%s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "您的Web服务器尚未正确设置以允许文件同步, 因为WebDAV的接口似乎已损坏." -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "请认真检查安装指南." diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index fef0cdd11b..6056eafbef 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index 47d10ead36..d4dd9b9928 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index 000af61d0f..62dcdad63a 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "OK" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "取消" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "取消" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "Yes" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "No" +#: js/oc-dialogs.js:181 +msgid "Ok" +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." diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 57d0ed08b7..beaef109c9 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po index 1b8a3b8705..3d43486723 100644 --- a/l10n/zh_HK/files_external.po +++ b/l10n/zh_HK/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index 3f73a185ad..0e52725e03 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 50a8313ffd..0ad3c39ccd 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index c47e2fd170..412d69a73d 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "幫助" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "個人" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "設定" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "用戶" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "軟件" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "管理" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index b9e2346a6f..9957cf25e6 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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po index f619852c77..8950dc88a4 100644 --- a/l10n/zh_HK/user_ldap.po +++ b/l10n/zh_HK/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index e3de472e4e..75282bcc70 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:18+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "去年" msgid "years ago" msgstr "幾年前" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "好" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "取消" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "選擇" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "取消" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "是" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "否" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "好" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 81e77b9fbc..6e4b9226e9 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index e8d127b21b..4d01dbe44f 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 10:20+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 8482968091..8da3c5805c 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.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-05-01 01:59+0200\n" -"PO-Revision-Date: 2013-04-30 02:40+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index 1a24751151..e98bbee141 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index 71930d80bc..f4ee7ce21d 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "說明" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "個人" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "設定" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "使用者" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "應用程式" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "管理" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP 下載已關閉。" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "檔案需要逐一下載。" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "回到檔案列表" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "選擇的檔案太大以致於無法產生壓縮檔。" @@ -113,72 +113,76 @@ msgstr "%s 資料庫名稱不能包含小數點" msgid "%s set the database host." msgstr "%s 設定資料庫主機。" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "PostgreSQL 用戶名和/或密碼無效" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "您必須輸入一個現有的帳號或管理員帳號。" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" -msgstr "Oracle 用戶名和/或密碼無效" +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "MySQL 用戶名和/或密碼無效" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "資料庫錯誤:\"%s\"" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "有問題的指令是:\"%s\"" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "MySQL 使用者 '%s'@'localhost' 已經存在。" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "在 MySQL 移除這個使用者" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "MySQL 使用者 '%s'@'%%' 已經存在" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "在 MySQL 移除這個使用者。" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "Oracle 用戶名和/或密碼無效" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "有問題的指令是:\"%s\" ,使用者:\"%s\",密碼:\"%s\"" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "MS SQL 使用者和/或密碼無效:%s" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "您的網頁伺服器尚未被正確設定來進行檔案同步,因為您的 WebDAV 界面似乎無法使用。" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "請參考安裝指南。" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index dca33e8dbc..cad92c61bf 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:15+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index bfa71664a2..b6739a2934 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/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-05-18 01:58+0200\n" -"PO-Revision-Date: 2013-05-17 10:19+0000\n" +"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"PO-Revision-Date: 2013-05-23 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/l10n/ar.php b/lib/l10n/ar.php index 98b9608ce0..22c934e238 100644 --- a/lib/l10n/ar.php +++ b/lib/l10n/ar.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s ادخل اسم خادم قاعدة البيانات", "PostgreSQL username and/or password not valid" => "اسم المستخدم / أو كلمة المرور الخاصة بـPostgreSQL غير صحيحة", "You need to enter either an existing account or the administrator." => "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير.", -"Oracle username and/or password not valid" => "اسم المستخدم و/أو كلمة المرور لنظام Oracle غير صحيح", "MySQL username and/or password not valid" => "اسم المستخدم و/أو كلمة المرور لنظام MySQL غير صحيح", "DB Error: \"%s\"" => "خطأ في قواعد البيانات : \"%s\"", "Offending command was: \"%s\"" => "الأمر المخالف كان : \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "احذف اسم المستخدم هذا من الـ MySQL", "MySQL user '%s'@'%%' already exists" => "أسم المستخدم '%s'@'%%' الخاص بـ MySQL موجود مسبقا", "Drop this user from MySQL." => "احذف اسم المستخدم هذا من الـ MySQL.", +"Oracle username and/or password not valid" => "اسم المستخدم و/أو كلمة المرور لنظام Oracle غير صحيح", "Offending command was: \"%s\", name: %s, password: %s" => "الأمر المخالف كان : \"%s\", اسم المستخدم : %s, كلمة المرور: %s", "MS SQL username and/or password not valid: %s" => "اسم المستخدم و/أو كلمة المرور لنظام MS SQL غير صحيح : %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "اعدادات خادمك غير صحيحة بشكل تسمح لك بمزامنة ملفاتك وذلك بسبب أن واجهة WebDAV تبدو معطلة", diff --git a/lib/l10n/bg_BG.php b/lib/l10n/bg_BG.php index 73a7fdce48..2de4c0a6e6 100644 --- a/lib/l10n/bg_BG.php +++ b/lib/l10n/bg_BG.php @@ -23,13 +23,13 @@ "%s you may not use dots in the database name" => "%s, не можете да ползвате точки в името на базата от данни", "PostgreSQL username and/or password not valid" => "Невалидно PostgreSQL потребителско име и/или парола", "You need to enter either an existing account or the administrator." => "Необходимо е да влезете в всъществуващ акаунт или като администратора", -"Oracle username and/or password not valid" => "Невалидно Oracle потребителско име и/или парола", "MySQL username and/or password not valid" => "Невалидно MySQL потребителско име и/или парола", "DB Error: \"%s\"" => "Грешка в базата от данни: \"%s\"", "MySQL user '%s'@'localhost' exists already." => "MySQL потребителят '%s'@'localhost' вече съществува", "Drop this user from MySQL" => "Изтриване на потребителя от MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL потребителят '%s'@'%%' вече съществува.", "Drop this user from MySQL." => "Изтриване на потребителя от MySQL.", +"Oracle username and/or password not valid" => "Невалидно Oracle потребителско име и/или парола", "MS SQL username and/or password not valid: %s" => "Невалидно MS SQL потребителско име и/или парола: %s", "Please double check the installation guides." => "Моля направете повторна справка с ръководството за инсталиране.", "seconds ago" => "преди секунди", diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php index 028bf2343a..d431fd7207 100644 --- a/lib/l10n/ca.php +++ b/lib/l10n/ca.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s establiu l'ordinador central de la base de dades.", "PostgreSQL username and/or password not valid" => "Nom d'usuari i/o contrasenya PostgreSQL no vàlids", "You need to enter either an existing account or the administrator." => "Heu d'escriure un compte existent o el d'administrador.", -"Oracle username and/or password not valid" => "Nom d'usuari i/o contrasenya Oracle no vàlids", "MySQL username and/or password not valid" => "Nom d'usuari i/o contrasenya MySQL no vàlids", "DB Error: \"%s\"" => "Error DB: \"%s\"", "Offending command was: \"%s\"" => "L'ordre en conflicte és: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Elimina aquest usuari de MySQL", "MySQL user '%s'@'%%' already exists" => "L'usuari MySQL '%s'@'%%' ja existeix", "Drop this user from MySQL." => "Elimina aquest usuari de MySQL.", +"Oracle username and/or password not valid" => "Nom d'usuari i/o contrasenya Oracle no vàlids", "Offending command was: \"%s\", name: %s, password: %s" => "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s", "MS SQL username and/or password not valid: %s" => "Nom d'usuari i/o contrasenya MS SQL no vàlids: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", diff --git a/lib/l10n/cs_CZ.php b/lib/l10n/cs_CZ.php index e3007f687d..36469507d4 100644 --- a/lib/l10n/cs_CZ.php +++ b/lib/l10n/cs_CZ.php @@ -24,7 +24,6 @@ "%s set the database host." => "Zadejte název počítače s databází %s.", "PostgreSQL username and/or password not valid" => "Uživatelské jméno, či heslo PostgreSQL není platné", "You need to enter either an existing account or the administrator." => "Musíte zadat existující účet, či správce.", -"Oracle username and/or password not valid" => "Uživatelské jméno, či heslo Oracle není platné", "MySQL username and/or password not valid" => "Uživatelské jméno, či heslo MySQL není platné", "DB Error: \"%s\"" => "Chyba DB: \"%s\"", "Offending command was: \"%s\"" => "Podezřelý příkaz byl: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Zahodit uživatele z MySQL", "MySQL user '%s'@'%%' already exists" => "Uživatel '%s'@'%%' již v MySQL existuje", "Drop this user from MySQL." => "Zahodit uživatele z MySQL.", +"Oracle username and/or password not valid" => "Uživatelské jméno, či heslo Oracle není platné", "Offending command was: \"%s\", name: %s, password: %s" => "Podezřelý příkaz byl: \"%s\", jméno: %s, heslo: %s", "MS SQL username and/or password not valid: %s" => "Uživatelské jméno, či heslo MSSQL není platné: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Váš webový server není správně nastaven pro umožnění synchronizace, protože rozhraní WebDAV je rozbité.", diff --git a/lib/l10n/cy_GB.php b/lib/l10n/cy_GB.php index ab5623bbf4..b3503dcc57 100644 --- a/lib/l10n/cy_GB.php +++ b/lib/l10n/cy_GB.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s gosod gwesteiwr y gronfa ddata.", "PostgreSQL username and/or password not valid" => "Enw a/neu gyfrinair PostgreSQL annilys", "You need to enter either an existing account or the administrator." => "Rhaid i chi naill ai gyflwyno cyfrif presennol neu'r gweinyddwr.", -"Oracle username and/or password not valid" => "Enw a/neu gyfrinair Oracle annilys", "MySQL username and/or password not valid" => "Enw a/neu gyfrinair MySQL annilys", "DB Error: \"%s\"" => "Gwall DB: \"%s\"", "Offending command was: \"%s\"" => "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Gollwng y defnyddiwr hwn o MySQL", "MySQL user '%s'@'%%' already exists" => "Defnyddiwr MySQL '%s'@'%%' eisoes yn bodoli", "Drop this user from MySQL." => "Gollwng y defnyddiwr hwn o MySQL.", +"Oracle username and/or password not valid" => "Enw a/neu gyfrinair Oracle annilys", "Offending command was: \"%s\", name: %s, password: %s" => "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\", enw: %s, cyfrinair: %s", "MS SQL username and/or password not valid: %s" => "Enw a/neu gyfrinair MS SQL annilys: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Nid yw eich gweinydd wedi'i gyflunio eto i ganiatáu cydweddu ffeiliau oherwydd bod y rhyngwyneb WebDAV wedi torri.", diff --git a/lib/l10n/da.php b/lib/l10n/da.php index dad64700e5..aead17f510 100644 --- a/lib/l10n/da.php +++ b/lib/l10n/da.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s sæt database værten.", "PostgreSQL username and/or password not valid" => "PostgreSQL brugernavn og/eller kodeord er ikke gyldigt.", "You need to enter either an existing account or the administrator." => "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.", -"Oracle username and/or password not valid" => "Oracle brugernavn og/eller kodeord er ikke gyldigt.", "MySQL username and/or password not valid" => "MySQL brugernavn og/eller kodeord er ikke gyldigt.", "DB Error: \"%s\"" => "Databasefejl: \"%s\"", "Offending command was: \"%s\"" => "Fejlende kommando var: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Slet denne bruger fra MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL brugeren '%s'@'%%' eksisterer allerede.", "Drop this user from MySQL." => "Slet denne bruger fra MySQL", +"Oracle username and/or password not valid" => "Oracle brugernavn og/eller kodeord er ikke gyldigt.", "Offending command was: \"%s\", name: %s, password: %s" => "Fejlende kommando var: \"%s\", navn: %s, password: %s", "MS SQL username and/or password not valid: %s" => "MS SQL brugernavn og/eller adgangskode ikke er gyldigt: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Din webserver er endnu ikke sat op til at tillade fil synkronisering fordi WebDAV grænsefladen virker ødelagt.", diff --git a/lib/l10n/de.php b/lib/l10n/de.php index 13acc1c55b..74715bc66e 100644 --- a/lib/l10n/de.php +++ b/lib/l10n/de.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s setze den Datenbank-Host", "PostgreSQL username and/or password not valid" => "PostgreSQL Benutzername und/oder Passwort ungültig", "You need to enter either an existing account or the administrator." => "Du musst entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.", -"Oracle username and/or password not valid" => "Oracle Benutzername und/oder Passwort ungültig", "MySQL username and/or password not valid" => "MySQL Benutzername und/oder Passwort ungültig", "DB Error: \"%s\"" => "DB Fehler: \"%s\"", "Offending command was: \"%s\"" => "Fehlerhafter Befehl war: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Lösche diesen Benutzer von MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL Benutzer '%s'@'%%' existiert bereits", "Drop this user from MySQL." => "Lösche diesen Benutzer aus MySQL.", +"Oracle username and/or password not valid" => "Oracle Benutzername und/oder Passwort ungültig", "Offending command was: \"%s\", name: %s, password: %s" => "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s", "MS SQL username and/or password not valid: %s" => "MS SQL Benutzername und/oder Password ungültig: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Dein Web-Server ist noch nicht für Datei-Synchronisation bereit, weil die WebDAV-Schnittstelle vermutlich defekt ist.", diff --git a/lib/l10n/de_DE.php b/lib/l10n/de_DE.php index 566e98b85c..d93f9e4de9 100644 --- a/lib/l10n/de_DE.php +++ b/lib/l10n/de_DE.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s setze den Datenbank-Host", "PostgreSQL username and/or password not valid" => "PostgreSQL Benutzername und/oder Passwort ungültig", "You need to enter either an existing account or the administrator." => "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.", -"Oracle username and/or password not valid" => "Oracle Benutzername und/oder Passwort ungültig", "MySQL username and/or password not valid" => "MySQL Benutzername und/oder Passwort ungültig", "DB Error: \"%s\"" => "DB Fehler: \"%s\"", "Offending command was: \"%s\"" => "Fehlerhafter Befehl war: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Lösche diesen Benutzer aus MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL Benutzer '%s'@'%%' existiert bereits", "Drop this user from MySQL." => "Lösche diesen Benutzer aus MySQL.", +"Oracle username and/or password not valid" => "Oracle Benutzername und/oder Passwort ungültig", "Offending command was: \"%s\", name: %s, password: %s" => "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s", "MS SQL username and/or password not valid: %s" => "MS SQL Benutzername und/oder Passwort ungültig: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ihr Web-Server ist noch nicht für eine Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", diff --git a/lib/l10n/el.php b/lib/l10n/el.php index 14b63a8184..8637b8da26 100644 --- a/lib/l10n/el.php +++ b/lib/l10n/el.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s ρυθμίση του κεντρικόυ υπολογιστή βάσης δεδομένων. ", "PostgreSQL username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL", "You need to enter either an existing account or the administrator." => "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.", -"Oracle username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle", "MySQL username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της MySQL", "DB Error: \"%s\"" => "Σφάλμα Βάσης Δεδομένων: \"%s\"", "Offending command was: \"%s\"" => "Η εντολη παραβατικοτητας ηταν: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Απόρριψη αυτού του χρήστη από την MySQL", "MySQL user '%s'@'%%' already exists" => "Ο χρήστης '%s'@'%%' της MySQL υπάρχει ήδη", "Drop this user from MySQL." => "Απόρριψη αυτού του χρήστη από την MySQL", +"Oracle username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle", "Offending command was: \"%s\", name: %s, password: %s" => "Η εντολη παραβατικοτητας ηταν: \"%s\", ονομα: %s, κωδικος: %s", "MS SQL username and/or password not valid: %s" => "Το όνομα χρήστη και/ή ο κωδικός της MS SQL δεν είναι έγκυρα: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ο διακομιστής σας δεν έχει ρυθμιστεί κατάλληλα ώστε να επιτρέπει τον συγχρονισμό αρχείων γιατί η διεπαφή WebDAV πιθανόν να είναι κατεστραμμένη.", diff --git a/lib/l10n/es.php b/lib/l10n/es.php index af96e693d1..fa95089a61 100644 --- a/lib/l10n/es.php +++ b/lib/l10n/es.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s ingresar el host de la base de datos.", "PostgreSQL username and/or password not valid" => "Usuario y/o contraseña de PostgreSQL no válidos", "You need to enter either an existing account or the administrator." => "Tiene que ingresar una cuenta existente o la del administrador.", -"Oracle username and/or password not valid" => "Usuario y/o contraseña de Oracle no válidos", "MySQL username and/or password not valid" => "Usuario y/o contraseña de MySQL no válidos", "DB Error: \"%s\"" => "Error BD: \"%s\"", "Offending command was: \"%s\"" => "Comando infractor: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Eliminar este usuario de MySQL", "MySQL user '%s'@'%%' already exists" => "Usuario MySQL '%s'@'%%' ya existe", "Drop this user from MySQL." => "Eliminar este usuario de MySQL.", +"Oracle username and/or password not valid" => "Usuario y/o contraseña de Oracle no válidos", "Offending command was: \"%s\", name: %s, password: %s" => "Comando infractor: \"%s\", nombre: %s, contraseña: %s", "MS SQL username and/or password not valid: %s" => "Usuario y/o contraseña de MS SQL no válidos: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando.", diff --git a/lib/l10n/es_AR.php b/lib/l10n/es_AR.php index e9da37e0a3..1df1b16de6 100644 --- a/lib/l10n/es_AR.php +++ b/lib/l10n/es_AR.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s Especifique la dirección de la Base de Datos", "PostgreSQL username and/or password not valid" => "Nombre de usuario o contraseña de PostgradeSQL no válido.", "You need to enter either an existing account or the administrator." => "Debe ingresar una cuenta existente o el administrador", -"Oracle username and/or password not valid" => "El nombre de usuario y contraseña no son válidos", "MySQL username and/or password not valid" => "Usuario y/o contraseña MySQL no válido", "DB Error: \"%s\"" => "Error DB: \"%s\"", "Offending command was: \"%s\"" => "El comando no comprendido es: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Borrar este usuario de MySQL", "MySQL user '%s'@'%%' already exists" => "Usuario MySQL '%s'@'%%' ya existente", "Drop this user from MySQL." => "Borrar este usuario de MySQL", +"Oracle username and/or password not valid" => "El nombre de usuario y contraseña no son válidos", "Offending command was: \"%s\", name: %s, password: %s" => "El comando no comprendido es: \"%s\", nombre: \"%s\", contraseña: \"%s\"", "MS SQL username and/or password not valid: %s" => "Nombre de usuario y contraseña de MS SQL no son válidas: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Tu servidor web no está configurado todavía para permitir sincronización de archivos porque la interfaz WebDAV parece no funcionar.", diff --git a/lib/l10n/et_EE.php b/lib/l10n/et_EE.php index a4423343ce..2e25f1aa71 100644 --- a/lib/l10n/et_EE.php +++ b/lib/l10n/et_EE.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s määra andmebaasi server.", "PostgreSQL username and/or password not valid" => "PostgreSQL kasutajatunnus ja/või parool pole õiged", "You need to enter either an existing account or the administrator." => "Sisesta kas juba olemasolev konto või administrator.", -"Oracle username and/or password not valid" => "Oracle kasutajatunnus ja/või parool pole õiged", "MySQL username and/or password not valid" => "MySQL kasutajatunnus ja/või parool pole õiged", "DB Error: \"%s\"" => "Andmebaasi viga: \"%s\"", "Offending command was: \"%s\"" => "Tõrkuv käsk oli: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Kustuta see kasutaja MySQL-ist", "MySQL user '%s'@'%%' already exists" => "MySQL kasutaja '%s'@'%%' on juba olemas", "Drop this user from MySQL." => "Kustuta see kasutaja MySQL-ist.", +"Oracle username and/or password not valid" => "Oracle kasutajatunnus ja/või parool pole õiged", "Offending command was: \"%s\", name: %s, password: %s" => "Tõrkuv käsk oli: \"%s\", nimi: %s, parool: %s", "MS SQL username and/or password not valid: %s" => "MS SQL kasutajatunnus ja/või parool pole õiged: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Veebiserveri ei ole veel korralikult seadistatud võimaldamaks failide sünkroniseerimist, kuna WebDAV liides näib olevat mittetoimiv.", diff --git a/lib/l10n/eu.php b/lib/l10n/eu.php index 934a4d19ab..05b68b062c 100644 --- a/lib/l10n/eu.php +++ b/lib/l10n/eu.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s sartu datu basearen hostalaria.", "PostgreSQL username and/or password not valid" => "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak.", "You need to enter either an existing account or the administrator." => "Existitzen den kontu bat edo administradorearena jarri behar duzu.", -"Oracle username and/or password not valid" => "Oracle erabiltzaile edota pasahitza ez dira egokiak.", "MySQL username and/or password not valid" => "MySQL erabiltzaile edota pasahitza ez dira egokiak.", "DB Error: \"%s\"" => "DB errorea: \"%s\"", "Offending command was: \"%s\"" => "Errorea komando honek sortu du: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Ezabatu erabiltzaile hau MySQLtik", "MySQL user '%s'@'%%' already exists" => "MySQL '%s'@'%%' erabiltzailea dagoeneko existitzen da", "Drop this user from MySQL." => "Ezabatu erabiltzaile hau MySQLtik.", +"Oracle username and/or password not valid" => "Oracle erabiltzaile edota pasahitza ez dira egokiak.", "Offending command was: \"%s\", name: %s, password: %s" => "Errorea komando honek sortu du: \"%s\", izena: %s, pasahitza: %s", "MS SQL username and/or password not valid: %s" => "MS SQL erabiltzaile izena edota pasahitza ez dira egokiak: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Zure web zerbitzaria ez dago oraindik ongi konfiguratuta fitxategien sinkronizazioa egiteko, WebDAV interfazea ongi ez dagoela dirudi.", diff --git a/lib/l10n/fi_FI.php b/lib/l10n/fi_FI.php index c2e83f6616..0caa7b12df 100644 --- a/lib/l10n/fi_FI.php +++ b/lib/l10n/fi_FI.php @@ -22,13 +22,14 @@ "%s enter the database name." => "%s anna tietokannan nimi.", "%s you may not use dots in the database name" => "%s et voi käyttää pisteitä tietokannan nimessä", "PostgreSQL username and/or password not valid" => "PostgreSQL:n käyttäjätunnus ja/tai salasana on väärin", -"Oracle username and/or password not valid" => "Oraclen käyttäjätunnus ja/tai salasana on väärin", +"Oracle connection could not be established" => "Oracle-yhteyttä ei voitu muodostaa", "MySQL username and/or password not valid" => "MySQL:n käyttäjätunnus ja/tai salasana on väärin", "DB Error: \"%s\"" => "Tietokantavirhe: \"%s\"", "MySQL user '%s'@'localhost' exists already." => "MySQL-käyttäjä '%s'@'localhost' on jo olemassa.", "Drop this user from MySQL" => "Pudota tämä käyttäjä MySQL:stä", "MySQL user '%s'@'%%' already exists" => "MySQL-käyttäjä '%s'@'%%' on jo olemassa", "Drop this user from MySQL." => "Pudota tämä käyttäjä MySQL:stä.", +"Oracle username and/or password not valid" => "Oraclen käyttäjätunnus ja/tai salasana on väärin", "MS SQL username and/or password not valid: %s" => "MS SQL -käyttäjätunnus ja/tai -salasana on väärin: %s", "Please double check the installation guides." => "Lue tarkasti asennusohjeet.", "seconds ago" => "sekuntia sitten", diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php index c0920179db..af4efc2b63 100644 --- a/lib/l10n/fr.php +++ b/lib/l10n/fr.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s spécifiez l'hôte de la base de données.", "PostgreSQL username and/or password not valid" => "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL invalide", "You need to enter either an existing account or the administrator." => "Vous devez spécifier soit le nom d'un compte existant, soit celui de l'administrateur.", -"Oracle username and/or password not valid" => "Nom d'utilisateur et/ou mot de passe de la base Oracle invalide", "MySQL username and/or password not valid" => "Nom d'utilisateur et/ou mot de passe de la base MySQL invalide", "DB Error: \"%s\"" => "Erreur de la base de données : \"%s\"", "Offending command was: \"%s\"" => "La requête en cause est : \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Retirer cet utilisateur de la base MySQL", "MySQL user '%s'@'%%' already exists" => "L'utilisateur MySQL '%s'@'%%' existe déjà", "Drop this user from MySQL." => "Retirer cet utilisateur de la base MySQL.", +"Oracle username and/or password not valid" => "Nom d'utilisateur et/ou mot de passe de la base Oracle invalide", "Offending command was: \"%s\", name: %s, password: %s" => "La requête en cause est : \"%s\", nom : %s, mot de passe : %s", "MS SQL username and/or password not valid: %s" => "Le nom d'utilisateur et/ou le mot de passe de la base MS SQL est invalide : %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut.", diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php index 783826508c..96b083821d 100644 --- a/lib/l10n/gl.php +++ b/lib/l10n/gl.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s estabeleza o servidor da base de datos", "PostgreSQL username and/or password not valid" => "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto", "You need to enter either an existing account or the administrator." => "Deberá introducir unha conta existente ou o administrador.", -"Oracle username and/or password not valid" => "Nome de usuario e/ou contrasinal de Oracle incorrecto", "MySQL username and/or password not valid" => "Nome de usuario e/ou contrasinal de MySQL incorrecto", "DB Error: \"%s\"" => "Produciuse un erro na base de datos: «%s»", "Offending command was: \"%s\"" => "A orde ofensiva foi: «%s»", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Omitir este usuario de MySQL", "MySQL user '%s'@'%%' already exists" => "O usuario MySQL «%s»@«%%» xa existe.", "Drop this user from MySQL." => "Omitir este usuario de MySQL.", +"Oracle username and/or password not valid" => "Nome de usuario e/ou contrasinal de Oracle incorrecto", "Offending command was: \"%s\", name: %s, password: %s" => "A orde ofensiva foi: «%s», nome: %s, contrasinal: %s", "MS SQL username and/or password not valid: %s" => "Nome de usuario e/ou contrasinal de MS SQL incorrecto: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "O seu servidor web non está aínda configurado adecuadamente para permitir a sincronización de ficheiros xa que semella que a interface WebDAV non está a funcionar.", diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php index 841020183b..de63ae3fad 100644 --- a/lib/l10n/hu_HU.php +++ b/lib/l10n/hu_HU.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s adja meg az adatbázist szolgáltató számítógép nevét.", "PostgreSQL username and/or password not valid" => "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen", "You need to enter either an existing account or the administrator." => "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", -"Oracle username and/or password not valid" => "Az Oracle felhasználói név és/vagy jelszó érvénytelen", "MySQL username and/or password not valid" => "A MySQL felhasználói név és/vagy jelszó érvénytelen", "DB Error: \"%s\"" => "Adatbázis hiba: \"%s\"", "Offending command was: \"%s\"" => "A hibát ez a parancs okozta: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Törölje ezt a felhasználót a MySQL-ből", "MySQL user '%s'@'%%' already exists" => "A '%s'@'%%' MySQL felhasználó már létezik", "Drop this user from MySQL." => "Törölje ezt a felhasználót a MySQL-ből.", +"Oracle username and/or password not valid" => "Az Oracle felhasználói név és/vagy jelszó érvénytelen", "Offending command was: \"%s\", name: %s, password: %s" => "A hibát okozó parancs ez volt: \"%s\", login név: %s, jelszó: %s", "MS SQL username and/or password not valid: %s" => "Az MS SQL felhasználónév és/vagy jelszó érvénytelen: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Az Ön webkiszolgálója nincs megfelelően beállítva az állományok szinkronizálásához, mert a WebDAV-elérés úgy tűnik, nem működik.", diff --git a/lib/l10n/id.php b/lib/l10n/id.php index 54b46cd896..29843a9532 100644 --- a/lib/l10n/id.php +++ b/lib/l10n/id.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s setel host basis data.", "PostgreSQL username and/or password not valid" => "Nama pengguna dan/atau sandi PostgreSQL tidak valid", "You need to enter either an existing account or the administrator." => "Anda harus memasukkan akun yang sudah ada atau administrator.", -"Oracle username and/or password not valid" => "Nama pengguna dan/atau sandi Oracle tidak valid", "MySQL username and/or password not valid" => "Nama pengguna dan/atau sandi MySQL tidak valid", "DB Error: \"%s\"" => "Galat Basis Data: \"%s\"", "Offending command was: \"%s\"" => "Perintah yang bermasalah: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Hapus pengguna ini dari MySQL", "MySQL user '%s'@'%%' already exists" => "Pengguna MySQL '%s'@'%%' sudah ada.", "Drop this user from MySQL." => "Hapus pengguna ini dari MySQL.", +"Oracle username and/or password not valid" => "Nama pengguna dan/atau sandi Oracle tidak valid", "Offending command was: \"%s\", name: %s, password: %s" => "Perintah yang bermasalah: \"%s\", nama pengguna: %s, sandi: %s", "MS SQL username and/or password not valid: %s" => "Nama pengguna dan/atau sandi MySQL tidak valid: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Web server Anda belum dikonfigurasikan dengan baik untuk mengizinkan sinkronisasi berkas karena tampaknya antarmuka WebDAV rusak.", diff --git a/lib/l10n/it.php b/lib/l10n/it.php index 1db48dbc80..db26ac82ae 100644 --- a/lib/l10n/it.php +++ b/lib/l10n/it.php @@ -24,7 +24,7 @@ "%s set the database host." => "%s imposta l'host del database.", "PostgreSQL username and/or password not valid" => "Nome utente e/o password di PostgreSQL non validi", "You need to enter either an existing account or the administrator." => "È necessario inserire un account esistente o l'amministratore.", -"Oracle username and/or password not valid" => "Nome utente e/o password di Oracle non validi", +"Oracle connection could not be established" => "La connessione a Oracle non può essere stabilita", "MySQL username and/or password not valid" => "Nome utente e/o password di MySQL non validi", "DB Error: \"%s\"" => "Errore DB: \"%s\"", "Offending command was: \"%s\"" => "Il comando non consentito era: \"%s\"", @@ -32,6 +32,7 @@ "Drop this user from MySQL" => "Elimina questo utente da MySQL", "MySQL user '%s'@'%%' already exists" => "L'utente MySQL '%s'@'%%' esiste già", "Drop this user from MySQL." => "Elimina questo utente da MySQL.", +"Oracle username and/or password not valid" => "Nome utente e/o password di Oracle non validi", "Offending command was: \"%s\", name: %s, password: %s" => "Il comando non consentito era: \"%s\", nome: %s, password: %s", "MS SQL username and/or password not valid: %s" => "Nome utente e/o password MS SQL non validi: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata.", diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php index 3b97ffc431..0e856b0497 100644 --- a/lib/l10n/ja_JP.php +++ b/lib/l10n/ja_JP.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s にデータベースホストを設定します。", "PostgreSQL username and/or password not valid" => "PostgreSQLのユーザ名もしくはパスワードは有効ではありません", "You need to enter either an existing account or the administrator." => "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", -"Oracle username and/or password not valid" => "Oracleのユーザ名もしくはパスワードは有効ではありません", "MySQL username and/or password not valid" => "MySQLのユーザ名もしくはパスワードは有効ではありません", "DB Error: \"%s\"" => "DBエラー: \"%s\"", "Offending command was: \"%s\"" => "違反コマンド: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "MySQLからこのユーザを削除", "MySQL user '%s'@'%%' already exists" => "MySQLのユーザ '%s'@'%%' はすでに存在します。", "Drop this user from MySQL." => "MySQLからこのユーザを削除する。", +"Oracle username and/or password not valid" => "Oracleのユーザ名もしくはパスワードは有効ではありません", "Offending command was: \"%s\", name: %s, password: %s" => "違反コマンド: \"%s\"、名前: %s、パスワード: %s", "MS SQL username and/or password not valid: %s" => "MS SQL サーバーのユーザー名/パスワードが正しくありません: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "WebDAVインタフェースが動作していないと考えられるため、あなたのWEBサーバはまだファイルの同期を許可するように適切な設定がされていません。", diff --git a/lib/l10n/ka_GE.php b/lib/l10n/ka_GE.php index a55323832e..93835e4ead 100644 --- a/lib/l10n/ka_GE.php +++ b/lib/l10n/ka_GE.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s მიუთითეთ ბაზის ჰოსტი.", "PostgreSQL username and/or password not valid" => "PostgreSQL იუზერნეიმი და/ან პაროლი არ არის სწორი", "You need to enter either an existing account or the administrator." => "თქვენ უნდა შეიყვანოთ არსებული მომხმარებელის სახელი ან ადმინისტრატორი.", -"Oracle username and/or password not valid" => "Oracle იუზერნეიმი და/ან პაროლი არ არის სწორი", "MySQL username and/or password not valid" => "MySQL იუზერნეიმი და/ან პაროლი არ არის სწორი", "DB Error: \"%s\"" => "DB შეცდომა: \"%s\"", "Offending command was: \"%s\"" => "Offending ბრძანება იყო: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "წაშალე ეს მომხამრებელი MySQL–იდან", "MySQL user '%s'@'%%' already exists" => "MySQL მომხმარებელი '%s'@'%%' უკვე არსებობს", "Drop this user from MySQL." => "წაშალე ეს მომხამრებელი MySQL–იდან", +"Oracle username and/or password not valid" => "Oracle იუზერნეიმი და/ან პაროლი არ არის სწორი", "Offending command was: \"%s\", name: %s, password: %s" => "Offending ბრძანება იყო: \"%s\", სახელი: %s, პაროლი: %s", "MS SQL username and/or password not valid: %s" => "MS SQL მომხმარებელი და/ან პაროლი არ არის მართებული: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "თქვენი web სერვერი არ არის კონფიგურირებული ფაილ სინქრონიზაციისთვის, რადგან WebDAV ინტერფეისი შეიძლება იყოს გატეხილი.", diff --git a/lib/l10n/lv.php b/lib/l10n/lv.php index 28b96c56e1..140c75af3c 100644 --- a/lib/l10n/lv.php +++ b/lib/l10n/lv.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s iestatiet datubāžu serveri.", "PostgreSQL username and/or password not valid" => "Nav derīga PostgreSQL parole un/vai lietotājvārds", "You need to enter either an existing account or the administrator." => "Jums jāievada vai nu esošs vai administratora konts.", -"Oracle username and/or password not valid" => "Nav derīga Oracle parole un/vai lietotājvārds", "MySQL username and/or password not valid" => "Nav derīga MySQL parole un/vai lietotājvārds", "DB Error: \"%s\"" => "DB kļūda — “%s”", "Offending command was: \"%s\"" => "Vainīgā komanda bija “%s”", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Izmest šo lietotāju no MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL lietotājs '%s'@'%%' jau eksistē", "Drop this user from MySQL." => "Izmest šo lietotāju no MySQL.", +"Oracle username and/or password not valid" => "Nav derīga Oracle parole un/vai lietotājvārds", "Offending command was: \"%s\", name: %s, password: %s" => "Vainīgā komanda bija \"%s\", vārds: %s, parole: %s", "MS SQL username and/or password not valid: %s" => "Nav derīga MySQL parole un/vai lietotājvārds — %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Jūsu serveris vēl nav pareizi iestatīts, lai ļautu sinhronizēt datnes, jo izskatās, ka WebDAV saskarne ir salauzta.", diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php index 0c38714261..7340591e9a 100644 --- a/lib/l10n/nl.php +++ b/lib/l10n/nl.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s instellen databaseservernaam.", "PostgreSQL username and/or password not valid" => "PostgreSQL gebruikersnaam en/of wachtwoord ongeldig", "You need to enter either an existing account or the administrator." => "Geef of een bestaand account op of het beheerdersaccount.", -"Oracle username and/or password not valid" => "Oracle gebruikersnaam en/of wachtwoord ongeldig", "MySQL username and/or password not valid" => "MySQL gebruikersnaam en/of wachtwoord ongeldig", "DB Error: \"%s\"" => "DB Fout: \"%s\"", "Offending command was: \"%s\"" => "Onjuiste commande was: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Verwijder deze gebruiker uit MySQL", "MySQL user '%s'@'%%' already exists" => "MySQL gebruiker '%s'@'%%' bestaat al", "Drop this user from MySQL." => "Verwijder deze gebruiker uit MySQL.", +"Oracle username and/or password not valid" => "Oracle gebruikersnaam en/of wachtwoord ongeldig", "Offending command was: \"%s\", name: %s, password: %s" => "Onjuiste commando was: \"%s\", naam: %s, wachtwoord: %s", "MS SQL username and/or password not valid: %s" => "MS SQL gebruikersnaam en/of wachtwoord niet geldig: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Uw webserver is nog niet goed ingesteld voor bestandssynchronisatie omdat de WebDAV interface verbroken lijkt.", diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php index 4ac1c14439..de15964b13 100644 --- a/lib/l10n/pl.php +++ b/lib/l10n/pl.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s ustaw hosta bazy danych.", "PostgreSQL username and/or password not valid" => "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "You need to enter either an existing account or the administrator." => "Należy wprowadzić istniejące konto użytkownika lub administratora.", -"Oracle username and/or password not valid" => "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne", "MySQL username and/or password not valid" => "MySQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "DB Error: \"%s\"" => "Błąd DB: \"%s\"", "Offending command was: \"%s\"" => "Niepoprawna komenda: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Usuń tego użytkownika z MySQL", "MySQL user '%s'@'%%' already exists" => "Użytkownik MySQL '%s'@'%%t' już istnieje", "Drop this user from MySQL." => "Usuń tego użytkownika z MySQL.", +"Oracle username and/or password not valid" => "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne", "Offending command was: \"%s\", name: %s, password: %s" => "Niepoprawne polecania: \"%s\", nazwa: %s, hasło: %s", "MS SQL username and/or password not valid: %s" => "Nazwa i/lub hasło serwera MS SQL jest niepoprawne: %s.", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Serwer internetowy nie jest jeszcze poprawnie skonfigurowany, aby umożliwić synchronizację plików, ponieważ interfejs WebDAV wydaje się być uszkodzony.", diff --git a/lib/l10n/pt_BR.php b/lib/l10n/pt_BR.php index 4c50f8de9e..9606477d94 100644 --- a/lib/l10n/pt_BR.php +++ b/lib/l10n/pt_BR.php @@ -24,7 +24,7 @@ "%s set the database host." => "%s defina o host do banco de dados.", "PostgreSQL username and/or password not valid" => "Nome de usuário e/ou senha PostgreSQL inválido(s)", "You need to enter either an existing account or the administrator." => "Você precisa inserir uma conta existente ou o administrador.", -"Oracle username and/or password not valid" => "Nome de usuário e/ou senha Oracle inválido(s)", +"Oracle connection could not be established" => "Conexão Oracle não pode ser estabelecida", "MySQL username and/or password not valid" => "Nome de usuário e/ou senha MySQL inválido(s)", "DB Error: \"%s\"" => "Erro no BD: \"%s\"", "Offending command was: \"%s\"" => "Comando ofensivo era: \"%s\"", @@ -32,6 +32,7 @@ "Drop this user from MySQL" => "Derrubar este usuário do MySQL", "MySQL user '%s'@'%%' already exists" => "Usuário MySQL '%s'@'%%' já existe", "Drop this user from MySQL." => "Derrube este usuário do MySQL.", +"Oracle username and/or password not valid" => "Nome de usuário e/ou senha Oracle inválido(s)", "Offending command was: \"%s\", name: %s, password: %s" => "Comando ofensivo era: \"%s\", nome: %s, senha: %s", "MS SQL username and/or password not valid: %s" => "Nome de usuário e/ou senha MS SQL inválido(s): %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Seu servidor web não está configurado corretamente para permitir sincronização de arquivos porque a interface WebDAV parece estar quebrada.", diff --git a/lib/l10n/pt_PT.php b/lib/l10n/pt_PT.php index b3befe96e0..176f4286c9 100644 --- a/lib/l10n/pt_PT.php +++ b/lib/l10n/pt_PT.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s defina o servidor da base de dados (geralmente localhost)", "PostgreSQL username and/or password not valid" => "Nome de utilizador/password do PostgreSQL inválido", "You need to enter either an existing account or the administrator." => "Precisa de introduzir uma conta existente ou de administrador", -"Oracle username and/or password not valid" => "Nome de utilizador/password do Oracle inválida", "MySQL username and/or password not valid" => "Nome de utilizador/password do MySQL inválida", "DB Error: \"%s\"" => "Erro na BD: \"%s\"", "Offending command was: \"%s\"" => "O comando gerador de erro foi: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Eliminar este utilizador do MySQL", "MySQL user '%s'@'%%' already exists" => "O utilizador '%s'@'%%' do MySQL já existe", "Drop this user from MySQL." => "Eliminar este utilizador do MySQL", +"Oracle username and/or password not valid" => "Nome de utilizador/password do Oracle inválida", "Offending command was: \"%s\", name: %s, password: %s" => "O comando gerador de erro foi: \"%s\", nome: %s, password: %s", "MS SQL username and/or password not valid: %s" => "Nome de utilizador/password do MySQL é inválido: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas.", diff --git a/lib/l10n/ru.php b/lib/l10n/ru.php index e716f6d1c1..e077b688c0 100644 --- a/lib/l10n/ru.php +++ b/lib/l10n/ru.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s задайте хост базы данных.", "PostgreSQL username and/or password not valid" => "Неверное имя пользователя и/или пароль PostgreSQL", "You need to enter either an existing account or the administrator." => "Вы должны войти или в существующий аккаунт или под администратором.", -"Oracle username and/or password not valid" => "Неверное имя пользователя и/или пароль Oracle", "MySQL username and/or password not valid" => "Неверное имя пользователя и/или пароль MySQL", "DB Error: \"%s\"" => "Ошибка БД: \"%s\"", "Offending command was: \"%s\"" => "Вызываемая команда была: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Удалить этого пользователя из MySQL", "MySQL user '%s'@'%%' already exists" => "Пользователь MySQL '%s'@'%%' уже существует", "Drop this user from MySQL." => "Удалить этого пользователя из MySQL.", +"Oracle username and/or password not valid" => "Неверное имя пользователя и/или пароль Oracle", "Offending command was: \"%s\", name: %s, password: %s" => "Вызываемая команда была: \"%s\", имя: %s, пароль: %s", "MS SQL username and/or password not valid: %s" => "Имя пользователя и/или пароль MS SQL не подходит: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ваш веб сервер до сих пор не настроен правильно для возможности синхронизации файлов, похоже что проблема в неисправности интерфейса WebDAV.", diff --git a/lib/l10n/ru_RU.php b/lib/l10n/ru_RU.php index 8fb568aee7..7639a3cc97 100644 --- a/lib/l10n/ru_RU.php +++ b/lib/l10n/ru_RU.php @@ -1,3 +1,4 @@ "Настройки" +"Settings" => "Настройки", +"Text" => "Текст" ); diff --git a/lib/l10n/sk_SK.php b/lib/l10n/sk_SK.php index e074ed78c3..121b2405dc 100644 --- a/lib/l10n/sk_SK.php +++ b/lib/l10n/sk_SK.php @@ -24,7 +24,6 @@ "%s set the database host." => "Zadajte názov počítača s databázou %s.", "PostgreSQL username and/or password not valid" => "Používateľské meno a/alebo heslo pre PostgreSQL databázu je neplatné", "You need to enter either an existing account or the administrator." => "Musíte zadať jestvujúci účet alebo administrátora.", -"Oracle username and/or password not valid" => "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné", "MySQL username and/or password not valid" => "Používateľské meno a/alebo heslo pre MySQL databázu je neplatné", "DB Error: \"%s\"" => "Chyba DB: \"%s\"", "Offending command was: \"%s\"" => "Podozrivý príkaz bol: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Zahodiť používateľa z MySQL.", "MySQL user '%s'@'%%' already exists" => "Používateľ '%s'@'%%' už v MySQL existuje", "Drop this user from MySQL." => "Zahodiť používateľa z MySQL.", +"Oracle username and/or password not valid" => "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné", "Offending command was: \"%s\", name: %s, password: %s" => "Podozrivý príkaz bol: \"%s\", meno: %s, heslo: %s", "MS SQL username and/or password not valid: %s" => "Používateľské meno, alebo heslo MS SQL nie je platné: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Váš webový server nie je správne nastavený na synchronizáciu, pretože rozhranie WebDAV je poškodené.", diff --git a/lib/l10n/sl.php b/lib/l10n/sl.php index 0c42f44d2a..7f8827d17f 100644 --- a/lib/l10n/sl.php +++ b/lib/l10n/sl.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s - vnos gostitelja podatkovne zbirke.", "PostgreSQL username and/or password not valid" => "Uporabniško ime ali geslo PostgreSQL ni veljavno", "You need to enter either an existing account or the administrator." => "Prijaviti se je treba v obstoječi ali pa skrbniški račun.", -"Oracle username and/or password not valid" => "Uporabniško ime ali geslo Oracle ni veljavno", "MySQL username and/or password not valid" => "Uporabniško ime ali geslo MySQL ni veljavno", "DB Error: \"%s\"" => "Napaka podatkovne zbirke: \"%s\"", "Offending command was: \"%s\"" => "Napačni ukaz je: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Odstrani uporabnika s podatkovne zbirke MySQL", "MySQL user '%s'@'%%' already exists" => "Uporabnik MySQL '%s'@'%%' že obstaja.", "Drop this user from MySQL." => "Odstrani uporabnika s podatkovne zbirke MySQL", +"Oracle username and/or password not valid" => "Uporabniško ime ali geslo Oracle ni veljavno", "Offending command was: \"%s\", name: %s, password: %s" => "Napačni ukaz je: \"%s\", ime: %s, geslo: %s", "MS SQL username and/or password not valid: %s" => "Uporabniško ime ali geslo MS SQL ni veljavno: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je nastavitev WebDAV okvarjena.", diff --git a/lib/l10n/sq.php b/lib/l10n/sq.php index 60d83ca48c..04186f6210 100644 --- a/lib/l10n/sq.php +++ b/lib/l10n/sq.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s caktoni pozicionin (host) e database-it.", "PostgreSQL username and/or password not valid" => "Përdoruesi dhe/apo kodi i PostgreSQL i pavlefshëm", "You need to enter either an existing account or the administrator." => "Duhet të përdorni një llogari ekzistuese ose llogarinë e administratorit.", -"Oracle username and/or password not valid" => "Përdoruesi dhe/apo kodi i Oracle-it i pavlefshëm", "MySQL username and/or password not valid" => "Përdoruesi dhe/apo kodi i MySQL-it i pavlefshëm.", "DB Error: \"%s\"" => "Veprim i gabuar i DB-it: \"%s\"", "Offending command was: \"%s\"" => "Komanda e gabuar ishte: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Eliminoni këtë përdorues nga MySQL", "MySQL user '%s'@'%%' already exists" => "Përdoruesi MySQL '%s'@'%%' ekziston", "Drop this user from MySQL." => "Eliminoni këtë përdorues nga MySQL.", +"Oracle username and/or password not valid" => "Përdoruesi dhe/apo kodi i Oracle-it i pavlefshëm", "Offending command was: \"%s\", name: %s, password: %s" => "Komanda e gabuar ishte: \"%s\", përdoruesi: %s, kodi: %s", "MS SQL username and/or password not valid: %s" => "Përdoruesi dhe/apo kodi i MS SQL i pavlefshëm: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Serveri web i juaji nuk është konfiguruar akoma për të lejuar sinkronizimin e skedarëve sepse ndërfaqja WebDAV mund të jetë e dëmtuar.", diff --git a/lib/l10n/tr.php b/lib/l10n/tr.php index 641da2447e..7996447b95 100644 --- a/lib/l10n/tr.php +++ b/lib/l10n/tr.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s veritabanı sunucu adını tanımla", "PostgreSQL username and/or password not valid" => "PostgreSQL adi kullanici ve/veya parola yasal degildir. ", "You need to enter either an existing account or the administrator." => "Bir konto veya kullanici birlemek ihtiyacin. ", -"Oracle username and/or password not valid" => "Adi klullanici ve/veya parola Oracle mantikli değildir. ", "MySQL username and/or password not valid" => "MySQL kullanıcı adı ve/veya parolası geçerli değil", "DB Error: \"%s\"" => "DB Hata: ''%s''", "Offending command was: \"%s\"" => "Komut rahasiz ''%s''. ", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Bu kullanici MySQLden list disari koymak. ", "MySQL user '%s'@'%%' already exists" => "MySQL kullanici '%s @ % % zaten var (zaten yazili)", "Drop this user from MySQL." => "Bu kulanıcıyı MySQL veritabanından kaldır", +"Oracle username and/or password not valid" => "Adi klullanici ve/veya parola Oracle mantikli değildir. ", "Offending command was: \"%s\", name: %s, password: %s" => "Hatalı komut: \"%s\", ad: %s, parola: %s", "MS SQL username and/or password not valid: %s" => "MS SQL kullanıcı adı ve/veya parolası geçersiz: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", diff --git a/lib/l10n/uk.php b/lib/l10n/uk.php index a544890124..676879629e 100644 --- a/lib/l10n/uk.php +++ b/lib/l10n/uk.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s встановити хост бази даних.", "PostgreSQL username and/or password not valid" => "PostgreSQL ім'я користувача та/або пароль не дійсні", "You need to enter either an existing account or the administrator." => "Вам потрібно ввести або існуючий обліковий запис або administrator.", -"Oracle username and/or password not valid" => "Oracle ім'я користувача та/або пароль не дійсні", "MySQL username and/or password not valid" => "MySQL ім'я користувача та/або пароль не дійсні", "DB Error: \"%s\"" => "Помилка БД: \"%s\"", "Offending command was: \"%s\"" => "Команда, що викликала проблему: \"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "Видалити цього користувача з MySQL", "MySQL user '%s'@'%%' already exists" => "Користувач MySQL '%s'@'%%' вже існує", "Drop this user from MySQL." => "Видалити цього користувача з MySQL.", +"Oracle username and/or password not valid" => "Oracle ім'я користувача та/або пароль не дійсні", "Offending command was: \"%s\", name: %s, password: %s" => "Команда, що викликала проблему: \"%s\", ім'я: %s, пароль: %s", "MS SQL username and/or password not valid: %s" => "MS SQL ім'я користувача та/або пароль не дійсні: %s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ваш Web-сервер ще не налаштований належним чином для того, щоб дозволити синхронізацію файлів, через те що інтерфейс WebDAV, здається, зламаний.", diff --git a/lib/l10n/zh_CN.php b/lib/l10n/zh_CN.php index cab5142e5d..61e405d805 100644 --- a/lib/l10n/zh_CN.php +++ b/lib/l10n/zh_CN.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s 设置数据库所在主机。", "PostgreSQL username and/or password not valid" => "PostgreSQL 数据库用户名和/或密码无效", "You need to enter either an existing account or the administrator." => "你需要输入一个数据库中已有的账户或管理员账户。", -"Oracle username and/or password not valid" => "Oracle 数据库用户名和/或密码无效", "MySQL username and/or password not valid" => "MySQL 数据库用户名和/或密码无效", "DB Error: \"%s\"" => "数据库错误:\"%s\"", "Offending command was: \"%s\"" => "冲突命令为:\"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "建议从 MySQL 数据库中丢弃 Drop 此用户", "MySQL user '%s'@'%%' already exists" => "MySQL 用户 '%s'@'%%' 已存在", "Drop this user from MySQL." => "建议从 MySQL 数据库中丢弃 Drop 此用户。", +"Oracle username and/or password not valid" => "Oracle 数据库用户名和/或密码无效", "Offending command was: \"%s\", name: %s, password: %s" => "冲突命令为:\"%s\",名称:%s,密码:%s", "MS SQL username and/or password not valid: %s" => "MS SQL 用户名和/或密码无效:%s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "您的Web服务器尚未正确设置以允许文件同步, 因为WebDAV的接口似乎已损坏.", diff --git a/lib/l10n/zh_TW.php b/lib/l10n/zh_TW.php index 5affb1ccf3..ec7310d4e4 100644 --- a/lib/l10n/zh_TW.php +++ b/lib/l10n/zh_TW.php @@ -24,7 +24,6 @@ "%s set the database host." => "%s 設定資料庫主機。", "PostgreSQL username and/or password not valid" => "PostgreSQL 用戶名和/或密碼無效", "You need to enter either an existing account or the administrator." => "您必須輸入一個現有的帳號或管理員帳號。", -"Oracle username and/or password not valid" => "Oracle 用戶名和/或密碼無效", "MySQL username and/or password not valid" => "MySQL 用戶名和/或密碼無效", "DB Error: \"%s\"" => "資料庫錯誤:\"%s\"", "Offending command was: \"%s\"" => "有問題的指令是:\"%s\"", @@ -32,6 +31,7 @@ "Drop this user from MySQL" => "在 MySQL 移除這個使用者", "MySQL user '%s'@'%%' already exists" => "MySQL 使用者 '%s'@'%%' 已經存在", "Drop this user from MySQL." => "在 MySQL 移除這個使用者。", +"Oracle username and/or password not valid" => "Oracle 用戶名和/或密碼無效", "Offending command was: \"%s\", name: %s, password: %s" => "有問題的指令是:\"%s\" ,使用者:\"%s\",密碼:\"%s\"", "MS SQL username and/or password not valid: %s" => "MS SQL 使用者和/或密碼無效:%s", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "您的網頁伺服器尚未被正確設定來進行檔案同步,因為您的 WebDAV 界面似乎無法使用。", diff --git a/settings/l10n/ru_RU.php b/settings/l10n/ru_RU.php index 6f7db02781..d816f9fe85 100644 --- a/settings/l10n/ru_RU.php +++ b/settings/l10n/ru_RU.php @@ -1,4 +1,8 @@ "Ошибка", -"deleted" => "удалено" +"deleted" => "удалено", +"Groups" => "Группы", +"Delete" => "Удалить", +"Email" => "Email", +"Other" => "Другое" ); From 3fbfe3c06a46f442c588daf037c997da658d3526 Mon Sep 17 00:00:00 2001 From: Alessandro Cosentino Date: Thu, 23 May 2013 20:59:02 -0400 Subject: [PATCH 315/575] small typo in the comments --- lib/connector/sabre/node.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php index 360c3066d0..1ffa048d6b 100644 --- a/lib/connector/sabre/node.php +++ b/lib/connector/sabre/node.php @@ -101,7 +101,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr /** * @brief Ensure that the fileinfo cache is filled - & @note Uses OC_FileCache or a direct stat + * @note Uses OC_FileCache or a direct stat */ protected function getFileinfoCache() { if (!isset($this->fileinfo_cache)) { From 56006ea8524feb44593df26e26a8c72ecb75fadc Mon Sep 17 00:00:00 2001 From: davidak Date: Fri, 24 May 2013 14:31:06 +0200 Subject: [PATCH 316/575] small typo fix: added 2 whitespaces --- apps/files/js/files.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files/js/files.js b/apps/files/js/files.js index a15f0588f9..a79d34c9b2 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -708,14 +708,14 @@ function scanFiles(force, dir){ 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') + console.log(count + ' files scanned') }); scannerEventSource.listen('folder',function(path){ console.log('now scanning ' + path) }); scannerEventSource.listen('done',function(count){ scanFiles.scanning=false; - console.log('done after ' + count + 'files'); + console.log('done after ' + count + ' files'); }); } scanFiles.scanning=false; From a753d14de91f02a418b6658fc72104b21b60b92b Mon Sep 17 00:00:00 2001 From: Thomas Mueller Date: Fri, 24 May 2013 15:19:13 +0200 Subject: [PATCH 317/575] adding Oracle support to autotest.sh --- autotest.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/autotest.sh b/autotest.sh index 267815e96d..0c59ee51a0 100755 --- a/autotest.sh +++ b/autotest.sh @@ -54,6 +54,22 @@ cat > ./tests/autoconfig-pgsql.php < ./tests/autoconfig-oci.php < false, + 'dbtype' => 'oci', + 'dbtableprefix' => 'oc_', + 'adminlogin' => 'admin', + 'adminpass' => 'admin', + 'directory' => '$BASEDIR/$DATADIR', + 'dbuser' => 'oc_autotest', + 'dbname' => 'XE', + 'dbhost' => 'localhost', + 'dbpass' => 'owncloud', +); +DELIM + function execute_tests { echo "Setup environment for $1 testing ..." # back to root folder @@ -77,6 +93,30 @@ function execute_tests { if [ "$1" == "pgsql" ] ; then dropdb -U oc_autotest oc_autotest fi + if [ "$1" == "oci" ] ; then + echo "drop the database" + sqlplus -s -l / as sysdba < Date: Fri, 24 May 2013 17:35:00 +0200 Subject: [PATCH 318/575] fix first time encryption after app was enabled --- apps/files_encryption/lib/util.php | 39 +++++++++++------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2980aa94e0..cac67d496e 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -421,7 +421,7 @@ class Util // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { + } elseif ( Crypt::isLegacyEncryptedContent( $data, $relPath ) ) { $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); @@ -672,39 +672,28 @@ class Util $relPath = $plainFile['path']; //relative to /data - $rawPath = $this->userId . '/files/' . $plainFile['path']; + $rawPath = '/'.$this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); - - // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); - - // Move plain file to a temporary location - stream_copy_to_stream( $plainHandle1, $plainHandle2 ); - - // Close access to original file - // $this->view->fclose( $plainHandle1 ); // not implemented in view{} - // Delete original plain file so we can rename enc file later - $this->view->unlink( $rawPath ); + $plainHandle = $this->view->fopen( $rawPath, 'rb' ); // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); + $encHandle = fopen( 'crypt://' . $relPath.'.tmp', 'wb' ); - // Save data from plain stream to new encrypted file via enc stream - // NOTE: Stream{} will be invoked for handling - // the encryption, and should handle all keys - // and their generation etc. automatically - stream_copy_to_stream( $plainHandle2, $encHandle ); + // Move plain file to a temporary location + $size = stream_copy_to_stream( $plainHandle, $encHandle ); - // get file size - $size = $this->view->filesize( $rawPath . '.plaintmp' ); + fclose($encHandle); - // Delete temporary plain copy of file - $this->view->unlink( $rawPath . '.plaintmp' ); + $fakeRoot = $this->view->getRoot(); + $this->view->chroot('/'.$this->userId.'/files'); + + $this->view->rename($relPath . '.tmp', $relPath); + + $this->view->chroot($fakeRoot); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); + \OC\Files\Filesystem::putFileInfo( $relPath, array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); } // Encrypt legacy encrypted files From f56802a437e47deae84cbd5a337620d79dbae34e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 24 May 2013 18:37:58 +0200 Subject: [PATCH 319/575] no use the recoveryPassword var instead of accessing the POST array --- apps/files_encryption/lib/helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 43f573c16b..7a2d19eed5 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -146,7 +146,7 @@ class Helper } else { // get recovery key and check the password $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); - $return = $util->checkRecoveryPassword( $_POST['recoveryPassword'] ); + $return = $util->checkRecoveryPassword( $recoveryPassword ); if ( $return ) { \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); } From 661b5501b0e3f456d3a56d72e342074062ded0e8 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 24 May 2013 20:35:01 +0200 Subject: [PATCH 320/575] added normalizeUnicode() method to OC_Util --- lib/util.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/util.php b/lib/util.php index 01e2df7bfc..224ed32061 100755 --- a/lib/util.php +++ b/lib/util.php @@ -1,4 +1,7 @@ Date: Fri, 24 May 2013 20:36:20 +0200 Subject: [PATCH 321/575] changed builtin normalizer to \OC_Util::normalizeUnicode --- lib/files/cache/cache.php | 7 +------ lib/files/filesystem.php | 5 ++--- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index a7e634c8e4..865abd5286 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -566,11 +566,6 @@ class Cache { */ public function normalize($path) { - //normalize unicode if possible - if (class_exists('Normalizer')) { - $path = \Normalizer::normalize($path); - } - - return $path; + return \OC_Util::normalizeUnicode($path); } } diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d60d430d77..5d7565f0d8 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -616,9 +616,8 @@ class Filesystem { $path = substr($path, 0, -1); } //normalize unicode if possible - if (class_exists('Normalizer')) { - $path = \Normalizer::normalize($path); - } + $path = \OC_Util::normalizeUnicode($path); + return $path; } From 5076c0d392f6eb17e368a9382cf5b0abe7408889 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 24 May 2013 20:37:11 +0200 Subject: [PATCH 322/575] changed tests for using new normalizer --- tests/lib/files/cache/cache.php | 4 ++-- tests/lib/files/filesystem.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 2b1e5a5621..e693fb892c 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -278,8 +278,8 @@ class Cache extends \PHPUnit_Framework_TestCase { */ public function testWithNormalizer() { - if(!class_exists('Normalizer')) { - $this->markTestSkipped('The Normalizer extension is not available.'); + if(!class_exists('Patchwork\PHP\Shim\Normalizer')) { + $this->markTestSkipped('The 3rdparty Normalizer extension is not available.'); return; } diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index 6ce45e6178..bef70cc725 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -72,7 +72,7 @@ class Filesystem extends \PHPUnit_Framework_TestCase { $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')) { + if (class_exists('Patchwork\PHP\Shim\Normalizer')) { $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); } } From 1f9ac7850d7cc992b712fa99fd3d4f92a219f9d8 Mon Sep 17 00:00:00 2001 From: Thomas Mueller Date: Fri, 24 May 2013 21:50:34 +0200 Subject: [PATCH 323/575] meanwhile phpunit is seq faulting with mysql as well --- autotest.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autotest.sh b/autotest.sh index 0c59ee51a0..4562b3ed08 100755 --- a/autotest.sh +++ b/autotest.sh @@ -130,11 +130,11 @@ EOF rm -rf coverage-html-$1 mkdir coverage-html-$1 php -f enable_all.php - if [ "$1" == "pgsql" ] ; then - # no coverage with pg - causes segfault on ci.tmit.eu - reason unknown - phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml - else + if [ "$1" == "sqlite" ] ; then + # coverage only with sqlite - causes segfault on ci.tmit.eu - reason unknown phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 + else + phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml fi } From d1939a1c38390265eaf7b17db05b649af331a673 Mon Sep 17 00:00:00 2001 From: Thomas Mueller Date: Fri, 24 May 2013 21:54:47 +0200 Subject: [PATCH 324/575] submodule 3rdparty updated --- 3rdparty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty b/3rdparty index a13af72fbe..e312294ef6 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit a13af72fbe8983686fc47489a750e60319f68ac2 +Subproject commit e312294ef62873df2b8c02e774f9dfe1b7fbc38d From b32823a96e16c3d30beb9db87a3bbad9615ef80d Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 24 May 2013 21:35:18 +0200 Subject: [PATCH 325/575] improved trashbin test --- apps/files_encryption/tests/trashbin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index b62041a6d3..c317c024ea 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -235,7 +235,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $trashFileSuffix = null; // find created file with timestamp foreach($trashFiles as $file) { - if(strncmp($file['path'], $filename, strlen($filename))) { + if(strncmp($file['name'], $filename, strlen($filename)) == 0) { $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; } From fba7200b05c54a20f009b501744dd1074afceec5 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Fri, 24 May 2013 22:01:27 +0200 Subject: [PATCH 326/575] improved trashbin test again --- apps/files_encryption/tests/trashbin.php | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index c317c024ea..cc8709b6f2 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -238,6 +238,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase if(strncmp($file['name'], $filename, strlen($filename)) == 0) { $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; + break; } } From 6a6c18dfab494324d5fa7c2ea7a299830dd79612 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sat, 25 May 2013 02:11:52 +0200 Subject: [PATCH 327/575] [tx-robot] updated from transifex --- apps/files/l10n/ca.php | 2 +- apps/files_encryption/l10n/ar.php | 6 +- apps/files_encryption/l10n/bg_BG.php | 3 +- apps/files_encryption/l10n/bn_BD.php | 3 +- apps/files_encryption/l10n/ca.php | 6 +- apps/files_encryption/l10n/cs_CZ.php | 6 +- apps/files_encryption/l10n/cy_GB.php | 6 +- apps/files_encryption/l10n/da.php | 6 +- apps/files_encryption/l10n/de.php | 6 +- apps/files_encryption/l10n/de_DE.php | 6 +- apps/files_encryption/l10n/el.php | 6 +- apps/files_encryption/l10n/eo.php | 3 +- apps/files_encryption/l10n/es.php | 6 +- apps/files_encryption/l10n/es_AR.php | 6 +- apps/files_encryption/l10n/et_EE.php | 6 +- apps/files_encryption/l10n/eu.php | 6 +- apps/files_encryption/l10n/fa.php | 6 +- apps/files_encryption/l10n/fi_FI.php | 6 +- apps/files_encryption/l10n/fr.php | 6 +- apps/files_encryption/l10n/gl.php | 6 +- apps/files_encryption/l10n/he.php | 3 +- apps/files_encryption/l10n/hu_HU.php | 6 +- apps/files_encryption/l10n/id.php | 6 +- apps/files_encryption/l10n/is.php | 3 +- apps/files_encryption/l10n/it.php | 6 +- apps/files_encryption/l10n/ja_JP.php | 6 +- apps/files_encryption/l10n/ka_GE.php | 6 +- apps/files_encryption/l10n/ko.php | 3 +- apps/files_encryption/l10n/ku_IQ.php | 3 +- apps/files_encryption/l10n/lt_LT.php | 3 +- apps/files_encryption/l10n/lv.php | 6 +- apps/files_encryption/l10n/mk.php | 3 +- apps/files_encryption/l10n/nb_NO.php | 6 +- apps/files_encryption/l10n/nl.php | 6 +- apps/files_encryption/l10n/pl.php | 6 +- apps/files_encryption/l10n/pt_BR.php | 6 +- apps/files_encryption/l10n/pt_PT.php | 6 +- apps/files_encryption/l10n/ro.php | 3 +- apps/files_encryption/l10n/ru.php | 6 +- apps/files_encryption/l10n/si_LK.php | 3 +- apps/files_encryption/l10n/sk_SK.php | 6 +- apps/files_encryption/l10n/sl.php | 6 +- apps/files_encryption/l10n/sr.php | 3 +- apps/files_encryption/l10n/sv.php | 6 +- apps/files_encryption/l10n/ta_LK.php | 3 +- apps/files_encryption/l10n/th_TH.php | 3 +- apps/files_encryption/l10n/tr.php | 6 +- apps/files_encryption/l10n/ug.php | 6 +- apps/files_encryption/l10n/uk.php | 6 +- apps/files_encryption/l10n/vi.php | 6 +- apps/files_encryption/l10n/zh_CN.GB2312.php | 3 +- apps/files_encryption/l10n/zh_CN.php | 6 +- apps/files_encryption/l10n/zh_HK.php | 5 +- apps/files_encryption/l10n/zh_TW.php | 6 +- apps/files_trashbin/l10n/bg_BG.php | 3 +- apps/files_trashbin/l10n/id.php | 8 +- apps/files_trashbin/l10n/pl.php | 4 +- apps/files_trashbin/l10n/pt_PT.php | 2 +- apps/files_trashbin/l10n/ro.php | 1 + apps/files_trashbin/l10n/sk_SK.php | 2 +- apps/user_ldap/l10n/es.php | 38 +- apps/user_ldap/l10n/pl.php | 7 + core/l10n/ca.php | 1 + core/l10n/es.php | 1 + core/l10n/et_EE.php | 1 + core/l10n/gl.php | 1 + core/l10n/ja_JP.php | 1 + core/l10n/pl.php | 1 + core/l10n/pt_BR.php | 1 + l10n/af_ZA/core.po | 4 +- l10n/af_ZA/files.po | 4 +- l10n/af_ZA/files_encryption.po | 75 +++- l10n/af_ZA/files_external.po | 4 +- l10n/af_ZA/files_sharing.po | 4 +- l10n/af_ZA/files_trashbin.po | 4 +- l10n/af_ZA/files_versions.po | 4 +- l10n/af_ZA/lib.po | 4 +- l10n/af_ZA/settings.po | 52 +-- l10n/af_ZA/user_ldap.po | 4 +- l10n/af_ZA/user_webdavauth.po | 4 +- l10n/ar/core.po | 4 +- l10n/ar/files.po | 4 +- l10n/ar/files_encryption.po | 83 +++- l10n/ar/files_external.po | 4 +- l10n/ar/files_sharing.po | 4 +- l10n/ar/files_trashbin.po | 4 +- l10n/ar/files_versions.po | 4 +- l10n/ar/lib.po | 4 +- l10n/ar/settings.po | 42 +- l10n/ar/user_ldap.po | 4 +- l10n/ar/user_webdavauth.po | 10 +- l10n/be/core.po | 30 +- l10n/be/files.po | 4 +- l10n/be/files_encryption.po | 75 +++- l10n/be/files_external.po | 4 +- l10n/be/files_sharing.po | 4 +- l10n/be/files_trashbin.po | 4 +- l10n/be/files_versions.po | 4 +- l10n/be/lib.po | 68 +-- l10n/be/settings.po | 64 +-- l10n/be/user_ldap.po | 4 +- l10n/be/user_webdavauth.po | 4 +- l10n/bg_BG/core.po | 4 +- l10n/bg_BG/files.po | 4 +- l10n/bg_BG/files_encryption.po | 77 +++- l10n/bg_BG/files_external.po | 4 +- l10n/bg_BG/files_sharing.po | 4 +- l10n/bg_BG/files_trashbin.po | 4 +- l10n/bg_BG/files_versions.po | 4 +- l10n/bg_BG/lib.po | 4 +- l10n/bg_BG/settings.po | 42 +- l10n/bg_BG/user_ldap.po | 4 +- l10n/bg_BG/user_webdavauth.po | 4 +- l10n/bn_BD/core.po | 4 +- l10n/bn_BD/files.po | 4 +- l10n/bn_BD/files_encryption.po | 77 +++- l10n/bn_BD/files_external.po | 4 +- l10n/bn_BD/files_sharing.po | 4 +- l10n/bn_BD/files_trashbin.po | 4 +- l10n/bn_BD/files_versions.po | 4 +- l10n/bn_BD/lib.po | 4 +- l10n/bn_BD/settings.po | 42 +- l10n/bn_BD/user_ldap.po | 4 +- l10n/bn_BD/user_webdavauth.po | 6 +- l10n/ca/core.po | 7 +- l10n/ca/files.po | 6 +- l10n/ca/files_encryption.po | 85 +++- l10n/ca/files_external.po | 4 +- l10n/ca/files_sharing.po | 4 +- l10n/ca/files_trashbin.po | 4 +- l10n/ca/files_versions.po | 4 +- l10n/ca/lib.po | 4 +- l10n/ca/settings.po | 44 +- l10n/ca/user_ldap.po | 4 +- l10n/ca/user_webdavauth.po | 6 +- l10n/cs_CZ/core.po | 4 +- l10n/cs_CZ/files.po | 4 +- l10n/cs_CZ/files_encryption.po | 83 +++- l10n/cs_CZ/files_external.po | 4 +- l10n/cs_CZ/files_sharing.po | 4 +- l10n/cs_CZ/files_trashbin.po | 4 +- l10n/cs_CZ/files_versions.po | 4 +- l10n/cs_CZ/lib.po | 4 +- l10n/cs_CZ/settings.po | 42 +- l10n/cs_CZ/user_ldap.po | 4 +- l10n/cs_CZ/user_webdavauth.po | 6 +- l10n/cy_GB/core.po | 4 +- l10n/cy_GB/files.po | 4 +- l10n/cy_GB/files_encryption.po | 85 +++- l10n/cy_GB/files_external.po | 4 +- l10n/cy_GB/files_sharing.po | 4 +- l10n/cy_GB/files_trashbin.po | 4 +- l10n/cy_GB/files_versions.po | 4 +- l10n/cy_GB/lib.po | 4 +- l10n/cy_GB/settings.po | 42 +- l10n/cy_GB/user_ldap.po | 4 +- l10n/cy_GB/user_webdavauth.po | 4 +- l10n/da/core.po | 4 +- l10n/da/files.po | 4 +- l10n/da/files_encryption.po | 83 +++- l10n/da/files_external.po | 4 +- l10n/da/files_sharing.po | 4 +- l10n/da/files_trashbin.po | 4 +- l10n/da/files_versions.po | 4 +- l10n/da/lib.po | 4 +- l10n/da/settings.po | 44 +- l10n/da/user_ldap.po | 4 +- l10n/da/user_webdavauth.po | 8 +- l10n/de/core.po | 4 +- l10n/de/files.po | 4 +- l10n/de/files_encryption.po | 85 +++- l10n/de/files_external.po | 4 +- l10n/de/files_sharing.po | 4 +- l10n/de/files_trashbin.po | 4 +- l10n/de/files_versions.po | 4 +- l10n/de/lib.po | 4 +- l10n/de/settings.po | 44 +- l10n/de/user_ldap.po | 4 +- l10n/de/user_webdavauth.po | 12 +- l10n/de_DE/core.po | 4 +- l10n/de_DE/files.po | 4 +- l10n/de_DE/files_encryption.po | 85 +++- l10n/de_DE/files_external.po | 4 +- l10n/de_DE/files_sharing.po | 4 +- l10n/de_DE/files_trashbin.po | 4 +- l10n/de_DE/files_versions.po | 4 +- l10n/de_DE/lib.po | 4 +- l10n/de_DE/settings.po | 44 +- l10n/de_DE/user_ldap.po | 4 +- l10n/de_DE/user_webdavauth.po | 14 +- l10n/el/core.po | 4 +- l10n/el/files.po | 4 +- l10n/el/files_encryption.po | 83 +++- l10n/el/files_external.po | 4 +- l10n/el/files_sharing.po | 4 +- l10n/el/files_trashbin.po | 4 +- l10n/el/files_versions.po | 4 +- l10n/el/lib.po | 4 +- l10n/el/settings.po | 44 +- l10n/el/user_ldap.po | 4 +- l10n/el/user_webdavauth.po | 12 +- l10n/en@pirate/core.po | 30 +- l10n/en@pirate/files.po | 4 +- l10n/en@pirate/files_encryption.po | 77 +++- l10n/en@pirate/files_external.po | 2 +- l10n/en@pirate/files_sharing.po | 4 +- l10n/en@pirate/files_trashbin.po | 2 +- l10n/en@pirate/files_versions.po | 2 +- l10n/en@pirate/lib.po | 66 +-- l10n/en@pirate/settings.po | 52 +-- l10n/en@pirate/user_ldap.po | 4 +- l10n/en@pirate/user_webdavauth.po | 2 +- l10n/eo/core.po | 4 +- l10n/eo/files.po | 4 +- l10n/eo/files_encryption.po | 77 +++- l10n/eo/files_external.po | 4 +- l10n/eo/files_sharing.po | 4 +- l10n/eo/files_trashbin.po | 4 +- l10n/eo/files_versions.po | 4 +- l10n/eo/lib.po | 4 +- l10n/eo/settings.po | 42 +- l10n/eo/user_ldap.po | 4 +- l10n/eo/user_webdavauth.po | 8 +- l10n/es/core.po | 9 +- l10n/es/files.po | 4 +- l10n/es/files_encryption.po | 83 +++- l10n/es/files_external.po | 4 +- l10n/es/files_sharing.po | 4 +- l10n/es/files_trashbin.po | 4 +- l10n/es/files_versions.po | 4 +- l10n/es/lib.po | 9 +- l10n/es/settings.po | 44 +- l10n/es/user_ldap.po | 55 +-- l10n/es/user_webdavauth.po | 10 +- l10n/es_AR/core.po | 4 +- l10n/es_AR/files.po | 4 +- l10n/es_AR/files_encryption.po | 83 +++- l10n/es_AR/files_external.po | 4 +- l10n/es_AR/files_sharing.po | 4 +- l10n/es_AR/files_trashbin.po | 4 +- l10n/es_AR/files_versions.po | 4 +- l10n/es_AR/lib.po | 4 +- l10n/es_AR/settings.po | 44 +- l10n/es_AR/user_ldap.po | 4 +- l10n/es_AR/user_webdavauth.po | 10 +- l10n/et_EE/core.po | 8 +- l10n/et_EE/files.po | 4 +- l10n/et_EE/files_encryption.po | 85 +++- l10n/et_EE/files_external.po | 4 +- l10n/et_EE/files_sharing.po | 4 +- l10n/et_EE/files_trashbin.po | 4 +- l10n/et_EE/files_versions.po | 4 +- l10n/et_EE/lib.po | 9 +- l10n/et_EE/settings.po | 44 +- l10n/et_EE/user_ldap.po | 4 +- l10n/et_EE/user_webdavauth.po | 4 +- l10n/eu/core.po | 4 +- l10n/eu/files.po | 4 +- l10n/eu/files_encryption.po | 83 +++- l10n/eu/files_external.po | 4 +- l10n/eu/files_sharing.po | 4 +- l10n/eu/files_trashbin.po | 4 +- l10n/eu/files_versions.po | 4 +- l10n/eu/lib.po | 4 +- l10n/eu/settings.po | 42 +- l10n/eu/user_ldap.po | 4 +- l10n/eu/user_webdavauth.po | 8 +- l10n/fa/core.po | 4 +- l10n/fa/files.po | 4 +- l10n/fa/files_encryption.po | 83 +++- l10n/fa/files_external.po | 4 +- l10n/fa/files_sharing.po | 4 +- l10n/fa/files_trashbin.po | 4 +- l10n/fa/files_versions.po | 4 +- l10n/fa/lib.po | 4 +- l10n/fa/settings.po | 42 +- l10n/fa/user_ldap.po | 4 +- l10n/fa/user_webdavauth.po | 4 +- l10n/fi/core.po | 4 +- l10n/fi/files.po | 4 +- l10n/fi/files_encryption.po | 81 +++- l10n/fi/files_external.po | 85 ++-- l10n/fi/files_sharing.po | 16 +- l10n/fi/files_trashbin.po | 84 ++++ l10n/fi/files_versions.po | 51 ++- l10n/fi/lib.po | 4 +- l10n/fi/settings.po | 443 ++++++++++++++------ l10n/fi/user_ldap.po | 361 +++++++++++++--- l10n/fi/user_webdavauth.po | 33 ++ l10n/fi_FI/core.po | 4 +- l10n/fi_FI/files.po | 4 +- l10n/fi_FI/files_encryption.po | 83 +++- l10n/fi_FI/files_external.po | 4 +- l10n/fi_FI/files_sharing.po | 4 +- l10n/fi_FI/files_trashbin.po | 4 +- l10n/fi_FI/files_versions.po | 4 +- l10n/fi_FI/lib.po | 4 +- l10n/fi_FI/settings.po | 44 +- l10n/fi_FI/user_ldap.po | 4 +- l10n/fi_FI/user_webdavauth.po | 6 +- l10n/fr/core.po | 4 +- l10n/fr/files.po | 4 +- l10n/fr/files_encryption.po | 83 +++- l10n/fr/files_external.po | 4 +- l10n/fr/files_sharing.po | 4 +- l10n/fr/files_trashbin.po | 4 +- l10n/fr/files_versions.po | 4 +- l10n/fr/lib.po | 4 +- l10n/fr/settings.po | 44 +- l10n/fr/user_ldap.po | 4 +- l10n/fr/user_webdavauth.po | 14 +- l10n/gl/core.po | 6 +- l10n/gl/files.po | 4 +- l10n/gl/files_encryption.po | 83 +++- l10n/gl/files_external.po | 4 +- l10n/gl/files_sharing.po | 4 +- l10n/gl/files_trashbin.po | 4 +- l10n/gl/files_versions.po | 4 +- l10n/gl/lib.po | 9 +- l10n/gl/settings.po | 44 +- l10n/gl/user_ldap.po | 4 +- l10n/gl/user_webdavauth.po | 12 +- l10n/he/core.po | 4 +- l10n/he/files.po | 4 +- l10n/he/files_encryption.po | 77 +++- l10n/he/files_external.po | 4 +- l10n/he/files_sharing.po | 4 +- l10n/he/files_trashbin.po | 4 +- l10n/he/files_versions.po | 4 +- l10n/he/lib.po | 4 +- l10n/he/settings.po | 42 +- l10n/he/user_ldap.po | 4 +- l10n/he/user_webdavauth.po | 4 +- l10n/hi/core.po | 4 +- l10n/hi/files.po | 4 +- l10n/hi/files_encryption.po | 75 +++- l10n/hi/files_external.po | 4 +- l10n/hi/files_sharing.po | 4 +- l10n/hi/files_trashbin.po | 4 +- l10n/hi/files_versions.po | 4 +- l10n/hi/lib.po | 4 +- l10n/hi/settings.po | 52 +-- l10n/hi/user_ldap.po | 4 +- l10n/hi/user_webdavauth.po | 4 +- l10n/hr/core.po | 4 +- l10n/hr/files.po | 4 +- l10n/hr/files_encryption.po | 75 +++- l10n/hr/files_external.po | 4 +- l10n/hr/files_sharing.po | 4 +- l10n/hr/files_trashbin.po | 4 +- l10n/hr/files_versions.po | 4 +- l10n/hr/lib.po | 4 +- l10n/hr/settings.po | 42 +- l10n/hr/user_ldap.po | 4 +- l10n/hr/user_webdavauth.po | 4 +- l10n/hu_HU/core.po | 4 +- l10n/hu_HU/files.po | 4 +- l10n/hu_HU/files_encryption.po | 83 +++- l10n/hu_HU/files_external.po | 4 +- l10n/hu_HU/files_sharing.po | 4 +- l10n/hu_HU/files_trashbin.po | 4 +- l10n/hu_HU/files_versions.po | 4 +- l10n/hu_HU/lib.po | 4 +- l10n/hu_HU/settings.po | 44 +- l10n/hu_HU/user_ldap.po | 4 +- l10n/hu_HU/user_webdavauth.po | 6 +- l10n/hy/core.po | 32 +- l10n/hy/files.po | 4 +- l10n/hy/files_encryption.po | 81 +++- l10n/hy/files_external.po | 2 +- l10n/hy/files_sharing.po | 2 +- l10n/hy/files_trashbin.po | 2 +- l10n/hy/files_versions.po | 51 ++- l10n/hy/lib.po | 192 +++++++-- l10n/hy/settings.po | 44 +- l10n/hy/user_ldap.po | 361 +++++++++++++--- l10n/hy/user_webdavauth.po | 33 ++ l10n/ia/core.po | 4 +- l10n/ia/files.po | 4 +- l10n/ia/files_encryption.po | 75 +++- l10n/ia/files_external.po | 4 +- l10n/ia/files_sharing.po | 4 +- l10n/ia/files_trashbin.po | 4 +- l10n/ia/files_versions.po | 4 +- l10n/ia/lib.po | 4 +- l10n/ia/settings.po | 42 +- l10n/ia/user_ldap.po | 4 +- l10n/ia/user_webdavauth.po | 4 +- l10n/id/core.po | 4 +- l10n/id/files.po | 4 +- l10n/id/files_encryption.po | 83 +++- l10n/id/files_external.po | 4 +- l10n/id/files_sharing.po | 4 +- l10n/id/files_trashbin.po | 4 +- l10n/id/files_versions.po | 4 +- l10n/id/lib.po | 4 +- l10n/id/settings.po | 42 +- l10n/id/user_ldap.po | 4 +- l10n/id/user_webdavauth.po | 6 +- l10n/is/core.po | 4 +- l10n/is/files.po | 4 +- l10n/is/files_encryption.po | 77 +++- l10n/is/files_external.po | 4 +- l10n/is/files_sharing.po | 4 +- l10n/is/files_trashbin.po | 4 +- l10n/is/files_versions.po | 4 +- l10n/is/lib.po | 4 +- l10n/is/settings.po | 42 +- l10n/is/user_ldap.po | 4 +- l10n/is/user_webdavauth.po | 6 +- l10n/it/core.po | 4 +- l10n/it/files.po | 4 +- l10n/it/files_encryption.po | 85 +++- l10n/it/files_external.po | 4 +- l10n/it/files_sharing.po | 4 +- l10n/it/files_trashbin.po | 4 +- l10n/it/files_versions.po | 4 +- l10n/it/lib.po | 4 +- l10n/it/settings.po | 44 +- l10n/it/user_ldap.po | 4 +- l10n/it/user_webdavauth.po | 4 +- l10n/ja_JP/core.po | 6 +- l10n/ja_JP/files.po | 4 +- l10n/ja_JP/files_encryption.po | 83 +++- l10n/ja_JP/files_external.po | 4 +- l10n/ja_JP/files_sharing.po | 4 +- l10n/ja_JP/files_trashbin.po | 4 +- l10n/ja_JP/files_versions.po | 4 +- l10n/ja_JP/lib.po | 4 +- l10n/ja_JP/settings.po | 44 +- l10n/ja_JP/user_ldap.po | 4 +- l10n/ja_JP/user_webdavauth.po | 8 +- l10n/ka/core.po | 30 +- l10n/ka/files.po | 4 +- l10n/ka/files_encryption.po | 75 +++- l10n/ka/files_external.po | 4 +- l10n/ka/files_sharing.po | 4 +- l10n/ka/files_trashbin.po | 4 +- l10n/ka/files_versions.po | 4 +- l10n/ka/lib.po | 68 +-- l10n/ka/settings.po | 52 +-- l10n/ka/user_ldap.po | 4 +- l10n/ka/user_webdavauth.po | 4 +- l10n/ka_GE/core.po | 4 +- l10n/ka_GE/files.po | 4 +- l10n/ka_GE/files_encryption.po | 85 +++- l10n/ka_GE/files_external.po | 4 +- l10n/ka_GE/files_sharing.po | 4 +- l10n/ka_GE/files_trashbin.po | 4 +- l10n/ka_GE/files_versions.po | 4 +- l10n/ka_GE/lib.po | 4 +- l10n/ka_GE/settings.po | 44 +- l10n/ka_GE/user_ldap.po | 4 +- l10n/ka_GE/user_webdavauth.po | 6 +- l10n/kn/core.po | 30 +- l10n/kn/files.po | 4 +- l10n/kn/files_encryption.po | 75 +++- l10n/kn/files_external.po | 4 +- l10n/kn/files_sharing.po | 4 +- l10n/kn/files_trashbin.po | 4 +- l10n/kn/files_versions.po | 4 +- l10n/kn/lib.po | 68 +-- l10n/kn/settings.po | 64 +-- l10n/kn/user_ldap.po | 4 +- l10n/kn/user_webdavauth.po | 4 +- l10n/ko/core.po | 4 +- l10n/ko/files.po | 4 +- l10n/ko/files_encryption.po | 77 +++- l10n/ko/files_external.po | 4 +- l10n/ko/files_sharing.po | 4 +- l10n/ko/files_trashbin.po | 4 +- l10n/ko/files_versions.po | 4 +- l10n/ko/lib.po | 4 +- l10n/ko/settings.po | 42 +- l10n/ko/user_ldap.po | 4 +- l10n/ko/user_webdavauth.po | 13 +- l10n/ku_IQ/core.po | 4 +- l10n/ku_IQ/files.po | 4 +- l10n/ku_IQ/files_encryption.po | 77 +++- l10n/ku_IQ/files_external.po | 4 +- l10n/ku_IQ/files_sharing.po | 4 +- l10n/ku_IQ/files_trashbin.po | 4 +- l10n/ku_IQ/files_versions.po | 4 +- l10n/ku_IQ/lib.po | 4 +- l10n/ku_IQ/settings.po | 42 +- l10n/ku_IQ/user_ldap.po | 4 +- l10n/ku_IQ/user_webdavauth.po | 4 +- l10n/lb/core.po | 4 +- l10n/lb/files.po | 4 +- l10n/lb/files_encryption.po | 75 +++- l10n/lb/files_external.po | 4 +- l10n/lb/files_sharing.po | 4 +- l10n/lb/files_trashbin.po | 4 +- l10n/lb/files_versions.po | 4 +- l10n/lb/lib.po | 4 +- l10n/lb/settings.po | 42 +- l10n/lb/user_ldap.po | 4 +- l10n/lb/user_webdavauth.po | 4 +- l10n/lt_LT/core.po | 4 +- l10n/lt_LT/files.po | 4 +- l10n/lt_LT/files_encryption.po | 77 +++- l10n/lt_LT/files_external.po | 4 +- l10n/lt_LT/files_sharing.po | 4 +- l10n/lt_LT/files_trashbin.po | 4 +- l10n/lt_LT/files_versions.po | 4 +- l10n/lt_LT/lib.po | 4 +- l10n/lt_LT/settings.po | 42 +- l10n/lt_LT/user_ldap.po | 4 +- l10n/lt_LT/user_webdavauth.po | 6 +- l10n/lv/core.po | 4 +- l10n/lv/files.po | 4 +- l10n/lv/files_encryption.po | 83 +++- l10n/lv/files_external.po | 4 +- l10n/lv/files_sharing.po | 4 +- l10n/lv/files_trashbin.po | 4 +- l10n/lv/files_versions.po | 4 +- l10n/lv/lib.po | 4 +- l10n/lv/settings.po | 42 +- l10n/lv/user_ldap.po | 4 +- l10n/lv/user_webdavauth.po | 6 +- l10n/mk/core.po | 4 +- l10n/mk/files.po | 4 +- l10n/mk/files_encryption.po | 77 +++- l10n/mk/files_external.po | 4 +- l10n/mk/files_sharing.po | 4 +- l10n/mk/files_trashbin.po | 4 +- l10n/mk/files_versions.po | 4 +- l10n/mk/lib.po | 4 +- l10n/mk/settings.po | 42 +- l10n/mk/user_ldap.po | 4 +- l10n/mk/user_webdavauth.po | 6 +- l10n/ms_MY/core.po | 4 +- l10n/ms_MY/files.po | 4 +- l10n/ms_MY/files_encryption.po | 75 +++- l10n/ms_MY/files_external.po | 4 +- l10n/ms_MY/files_sharing.po | 4 +- l10n/ms_MY/files_trashbin.po | 4 +- l10n/ms_MY/files_versions.po | 4 +- l10n/ms_MY/lib.po | 4 +- l10n/ms_MY/settings.po | 42 +- l10n/ms_MY/user_ldap.po | 4 +- l10n/ms_MY/user_webdavauth.po | 4 +- l10n/my_MM/core.po | 4 +- l10n/my_MM/files.po | 4 +- l10n/my_MM/files_encryption.po | 75 +++- l10n/my_MM/files_external.po | 4 +- l10n/my_MM/files_sharing.po | 4 +- l10n/my_MM/files_trashbin.po | 4 +- l10n/my_MM/files_versions.po | 4 +- l10n/my_MM/lib.po | 4 +- l10n/my_MM/settings.po | 52 +-- l10n/my_MM/user_ldap.po | 4 +- l10n/my_MM/user_webdavauth.po | 4 +- l10n/nb_NO/core.po | 4 +- l10n/nb_NO/files.po | 4 +- l10n/nb_NO/files_encryption.po | 83 +++- l10n/nb_NO/files_external.po | 4 +- l10n/nb_NO/files_sharing.po | 4 +- l10n/nb_NO/files_trashbin.po | 4 +- l10n/nb_NO/files_versions.po | 4 +- l10n/nb_NO/lib.po | 4 +- l10n/nb_NO/settings.po | 44 +- l10n/nb_NO/user_ldap.po | 4 +- l10n/nb_NO/user_webdavauth.po | 6 +- l10n/ne/core.po | 30 +- l10n/ne/files.po | 4 +- l10n/ne/files_encryption.po | 75 +++- l10n/ne/files_external.po | 4 +- l10n/ne/files_sharing.po | 4 +- l10n/ne/files_trashbin.po | 4 +- l10n/ne/files_versions.po | 4 +- l10n/ne/lib.po | 68 +-- l10n/ne/settings.po | 64 +-- l10n/ne/user_ldap.po | 4 +- l10n/ne/user_webdavauth.po | 4 +- l10n/nl/core.po | 4 +- l10n/nl/files.po | 4 +- l10n/nl/files_encryption.po | 83 +++- l10n/nl/files_external.po | 4 +- l10n/nl/files_sharing.po | 4 +- l10n/nl/files_trashbin.po | 4 +- l10n/nl/files_versions.po | 4 +- l10n/nl/lib.po | 4 +- l10n/nl/settings.po | 44 +- l10n/nl/user_ldap.po | 4 +- l10n/nl/user_webdavauth.po | 8 +- l10n/nn_NO/core.po | 4 +- l10n/nn_NO/files.po | 4 +- l10n/nn_NO/files_encryption.po | 75 +++- l10n/nn_NO/files_external.po | 4 +- l10n/nn_NO/files_sharing.po | 4 +- l10n/nn_NO/files_trashbin.po | 4 +- l10n/nn_NO/files_versions.po | 4 +- l10n/nn_NO/lib.po | 4 +- l10n/nn_NO/settings.po | 44 +- l10n/nn_NO/user_ldap.po | 4 +- l10n/nn_NO/user_webdavauth.po | 4 +- l10n/oc/core.po | 4 +- l10n/oc/files.po | 4 +- l10n/oc/files_encryption.po | 75 +++- l10n/oc/files_external.po | 4 +- l10n/oc/files_sharing.po | 4 +- l10n/oc/files_trashbin.po | 4 +- l10n/oc/files_versions.po | 4 +- l10n/oc/lib.po | 4 +- l10n/oc/settings.po | 42 +- l10n/oc/user_ldap.po | 4 +- l10n/oc/user_webdavauth.po | 4 +- l10n/pl/core.po | 6 +- l10n/pl/files.po | 4 +- l10n/pl/files_encryption.po | 83 +++- l10n/pl/files_external.po | 4 +- l10n/pl/files_sharing.po | 4 +- l10n/pl/files_trashbin.po | 4 +- l10n/pl/files_versions.po | 4 +- l10n/pl/lib.po | 9 +- l10n/pl/settings.po | 44 +- l10n/pl/user_ldap.po | 21 +- l10n/pl/user_webdavauth.po | 10 +- l10n/pl_PL/core.po | 4 +- l10n/pl_PL/files.po | 4 +- l10n/pl_PL/files_encryption.po | 75 +++- l10n/pl_PL/files_external.po | 6 +- l10n/pl_PL/files_sharing.po | 6 +- l10n/pl_PL/files_trashbin.po | 6 +- l10n/pl_PL/files_versions.po | 6 +- l10n/pl_PL/lib.po | 4 +- l10n/pl_PL/settings.po | 44 +- l10n/pl_PL/user_ldap.po | 222 +++++++--- l10n/pl_PL/user_webdavauth.po | 6 +- l10n/pt_BR/core.po | 6 +- l10n/pt_BR/files.po | 4 +- l10n/pt_BR/files_encryption.po | 83 +++- l10n/pt_BR/files_external.po | 4 +- l10n/pt_BR/files_sharing.po | 4 +- l10n/pt_BR/files_trashbin.po | 4 +- l10n/pt_BR/files_versions.po | 4 +- l10n/pt_BR/lib.po | 4 +- l10n/pt_BR/settings.po | 44 +- l10n/pt_BR/user_ldap.po | 4 +- l10n/pt_BR/user_webdavauth.po | 8 +- l10n/pt_PT/core.po | 4 +- l10n/pt_PT/files.po | 4 +- l10n/pt_PT/files_encryption.po | 83 +++- l10n/pt_PT/files_external.po | 4 +- l10n/pt_PT/files_sharing.po | 4 +- l10n/pt_PT/files_trashbin.po | 4 +- l10n/pt_PT/files_versions.po | 4 +- l10n/pt_PT/lib.po | 4 +- l10n/pt_PT/settings.po | 44 +- l10n/pt_PT/user_ldap.po | 4 +- l10n/pt_PT/user_webdavauth.po | 8 +- l10n/ro/core.po | 4 +- l10n/ro/files.po | 4 +- l10n/ro/files_encryption.po | 77 +++- l10n/ro/files_external.po | 4 +- l10n/ro/files_sharing.po | 4 +- l10n/ro/files_trashbin.po | 4 +- l10n/ro/files_versions.po | 4 +- l10n/ro/lib.po | 4 +- l10n/ro/settings.po | 42 +- l10n/ro/user_ldap.po | 4 +- l10n/ro/user_webdavauth.po | 8 +- l10n/ru/core.po | 4 +- l10n/ru/files.po | 4 +- l10n/ru/files_encryption.po | 83 +++- l10n/ru/files_external.po | 4 +- l10n/ru/files_sharing.po | 4 +- l10n/ru/files_trashbin.po | 4 +- l10n/ru/files_versions.po | 4 +- l10n/ru/lib.po | 4 +- l10n/ru/settings.po | 44 +- l10n/ru/user_ldap.po | 4 +- l10n/ru/user_webdavauth.po | 10 +- l10n/ru_RU/core.po | 4 +- l10n/ru_RU/files.po | 2 +- l10n/ru_RU/files_encryption.po | 83 +++- l10n/ru_RU/files_external.po | 2 +- l10n/ru_RU/files_sharing.po | 2 +- l10n/ru_RU/files_trashbin.po | 2 +- l10n/ru_RU/files_versions.po | 7 +- l10n/ru_RU/lib.po | 4 +- l10n/ru_RU/settings.po | 44 +- l10n/ru_RU/user_ldap.po | 2 +- l10n/ru_RU/user_webdavauth.po | 16 +- l10n/si_LK/core.po | 4 +- l10n/si_LK/files.po | 4 +- l10n/si_LK/files_encryption.po | 77 +++- l10n/si_LK/files_external.po | 4 +- l10n/si_LK/files_sharing.po | 4 +- l10n/si_LK/files_trashbin.po | 4 +- l10n/si_LK/files_versions.po | 4 +- l10n/si_LK/lib.po | 4 +- l10n/si_LK/settings.po | 42 +- l10n/si_LK/user_ldap.po | 4 +- l10n/si_LK/user_webdavauth.po | 6 +- l10n/sk/core.po | 30 +- l10n/sk/files.po | 4 +- l10n/sk/files_encryption.po | 75 +++- l10n/sk/files_external.po | 4 +- l10n/sk/files_sharing.po | 4 +- l10n/sk/files_trashbin.po | 4 +- l10n/sk/files_versions.po | 4 +- l10n/sk/lib.po | 68 +-- l10n/sk/settings.po | 64 +-- l10n/sk/user_ldap.po | 4 +- l10n/sk/user_webdavauth.po | 4 +- l10n/sk_SK/core.po | 4 +- l10n/sk_SK/files.po | 4 +- l10n/sk_SK/files_encryption.po | 83 +++- l10n/sk_SK/files_external.po | 4 +- l10n/sk_SK/files_sharing.po | 4 +- l10n/sk_SK/files_trashbin.po | 4 +- l10n/sk_SK/files_versions.po | 4 +- l10n/sk_SK/lib.po | 4 +- l10n/sk_SK/settings.po | 44 +- l10n/sk_SK/user_ldap.po | 4 +- l10n/sk_SK/user_webdavauth.po | 8 +- l10n/sl/core.po | 4 +- l10n/sl/files.po | 4 +- l10n/sl/files_encryption.po | 83 +++- l10n/sl/files_external.po | 4 +- l10n/sl/files_sharing.po | 4 +- l10n/sl/files_trashbin.po | 4 +- l10n/sl/files_versions.po | 4 +- l10n/sl/lib.po | 4 +- l10n/sl/settings.po | 44 +- l10n/sl/user_ldap.po | 4 +- l10n/sl/user_webdavauth.po | 8 +- l10n/sq/core.po | 4 +- l10n/sq/files.po | 4 +- l10n/sq/files_encryption.po | 75 +++- l10n/sq/files_external.po | 4 +- l10n/sq/files_sharing.po | 4 +- l10n/sq/files_trashbin.po | 4 +- l10n/sq/files_versions.po | 4 +- l10n/sq/lib.po | 4 +- l10n/sq/settings.po | 42 +- l10n/sq/user_ldap.po | 4 +- l10n/sq/user_webdavauth.po | 4 +- l10n/sr/core.po | 4 +- l10n/sr/files.po | 4 +- l10n/sr/files_encryption.po | 77 +++- l10n/sr/files_external.po | 4 +- l10n/sr/files_sharing.po | 4 +- l10n/sr/files_trashbin.po | 4 +- l10n/sr/files_versions.po | 4 +- l10n/sr/lib.po | 4 +- l10n/sr/settings.po | 42 +- l10n/sr/user_ldap.po | 4 +- l10n/sr/user_webdavauth.po | 6 +- l10n/sr@latin/core.po | 4 +- l10n/sr@latin/files.po | 4 +- l10n/sr@latin/files_encryption.po | 75 +++- l10n/sr@latin/files_external.po | 4 +- l10n/sr@latin/files_sharing.po | 4 +- l10n/sr@latin/files_trashbin.po | 4 +- l10n/sr@latin/files_versions.po | 4 +- l10n/sr@latin/lib.po | 4 +- l10n/sr@latin/settings.po | 42 +- l10n/sr@latin/user_ldap.po | 4 +- l10n/sr@latin/user_webdavauth.po | 4 +- l10n/sv/core.po | 4 +- l10n/sv/files.po | 4 +- l10n/sv/files_encryption.po | 83 +++- l10n/sv/files_external.po | 4 +- l10n/sv/files_sharing.po | 4 +- l10n/sv/files_trashbin.po | 4 +- l10n/sv/files_versions.po | 4 +- l10n/sv/lib.po | 4 +- l10n/sv/settings.po | 42 +- l10n/sv/user_ldap.po | 4 +- l10n/sv/user_webdavauth.po | 6 +- l10n/sw_KE/core.po | 30 +- l10n/sw_KE/files.po | 4 +- l10n/sw_KE/files_encryption.po | 75 +++- l10n/sw_KE/files_external.po | 4 +- l10n/sw_KE/files_sharing.po | 4 +- l10n/sw_KE/files_trashbin.po | 4 +- l10n/sw_KE/files_versions.po | 4 +- l10n/sw_KE/lib.po | 68 +-- l10n/sw_KE/settings.po | 64 +-- l10n/sw_KE/user_ldap.po | 4 +- l10n/sw_KE/user_webdavauth.po | 4 +- l10n/ta_LK/core.po | 4 +- l10n/ta_LK/files.po | 4 +- l10n/ta_LK/files_encryption.po | 77 +++- l10n/ta_LK/files_external.po | 4 +- l10n/ta_LK/files_sharing.po | 4 +- l10n/ta_LK/files_trashbin.po | 4 +- l10n/ta_LK/files_versions.po | 4 +- l10n/ta_LK/lib.po | 4 +- l10n/ta_LK/settings.po | 42 +- l10n/ta_LK/user_ldap.po | 4 +- l10n/ta_LK/user_webdavauth.po | 6 +- l10n/te/core.po | 4 +- l10n/te/files.po | 4 +- l10n/te/files_encryption.po | 75 +++- l10n/te/files_external.po | 4 +- l10n/te/files_sharing.po | 4 +- l10n/te/files_trashbin.po | 4 +- l10n/te/files_versions.po | 4 +- l10n/te/lib.po | 4 +- l10n/te/settings.po | 42 +- l10n/te/user_ldap.po | 4 +- l10n/te/user_webdavauth.po | 4 +- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 73 +++- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 40 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 4 +- l10n/th_TH/files.po | 4 +- l10n/th_TH/files_encryption.po | 77 +++- l10n/th_TH/files_external.po | 4 +- l10n/th_TH/files_sharing.po | 4 +- l10n/th_TH/files_trashbin.po | 4 +- l10n/th_TH/files_versions.po | 4 +- l10n/th_TH/lib.po | 4 +- l10n/th_TH/settings.po | 42 +- l10n/th_TH/user_ldap.po | 4 +- l10n/th_TH/user_webdavauth.po | 6 +- l10n/tr/core.po | 4 +- l10n/tr/files.po | 4 +- l10n/tr/files_encryption.po | 83 +++- l10n/tr/files_external.po | 4 +- l10n/tr/files_sharing.po | 4 +- l10n/tr/files_trashbin.po | 4 +- l10n/tr/files_versions.po | 4 +- l10n/tr/lib.po | 4 +- l10n/tr/settings.po | 44 +- l10n/tr/user_ldap.po | 4 +- l10n/tr/user_webdavauth.po | 4 +- l10n/ug/core.po | 4 +- l10n/ug/files.po | 4 +- l10n/ug/files_encryption.po | 85 +++- l10n/ug/files_external.po | 4 +- l10n/ug/files_sharing.po | 4 +- l10n/ug/files_trashbin.po | 4 +- l10n/ug/files_versions.po | 4 +- l10n/ug/lib.po | 4 +- l10n/ug/settings.po | 44 +- l10n/ug/user_ldap.po | 4 +- l10n/ug/user_webdavauth.po | 4 +- l10n/uk/core.po | 4 +- l10n/uk/files.po | 4 +- l10n/uk/files_encryption.po | 83 +++- l10n/uk/files_external.po | 4 +- l10n/uk/files_sharing.po | 4 +- l10n/uk/files_trashbin.po | 4 +- l10n/uk/files_versions.po | 4 +- l10n/uk/lib.po | 4 +- l10n/uk/settings.po | 42 +- l10n/uk/user_ldap.po | 4 +- l10n/uk/user_webdavauth.po | 10 +- l10n/ur_PK/core.po | 4 +- l10n/ur_PK/files.po | 4 +- l10n/ur_PK/files_encryption.po | 75 +++- l10n/ur_PK/files_external.po | 4 +- l10n/ur_PK/files_sharing.po | 4 +- l10n/ur_PK/files_trashbin.po | 4 +- l10n/ur_PK/files_versions.po | 4 +- l10n/ur_PK/lib.po | 4 +- l10n/ur_PK/settings.po | 42 +- l10n/ur_PK/user_ldap.po | 4 +- l10n/ur_PK/user_webdavauth.po | 4 +- l10n/vi/core.po | 4 +- l10n/vi/files.po | 4 +- l10n/vi/files_encryption.po | 83 +++- l10n/vi/files_external.po | 4 +- l10n/vi/files_sharing.po | 4 +- l10n/vi/files_trashbin.po | 4 +- l10n/vi/files_versions.po | 4 +- l10n/vi/lib.po | 4 +- l10n/vi/settings.po | 42 +- l10n/vi/user_ldap.po | 4 +- l10n/vi/user_webdavauth.po | 8 +- l10n/zh_CN.GB2312/core.po | 4 +- l10n/zh_CN.GB2312/files.po | 4 +- l10n/zh_CN.GB2312/files_encryption.po | 77 +++- l10n/zh_CN.GB2312/files_external.po | 4 +- l10n/zh_CN.GB2312/files_sharing.po | 4 +- l10n/zh_CN.GB2312/files_trashbin.po | 4 +- l10n/zh_CN.GB2312/files_versions.po | 4 +- l10n/zh_CN.GB2312/lib.po | 4 +- l10n/zh_CN.GB2312/settings.po | 42 +- l10n/zh_CN.GB2312/user_ldap.po | 4 +- l10n/zh_CN.GB2312/user_webdavauth.po | 4 +- l10n/zh_CN/core.po | 4 +- l10n/zh_CN/files.po | 4 +- l10n/zh_CN/files_encryption.po | 83 +++- l10n/zh_CN/files_external.po | 4 +- l10n/zh_CN/files_sharing.po | 4 +- l10n/zh_CN/files_trashbin.po | 4 +- l10n/zh_CN/files_versions.po | 4 +- l10n/zh_CN/lib.po | 4 +- l10n/zh_CN/settings.po | 44 +- l10n/zh_CN/user_ldap.po | 4 +- l10n/zh_CN/user_webdavauth.po | 12 +- l10n/zh_HK/core.po | 4 +- l10n/zh_HK/files.po | 4 +- l10n/zh_HK/files_encryption.po | 87 +++- l10n/zh_HK/files_external.po | 4 +- l10n/zh_HK/files_sharing.po | 4 +- l10n/zh_HK/files_trashbin.po | 4 +- l10n/zh_HK/files_versions.po | 4 +- l10n/zh_HK/lib.po | 4 +- l10n/zh_HK/settings.po | 42 +- l10n/zh_HK/user_ldap.po | 4 +- l10n/zh_HK/user_webdavauth.po | 4 +- l10n/zh_TW/core.po | 4 +- l10n/zh_TW/files.po | 4 +- l10n/zh_TW/files_encryption.po | 83 +++- l10n/zh_TW/files_external.po | 4 +- l10n/zh_TW/files_sharing.po | 4 +- l10n/zh_TW/files_trashbin.po | 4 +- l10n/zh_TW/files_versions.po | 4 +- l10n/zh_TW/lib.po | 4 +- l10n/zh_TW/settings.po | 44 +- l10n/zh_TW/user_ldap.po | 4 +- l10n/zh_TW/user_webdavauth.po | 4 +- lib/l10n/es.php | 1 + lib/l10n/et_EE.php | 1 + lib/l10n/gl.php | 1 + lib/l10n/pl.php | 1 + 931 files changed, 10631 insertions(+), 5017 deletions(-) create mode 100644 l10n/fi/files_trashbin.po create mode 100644 l10n/fi/user_webdavauth.po create mode 100644 l10n/hy/user_webdavauth.po diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index f34c9f59cf..c1c94b9900 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -57,7 +57,7 @@ "0 is unlimited" => "0 és sense límit", "Maximum input size for ZIP files" => "Mida màxima d'entrada per fitxers ZIP", "Save" => "Desa", -"New" => "Nova", +"New" => "Nou", "Text file" => "Fitxer de text", "Folder" => "Carpeta", "From link" => "Des d'enllaç", diff --git a/apps/files_encryption/l10n/ar.php b/apps/files_encryption/l10n/ar.php index c8a475afd6..43a81d1ef8 100644 --- a/apps/files_encryption/l10n/ar.php +++ b/apps/files_encryption/l10n/ar.php @@ -1,7 +1,3 @@ "التشفير", -"File encryption is enabled." => "تشفير الملفات فعال.", -"The following file types will not be encrypted:" => "الملفات الاتية لن يتم تشفيرها:", -"Exclude the following file types from encryption:" => "إستثناء أنواع الملفات الاتية من التشفير: ", -"None" => "لا شيء" +"Encryption" => "التشفير" ); diff --git a/apps/files_encryption/l10n/bg_BG.php b/apps/files_encryption/l10n/bg_BG.php index 07a97f5f8a..7087a04269 100644 --- a/apps/files_encryption/l10n/bg_BG.php +++ b/apps/files_encryption/l10n/bg_BG.php @@ -1,4 +1,3 @@ "Криптиране", -"None" => "Няма" +"Encryption" => "Криптиране" ); diff --git a/apps/files_encryption/l10n/bn_BD.php b/apps/files_encryption/l10n/bn_BD.php index 43767d5651..b8241b5bbd 100644 --- a/apps/files_encryption/l10n/bn_BD.php +++ b/apps/files_encryption/l10n/bn_BD.php @@ -1,4 +1,3 @@ "সংকেতায়ন", -"None" => "কোনটিই নয়" +"Encryption" => "সংকেতায়ন" ); diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index 2d59a306d3..57a5897a3d 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -1,7 +1,3 @@ "Xifrat", -"File encryption is enabled." => "El xifrat de fitxers està activat.", -"The following file types will not be encrypted:" => "Els tipus de fitxers següents no es xifraran:", -"Exclude the following file types from encryption:" => "Exclou els tipus de fitxers següents del xifratge:", -"None" => "Cap" +"Encryption" => "Xifrat" ); diff --git a/apps/files_encryption/l10n/cs_CZ.php b/apps/files_encryption/l10n/cs_CZ.php index d225688a07..27ab9d0464 100644 --- a/apps/files_encryption/l10n/cs_CZ.php +++ b/apps/files_encryption/l10n/cs_CZ.php @@ -1,7 +1,3 @@ "Šifrování", -"File encryption is enabled." => "Šifrování je povoleno.", -"The following file types will not be encrypted:" => "Následující typy souborů nebudou šifrovány:", -"Exclude the following file types from encryption:" => "Vyjmout následující typy souborů ze šifrování:", -"None" => "Žádné" +"Encryption" => "Šifrování" ); diff --git a/apps/files_encryption/l10n/cy_GB.php b/apps/files_encryption/l10n/cy_GB.php index 523b5dd73d..98571bf943 100644 --- a/apps/files_encryption/l10n/cy_GB.php +++ b/apps/files_encryption/l10n/cy_GB.php @@ -1,7 +1,3 @@ "Amgryptiad", -"File encryption is enabled." => "Galluogwyd amgryptio ffeiliau.", -"The following file types will not be encrypted:" => "Ni fydd ffeiliau o'r math yma'n cael eu hamgryptio:", -"Exclude the following file types from encryption:" => "Eithrio'r mathau canlynol o ffeiliau rhag cael eu hamgryptio:", -"None" => "Dim" +"Encryption" => "Amgryptiad" ); diff --git a/apps/files_encryption/l10n/da.php b/apps/files_encryption/l10n/da.php index b085381ea7..b008f7884f 100644 --- a/apps/files_encryption/l10n/da.php +++ b/apps/files_encryption/l10n/da.php @@ -1,7 +1,3 @@ "Kryptering", -"File encryption is enabled." => "Fil kryptering aktiveret.", -"The following file types will not be encrypted:" => "De følgende filtyper vil ikke blive krypteret:", -"Exclude the following file types from encryption:" => "Ekskluder de følgende fil typer fra kryptering:", -"None" => "Ingen" +"Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index cdcd8a40b2..e62f244539 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -1,7 +1,3 @@ "Verschlüsselung", -"File encryption is enabled." => "Dateiverschlüsselung ist aktiviert", -"The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:", -"Exclude the following file types from encryption:" => "Schließe die folgenden Dateitypen von der Verschlüsselung aus:", -"None" => "Keine" +"Encryption" => "Verschlüsselung" ); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index 4f08b98eb2..e62f244539 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -1,7 +1,3 @@ "Verschlüsselung", -"File encryption is enabled." => "Datei-Verschlüsselung ist aktiviert", -"The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:", -"Exclude the following file types from encryption:" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen:", -"None" => "Keine" +"Encryption" => "Verschlüsselung" ); diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index 0031a73194..aa439d40f0 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -1,7 +1,3 @@ "Κρυπτογράφηση", -"File encryption is enabled." => "Η κρυπτογράφηση αρχείων είναι ενεργή.", -"The following file types will not be encrypted:" => "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:", -"Exclude the following file types from encryption:" => "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:", -"None" => "Καμία" +"Encryption" => "Κρυπτογράφηση" ); diff --git a/apps/files_encryption/l10n/eo.php b/apps/files_encryption/l10n/eo.php index 50847062c3..41880005c5 100644 --- a/apps/files_encryption/l10n/eo.php +++ b/apps/files_encryption/l10n/eo.php @@ -1,4 +1,3 @@ "Ĉifrado", -"None" => "Nenio" +"Encryption" => "Ĉifrado" ); diff --git a/apps/files_encryption/l10n/es.php b/apps/files_encryption/l10n/es.php index 4ea87b92e7..26ace24e33 100644 --- a/apps/files_encryption/l10n/es.php +++ b/apps/files_encryption/l10n/es.php @@ -1,7 +1,3 @@ "Cifrado", -"File encryption is enabled." => "La encriptacion de archivo esta activada.", -"The following file types will not be encrypted:" => "Los siguientes tipos de archivo no seran encriptados:", -"Exclude the following file types from encryption:" => "Excluir los siguientes tipos de archivo de la encriptacion:", -"None" => "Ninguno" +"Encryption" => "Cifrado" ); diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php index af522879e1..2a6360beb6 100644 --- a/apps/files_encryption/l10n/es_AR.php +++ b/apps/files_encryption/l10n/es_AR.php @@ -1,7 +1,3 @@ "Encriptación", -"File encryption is enabled." => "La encriptación de archivos no está habilitada", -"The following file types will not be encrypted:" => "Los siguientes tipos de archivos no serán encriptados", -"Exclude the following file types from encryption:" => "Excluir los siguientes tipos de archivos de encriptación:", -"None" => "Ninguno" +"Encryption" => "Encriptación" ); diff --git a/apps/files_encryption/l10n/et_EE.php b/apps/files_encryption/l10n/et_EE.php index 0d189ac062..07540ed8c3 100644 --- a/apps/files_encryption/l10n/et_EE.php +++ b/apps/files_encryption/l10n/et_EE.php @@ -1,7 +1,3 @@ "Krüpteerimine", -"File encryption is enabled." => "Faili krüpteerimine on sisse lülitatud.", -"The following file types will not be encrypted:" => "Järgnevaid failitüüpe ei krüpteerita:", -"Exclude the following file types from encryption:" => "Järgnevaid failitüüpe ei krüpteerita:", -"None" => "Pole" +"Encryption" => "Krüpteerimine" ); diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php index 5a22b65728..f443a61d8a 100644 --- a/apps/files_encryption/l10n/eu.php +++ b/apps/files_encryption/l10n/eu.php @@ -1,7 +1,3 @@ "Enkriptazioa", -"File encryption is enabled." => "Fitxategien enkriptazioa gaituta dago.", -"The following file types will not be encrypted:" => "Hurrengo fitxategi motak ez dira enkriptatuko:", -"Exclude the following file types from encryption:" => "Baztertu hurrengo fitxategi motak enkriptatzetik:", -"None" => "Bat ere ez" +"Encryption" => "Enkriptazioa" ); diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 7acf196b79..615e4b920e 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,7 +1,3 @@ "رمزگذاری", -"File encryption is enabled." => "رمزنگاری فایلها فعال شد.", -"The following file types will not be encrypted:" => "فایلهای زیر رمزنگاری نخواهند شد:", -"Exclude the following file types from encryption:" => "فایلهای زیر از رمزنگاری نادیده گرفته می شوند:", -"None" => "هیچ‌کدام" +"Encryption" => "رمزگذاری" ); diff --git a/apps/files_encryption/l10n/fi_FI.php b/apps/files_encryption/l10n/fi_FI.php index 6352d396b3..bc67b9d858 100644 --- a/apps/files_encryption/l10n/fi_FI.php +++ b/apps/files_encryption/l10n/fi_FI.php @@ -1,7 +1,3 @@ "Salaus", -"File encryption is enabled." => "Tiedostojen salaus on käytössä.", -"The following file types will not be encrypted:" => "Seuraavia tiedostotyyppejä ei salata:", -"Exclude the following file types from encryption:" => "Älä salaa seuravia tiedostotyyppejä:", -"None" => "Ei mitään" +"Encryption" => "Salaus" ); diff --git a/apps/files_encryption/l10n/fr.php b/apps/files_encryption/l10n/fr.php index 88f1e4a393..20952995c4 100644 --- a/apps/files_encryption/l10n/fr.php +++ b/apps/files_encryption/l10n/fr.php @@ -1,7 +1,3 @@ "Chiffrement", -"File encryption is enabled." => "Le chiffrement des fichiers est activé", -"The following file types will not be encrypted:" => "Les fichiers de types suivants ne seront pas chiffrés :", -"Exclude the following file types from encryption:" => "Ne pas chiffrer les fichiers dont les types sont les suivants :", -"None" => "Aucun" +"Encryption" => "Chiffrement" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index 3210f71545..26ace24e33 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -1,7 +1,3 @@ "Cifrado", -"File encryption is enabled." => "O cifrado de ficheiros está activado", -"The following file types will not be encrypted:" => "Os seguintes tipos de ficheiros non van seren cifrados:", -"Exclude the following file types from encryption:" => "Excluír os seguintes tipos de ficheiros do cifrado:", -"None" => "Ningún" +"Encryption" => "Cifrado" ); diff --git a/apps/files_encryption/l10n/he.php b/apps/files_encryption/l10n/he.php index cbb74bfee9..54d56c5fc0 100644 --- a/apps/files_encryption/l10n/he.php +++ b/apps/files_encryption/l10n/he.php @@ -1,4 +1,3 @@ "הצפנה", -"None" => "כלום" +"Encryption" => "הצפנה" ); diff --git a/apps/files_encryption/l10n/hu_HU.php b/apps/files_encryption/l10n/hu_HU.php index 4043da108c..a80613ec0f 100644 --- a/apps/files_encryption/l10n/hu_HU.php +++ b/apps/files_encryption/l10n/hu_HU.php @@ -1,7 +1,3 @@ "Titkosítás", -"File encryption is enabled." => "Az állományok titkosítása be van kapcsolva.", -"The following file types will not be encrypted:" => "A következő fájltípusok nem kerülnek titkosításra:", -"Exclude the following file types from encryption:" => "Zárjuk ki a titkosításból a következő fájltípusokat:", -"None" => "Egyik sem" +"Encryption" => "Titkosítás" ); diff --git a/apps/files_encryption/l10n/id.php b/apps/files_encryption/l10n/id.php index 6044348e72..e8778d4b4a 100644 --- a/apps/files_encryption/l10n/id.php +++ b/apps/files_encryption/l10n/id.php @@ -1,7 +1,3 @@ "Enkripsi", -"File encryption is enabled." => "Enkripsi berkas aktif.", -"The following file types will not be encrypted:" => "Tipe berkas berikut tidak akan dienkripsi:", -"Exclude the following file types from encryption:" => "Kecualikan tipe berkas berikut dari enkripsi:", -"None" => "Tidak ada" +"Encryption" => "Enkripsi" ); diff --git a/apps/files_encryption/l10n/is.php b/apps/files_encryption/l10n/is.php index bd964185c4..6ca1b6ef7b 100644 --- a/apps/files_encryption/l10n/is.php +++ b/apps/files_encryption/l10n/is.php @@ -1,4 +1,3 @@ "Dulkóðun", -"None" => "Ekkert" +"Encryption" => "Dulkóðun" ); diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index 9ab9bc492a..129e5c1da1 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -1,7 +1,3 @@ "Cifratura", -"File encryption is enabled." => "La cifratura dei file è abilitata.", -"The following file types will not be encrypted:" => "I seguenti tipi di file non saranno cifrati:", -"Exclude the following file types from encryption:" => "Escludi i seguenti tipi di file dalla cifratura:", -"None" => "Nessuna" +"Encryption" => "Cifratura" ); diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 35fba615ae..767c9642f6 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -1,7 +1,3 @@ "暗号化", -"File encryption is enabled." => "ファイルの暗号化は有効です。", -"The following file types will not be encrypted:" => "次のファイルタイプは暗号化されません:", -"Exclude the following file types from encryption:" => "次のファイルタイプを暗号化から除外:", -"None" => "なし" +"Encryption" => "暗号化" ); diff --git a/apps/files_encryption/l10n/ka_GE.php b/apps/files_encryption/l10n/ka_GE.php index 0362c676f0..36b07bd386 100644 --- a/apps/files_encryption/l10n/ka_GE.php +++ b/apps/files_encryption/l10n/ka_GE.php @@ -1,7 +1,3 @@ "ენკრიპცია", -"File encryption is enabled." => "ფაილის ენკრიპცია ჩართულია.", -"The following file types will not be encrypted:" => "შემდეგი ფაილური ტიპების ენკრიპცია არ მოხდება:", -"Exclude the following file types from encryption:" => "ამოიღე შემდეგი ფაილის ტიპები ენკრიპციიდან:", -"None" => "არა" +"Encryption" => "ენკრიპცია" ); diff --git a/apps/files_encryption/l10n/ko.php b/apps/files_encryption/l10n/ko.php index bd1580578c..5935811bf2 100644 --- a/apps/files_encryption/l10n/ko.php +++ b/apps/files_encryption/l10n/ko.php @@ -1,4 +1,3 @@ "암호화", -"None" => "없음" +"Encryption" => "암호화" ); diff --git a/apps/files_encryption/l10n/ku_IQ.php b/apps/files_encryption/l10n/ku_IQ.php index 02c030014f..ff6c34b71d 100644 --- a/apps/files_encryption/l10n/ku_IQ.php +++ b/apps/files_encryption/l10n/ku_IQ.php @@ -1,4 +1,3 @@ "نهێنیکردن", -"None" => "هیچ" +"Encryption" => "نهێنیکردن" ); diff --git a/apps/files_encryption/l10n/lt_LT.php b/apps/files_encryption/l10n/lt_LT.php index 67769c8f36..7ec3a32e02 100644 --- a/apps/files_encryption/l10n/lt_LT.php +++ b/apps/files_encryption/l10n/lt_LT.php @@ -1,4 +1,3 @@ "Šifravimas", -"None" => "Nieko" +"Encryption" => "Šifravimas" ); diff --git a/apps/files_encryption/l10n/lv.php b/apps/files_encryption/l10n/lv.php index fc31ccdb92..abcc0305c1 100644 --- a/apps/files_encryption/l10n/lv.php +++ b/apps/files_encryption/l10n/lv.php @@ -1,7 +1,3 @@ "Šifrēšana", -"File encryption is enabled." => "Datņu šifrēšana ir aktivēta.", -"The following file types will not be encrypted:" => "Sekojošās datnes netiks šifrētas:", -"Exclude the following file types from encryption:" => "Sekojošos datņu tipus izslēgt no šifrēšanas:", -"None" => "Nav" +"Encryption" => "Šifrēšana" ); diff --git a/apps/files_encryption/l10n/mk.php b/apps/files_encryption/l10n/mk.php index 513606fadc..a355a8433a 100644 --- a/apps/files_encryption/l10n/mk.php +++ b/apps/files_encryption/l10n/mk.php @@ -1,4 +1,3 @@ "Енкрипција", -"None" => "Ништо" +"Encryption" => "Енкрипција" ); diff --git a/apps/files_encryption/l10n/nb_NO.php b/apps/files_encryption/l10n/nb_NO.php index a5e16a0342..b008f7884f 100644 --- a/apps/files_encryption/l10n/nb_NO.php +++ b/apps/files_encryption/l10n/nb_NO.php @@ -1,7 +1,3 @@ "Kryptering", -"File encryption is enabled." => "Fil-kryptering er aktivert.", -"The following file types will not be encrypted:" => "Følgende filtyper vil ikke bli kryptert:", -"Exclude the following file types from encryption:" => "Ekskluder følgende filtyper fra kryptering:", -"None" => "Ingen" +"Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/nl.php b/apps/files_encryption/l10n/nl.php index b1cba96aad..11cdc1e7a6 100644 --- a/apps/files_encryption/l10n/nl.php +++ b/apps/files_encryption/l10n/nl.php @@ -1,7 +1,3 @@ "Versleuteling", -"File encryption is enabled." => "Bestandsversleuteling geactiveerd.", -"The following file types will not be encrypted:" => "De volgende bestandstypen zullen niet worden versleuteld:", -"Exclude the following file types from encryption:" => "Sluit de volgende bestandstypen uit van versleuteling:", -"None" => "Geen" +"Encryption" => "Versleuteling" ); diff --git a/apps/files_encryption/l10n/pl.php b/apps/files_encryption/l10n/pl.php index 2fa86f454f..02f827f8d5 100644 --- a/apps/files_encryption/l10n/pl.php +++ b/apps/files_encryption/l10n/pl.php @@ -1,7 +1,3 @@ "Szyfrowanie", -"File encryption is enabled." => "Szyfrowanie plików jest włączone", -"The following file types will not be encrypted:" => "Poniższe typy plików nie będą szyfrowane:", -"Exclude the following file types from encryption:" => "Wyłącz poniższe typy plików z szyfrowania:", -"None" => "Brak" +"Encryption" => "Szyfrowanie" ); diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 28807db72c..4da459593a 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,7 +1,3 @@ "Criptografia", -"File encryption is enabled." => "A criptografia de arquivos está ativada.", -"The following file types will not be encrypted:" => "Os seguintes tipos de arquivo não serão criptografados:", -"Exclude the following file types from encryption:" => "Excluir os seguintes tipos de arquivo da criptografia:", -"None" => "Nenhuma" +"Encryption" => "Criptografia" ); diff --git a/apps/files_encryption/l10n/pt_PT.php b/apps/files_encryption/l10n/pt_PT.php index 1c46011fc1..eda3e275b2 100644 --- a/apps/files_encryption/l10n/pt_PT.php +++ b/apps/files_encryption/l10n/pt_PT.php @@ -1,7 +1,3 @@ "Encriptação", -"File encryption is enabled." => "A encriptação de ficheiros está ligada", -"The following file types will not be encrypted:" => "Os seguintes ficheiros não serão encriptados:", -"Exclude the following file types from encryption:" => "Excluir da encriptação os seguintes tipos de ficheiro:", -"None" => "Nenhum" +"Encryption" => "Encriptação" ); diff --git a/apps/files_encryption/l10n/ro.php b/apps/files_encryption/l10n/ro.php index a5a6fb3cb7..d24f3cf5dc 100644 --- a/apps/files_encryption/l10n/ro.php +++ b/apps/files_encryption/l10n/ro.php @@ -1,4 +1,3 @@ "Încriptare", -"None" => "Niciuna" +"Encryption" => "Încriptare" ); diff --git a/apps/files_encryption/l10n/ru.php b/apps/files_encryption/l10n/ru.php index 22c1e3da37..870557d835 100644 --- a/apps/files_encryption/l10n/ru.php +++ b/apps/files_encryption/l10n/ru.php @@ -1,7 +1,3 @@ "Шифрование", -"File encryption is enabled." => "Шифрование файла включено.", -"The following file types will not be encrypted:" => "Следующие типы файлов не будут зашифрованы:", -"Exclude the following file types from encryption:" => "Исключить следующие типы файлов из шифрованных:", -"None" => "Ничего" +"Encryption" => "Шифрование" ); diff --git a/apps/files_encryption/l10n/si_LK.php b/apps/files_encryption/l10n/si_LK.php index d9cec4b722..c55d5609a8 100644 --- a/apps/files_encryption/l10n/si_LK.php +++ b/apps/files_encryption/l10n/si_LK.php @@ -1,4 +1,3 @@ "ගුප්ත කේතනය", -"None" => "කිසිවක් නැත" +"Encryption" => "ගුප්ත කේතනය" ); diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index bebb623471..bf15777fc1 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -1,7 +1,3 @@ "Šifrovanie", -"File encryption is enabled." => "Šifrovanie súborov nastavené.", -"The following file types will not be encrypted:" => "Uvedené typy súborov nebudú šifrované:", -"Exclude the following file types from encryption:" => "Nešifrovať uvedené typy súborov", -"None" => "Žiadne" +"Encryption" => "Šifrovanie" ); diff --git a/apps/files_encryption/l10n/sl.php b/apps/files_encryption/l10n/sl.php index 4754e21214..272c6e1bb3 100644 --- a/apps/files_encryption/l10n/sl.php +++ b/apps/files_encryption/l10n/sl.php @@ -1,7 +1,3 @@ "Šifriranje", -"File encryption is enabled." => "Šifriranje datotek je omogočeno.", -"The following file types will not be encrypted:" => "Navedene vrste datotek ne bodo šifrirane:", -"Exclude the following file types from encryption:" => "Ne šifriraj navedenih vrst datotek:", -"None" => "Brez" +"Encryption" => "Šifriranje" ); diff --git a/apps/files_encryption/l10n/sr.php b/apps/files_encryption/l10n/sr.php index 91f7fc62a9..2e3698918f 100644 --- a/apps/files_encryption/l10n/sr.php +++ b/apps/files_encryption/l10n/sr.php @@ -1,4 +1,3 @@ "Шифровање", -"None" => "Ништа" +"Encryption" => "Шифровање" ); diff --git a/apps/files_encryption/l10n/sv.php b/apps/files_encryption/l10n/sv.php index e214a937a1..b008f7884f 100644 --- a/apps/files_encryption/l10n/sv.php +++ b/apps/files_encryption/l10n/sv.php @@ -1,7 +1,3 @@ "Kryptering", -"File encryption is enabled." => "Filkryptering är aktiverat.", -"The following file types will not be encrypted:" => "Följande filtyper kommer inte att krypteras:", -"Exclude the following file types from encryption:" => "Exkludera följande filtyper från kryptering:", -"None" => "Ingen" +"Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/ta_LK.php b/apps/files_encryption/l10n/ta_LK.php index 152e631d0f..adc5a69a1b 100644 --- a/apps/files_encryption/l10n/ta_LK.php +++ b/apps/files_encryption/l10n/ta_LK.php @@ -1,4 +1,3 @@ "மறைக்குறியீடு", -"None" => "ஒன்றுமில்லை" +"Encryption" => "மறைக்குறியீடு" ); diff --git a/apps/files_encryption/l10n/th_TH.php b/apps/files_encryption/l10n/th_TH.php index e46d249118..881e1d834b 100644 --- a/apps/files_encryption/l10n/th_TH.php +++ b/apps/files_encryption/l10n/th_TH.php @@ -1,4 +1,3 @@ "การเข้ารหัส", -"None" => "ไม่ต้อง" +"Encryption" => "การเข้ารหัส" ); diff --git a/apps/files_encryption/l10n/tr.php b/apps/files_encryption/l10n/tr.php index 6b42c757e6..e7481153b1 100644 --- a/apps/files_encryption/l10n/tr.php +++ b/apps/files_encryption/l10n/tr.php @@ -1,7 +1,3 @@ "Şifreleme", -"File encryption is enabled." => "Dosya şifreleme aktif.", -"The following file types will not be encrypted:" => "Belirtilen dosya tipleri şifrelenmeyecek:", -"Exclude the following file types from encryption:" => "Seçilen dosya tiplerini şifreleme:", -"None" => "Hiçbiri" +"Encryption" => "Şifreleme" ); diff --git a/apps/files_encryption/l10n/ug.php b/apps/files_encryption/l10n/ug.php index 34eeb373b3..278fdc2ce8 100644 --- a/apps/files_encryption/l10n/ug.php +++ b/apps/files_encryption/l10n/ug.php @@ -1,7 +1,3 @@ "شىفىرلاش", -"File encryption is enabled." => "ھۆججەت شىفىرلاش قوزغىتىلدى.", -"The following file types will not be encrypted:" => "تۆۋەندىكى ھۆججەت تىپلىرى شىفىرلانمايدۇ:", -"Exclude the following file types from encryption:" => "تۆۋەندىكى ھۆججەت تىپلىرى شىفىرلاشنىڭ سىرتىدا:", -"None" => "يوق" +"Encryption" => "شىفىرلاش" ); diff --git a/apps/files_encryption/l10n/uk.php b/apps/files_encryption/l10n/uk.php index d495714119..cdbbd8801a 100644 --- a/apps/files_encryption/l10n/uk.php +++ b/apps/files_encryption/l10n/uk.php @@ -1,7 +1,3 @@ "Шифрування", -"File encryption is enabled." => "Увімкнуто шифрування файлів.", -"The following file types will not be encrypted:" => "Такі типи файлів шифруватись не будуть:", -"Exclude the following file types from encryption:" => "Виключити наступні типи файлів з ​​шифрування:", -"None" => "Жоден" +"Encryption" => "Шифрування" ); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index 0a88d1b2db..34ab60796d 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,7 +1,3 @@ "Mã hóa", -"File encryption is enabled." => "Mã hóa file đã mở", -"The following file types will not be encrypted:" => "Loại file sau sẽ không được mã hóa", -"Exclude the following file types from encryption:" => "Việc mã hóa không bao gồm loại file sau", -"None" => "Không có gì hết" +"Encryption" => "Mã hóa" ); diff --git a/apps/files_encryption/l10n/zh_CN.GB2312.php b/apps/files_encryption/l10n/zh_CN.GB2312.php index 12d903e656..0a38a2ddf8 100644 --- a/apps/files_encryption/l10n/zh_CN.GB2312.php +++ b/apps/files_encryption/l10n/zh_CN.GB2312.php @@ -1,4 +1,3 @@ "加密", -"None" => "无" +"Encryption" => "加密" ); diff --git a/apps/files_encryption/l10n/zh_CN.php b/apps/files_encryption/l10n/zh_CN.php index 13fa95203e..0a38a2ddf8 100644 --- a/apps/files_encryption/l10n/zh_CN.php +++ b/apps/files_encryption/l10n/zh_CN.php @@ -1,7 +1,3 @@ "加密", -"File encryption is enabled." => "文件加密已启用.", -"The following file types will not be encrypted:" => "如下的文件类型将不会被加密:", -"Exclude the following file types from encryption:" => "从加密中排除如下的文件类型:", -"None" => "无" +"Encryption" => "加密" ); diff --git a/apps/files_encryption/l10n/zh_HK.php b/apps/files_encryption/l10n/zh_HK.php index 0c0b709fdc..0a38a2ddf8 100644 --- a/apps/files_encryption/l10n/zh_HK.php +++ b/apps/files_encryption/l10n/zh_HK.php @@ -1,6 +1,3 @@ "加密", -"File encryption is enabled." => "檔案加密已開啟", -"The following file types will not be encrypted:" => "以下文件類別將不會被加密", -"None" => "空" +"Encryption" => "加密" ); diff --git a/apps/files_encryption/l10n/zh_TW.php b/apps/files_encryption/l10n/zh_TW.php index 95e61b45dc..0a38a2ddf8 100644 --- a/apps/files_encryption/l10n/zh_TW.php +++ b/apps/files_encryption/l10n/zh_TW.php @@ -1,7 +1,3 @@ "加密", -"File encryption is enabled." => "檔案加密已被啟用", -"The following file types will not be encrypted:" => "以下的文件類型不會被加密:", -"Exclude the following file types from encryption:" => "從加密中排除的檔案類型:", -"None" => "無" +"Encryption" => "加密" ); diff --git a/apps/files_trashbin/l10n/bg_BG.php b/apps/files_trashbin/l10n/bg_BG.php index 31c5dcb4ef..288518e1a4 100644 --- a/apps/files_trashbin/l10n/bg_BG.php +++ b/apps/files_trashbin/l10n/bg_BG.php @@ -13,5 +13,6 @@ "{count} files" => "{count} файла", "Nothing in here. Your trash bin is empty!" => "Няма нищо. Кофата е празна!", "Restore" => "Възтановяване", -"Delete" => "Изтриване" +"Delete" => "Изтриване", +"Deleted Files" => "Изтрити файлове" ); diff --git a/apps/files_trashbin/l10n/id.php b/apps/files_trashbin/l10n/id.php index e06c66784f..62a63d515a 100644 --- a/apps/files_trashbin/l10n/id.php +++ b/apps/files_trashbin/l10n/id.php @@ -2,13 +2,13 @@ "Couldn't delete %s permanently" => "Tidak dapat menghapus permanen %s", "Couldn't restore %s" => "Tidak dapat memulihkan %s", "perform restore operation" => "jalankan operasi pemulihan", -"Error" => "kesalahan", +"Error" => "Galat", "delete file permanently" => "hapus berkas secara permanen", -"Delete permanently" => "hapus secara permanen", +"Delete permanently" => "Hapus secara permanen", "Name" => "Nama", "Deleted" => "Dihapus", -"1 folder" => "1 map", -"{count} folders" => "{count} map", +"1 folder" => "1 folder", +"{count} folders" => "{count} folder", "1 file" => "1 berkas", "{count} files" => "{count} berkas", "Nothing in here. Your trash bin is empty!" => "Tempat sampah anda kosong!", diff --git a/apps/files_trashbin/l10n/pl.php b/apps/files_trashbin/l10n/pl.php index 7fd1ab21ec..5c9f558f11 100644 --- a/apps/files_trashbin/l10n/pl.php +++ b/apps/files_trashbin/l10n/pl.php @@ -8,9 +8,9 @@ "Name" => "Nazwa", "Deleted" => "Usunięte", "1 folder" => "1 folder", -"{count} folders" => "{count} foldery", +"{count} folders" => "Ilość folderów: {count}", "1 file" => "1 plik", -"{count} files" => "{count} pliki", +"{count} files" => "Ilość plików: {count}", "Nothing in here. Your trash bin is empty!" => "Nic tu nie ma. Twój kosz jest pusty!", "Restore" => "Przywróć", "Delete" => "Usuń", diff --git a/apps/files_trashbin/l10n/pt_PT.php b/apps/files_trashbin/l10n/pt_PT.php index 7dfe610466..ba85158b70 100644 --- a/apps/files_trashbin/l10n/pt_PT.php +++ b/apps/files_trashbin/l10n/pt_PT.php @@ -13,6 +13,6 @@ "{count} files" => "{count} ficheiros", "Nothing in here. Your trash bin is empty!" => "Não hà ficheiros. O lixo está vazio!", "Restore" => "Restaurar", -"Delete" => "Apagar", +"Delete" => "Eliminar", "Deleted Files" => "Ficheiros Apagados" ); diff --git a/apps/files_trashbin/l10n/ro.php b/apps/files_trashbin/l10n/ro.php index c03ef600f3..3af21b7e3f 100644 --- a/apps/files_trashbin/l10n/ro.php +++ b/apps/files_trashbin/l10n/ro.php @@ -1,5 +1,6 @@ "Eroare", +"Delete permanently" => "Stergere permanenta", "Name" => "Nume", "1 folder" => "1 folder", "{count} folders" => "{count} foldare", diff --git a/apps/files_trashbin/l10n/sk_SK.php b/apps/files_trashbin/l10n/sk_SK.php index 7203f4c75f..7cef36ef1c 100644 --- a/apps/files_trashbin/l10n/sk_SK.php +++ b/apps/files_trashbin/l10n/sk_SK.php @@ -5,7 +5,7 @@ "Error" => "Chyba", "delete file permanently" => "trvalo zmazať súbor", "Delete permanently" => "Zmazať trvalo", -"Name" => "Meno", +"Name" => "Názov", "Deleted" => "Zmazané", "1 folder" => "1 priečinok", "{count} folders" => "{count} priečinkov", diff --git a/apps/user_ldap/l10n/es.php b/apps/user_ldap/l10n/es.php index 7c72cc8e63..31d43288e5 100644 --- a/apps/user_ldap/l10n/es.php +++ b/apps/user_ldap/l10n/es.php @@ -1,19 +1,21 @@ "Ocurrió un fallo al borrar las asignaciones.", "Failed to delete the server configuration" => "No se pudo borrar la configuración del servidor", "The configuration is valid and the connection could be established!" => "La configuración es válida y la conexión puede establecerse!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "La configuración es válida, pero falló el Enlace. Por favor, compruebe la configuración del servidor y las credenciales.", "The configuration is invalid. Please look in the ownCloud log for further details." => "La configuración no es válida. Por favor, busque en el log de ownCloud para más detalles.", "Deletion failed" => "Falló el borrado", -"Take over settings from recent server configuration?" => "Hacerse cargo de los ajustes de configuración del servidor reciente?", +"Take over settings from recent server configuration?" => "¿Asumir los ajustes actuales de la configuración del servidor?", "Keep settings?" => "Mantener la configuración?", "Cannot add server configuration" => "No se puede añadir la configuración del servidor", +"mappings cleared" => "Asignaciones borradas", "Success" => "Éxito", "Error" => "Error", "Connection test succeeded" => "La prueba de conexión fue exitosa", "Connection test failed" => "La prueba de conexión falló", "Do you really want to delete the current Server Configuration?" => "¿Realmente desea eliminar la configuración actual del servidor?", "Confirm Deletion" => "Confirmar eliminación", -"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Advertencia: Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.", +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Advertencia: Las aplicaciones user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.", "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Advertencia: El módulo LDAP de PHP no está instalado, el sistema no funcionará. Por favor consulte al administrador del sistema para instalarlo.", "Server configuration" => "Configuración del Servidor", "Add Server Configuration" => "Agregar configuracion del servidor", @@ -28,30 +30,30 @@ "For anonymous access, leave DN and Password empty." => "Para acceso anónimo, deje DN y contraseña vacíos.", "User Login Filter" => "Filtro de inicio de sesión de usuario", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define el filtro a aplicar cuando se ha realizado un login. %%uid remplazrá el nombre de usuario en el proceso de login.", -"use %%uid placeholder, e.g. \"uid=%%uid\"" => "usar %%uid como placeholder, ej: \"uid=%%uid\"", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "usar %%uid como comodín, ej: \"uid=%%uid\"", "User List Filter" => "Lista de filtros de usuario", "Defines the filter to apply, when retrieving users." => "Define el filtro a aplicar, cuando se obtienen usuarios.", -"without any placeholder, e.g. \"objectClass=person\"." => "Sin placeholder, ej: \"objectClass=person\".", +"without any placeholder, e.g. \"objectClass=person\"." => "Sin comodines, ej: \"objectClass=person\".", "Group Filter" => "Filtro de grupo", "Defines the filter to apply, when retrieving groups." => "Define el filtro a aplicar, cuando se obtienen grupos.", -"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Con cualquier placeholder, ej: \"objectClass=posixGroup\".", -"Connection Settings" => "Configuracion de coneccion", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "sin comodines, ej: \"objectClass=posixGroup\".", +"Connection Settings" => "Configuración de conexión", "Configuration Active" => "Configuracion activa", "When unchecked, this configuration will be skipped." => "Cuando deseleccione, esta configuracion sera omitida.", "Port" => "Puerto", -"Backup (Replica) Host" => "Host para backup (Replica)", -"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Dar un host de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD.", -"Backup (Replica) Port" => "Puerto para backup (Replica)", +"Backup (Replica) Host" => "Servidor de copia de seguridad (Replica)", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD.", +"Backup (Replica) Port" => "Puerto para copias de seguridad (Replica)", "Disable Main Server" => "Deshabilitar servidor principal", -"When switched on, ownCloud will only connect to the replica server." => "Cuando se inicie, ownCloud unicamente estara conectado al servidor replica", +"When switched on, ownCloud will only connect to the replica server." => "Cuando se inicie, ownCloud unicamente conectará al servidor replica", "Use TLS" => "Usar TLS", -"Do not use it additionally for LDAPS connections, it will fail." => "No usar adicionalmente para conecciones LDAPS, estas fallaran", -"Case insensitve LDAP server (Windows)" => "Servidor de LDAP sensible a mayúsculas/minúsculas (Windows)", +"Do not use it additionally for LDAPS connections, it will fail." => "No lo use para conexiones LDAPS, Fallará.", +"Case insensitve LDAP server (Windows)" => "Servidor de LDAP no sensible a mayúsculas/minúsculas (Windows)", "Turn off SSL certificate validation." => "Apagar la validación por certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la conexión sólo funciona con esta opción, importe el certificado SSL del servidor LDAP en su servidor ownCloud.", "Not recommended, use for testing only." => "No recomendado, sólo para pruebas.", "Cache Time-To-Live" => "Cache TTL", -"in seconds. A change empties the cache." => "en segundos. Un cambio vacía la cache.", +"in seconds. A change empties the cache." => "en segundos. Un cambio vacía la caché.", "Directory Settings" => "Configuracion de directorio", "User Display Name Field" => "Campo de nombre de usuario a mostrar", "The LDAP attribute to use to generate the user`s ownCloud name." => "El atributo LDAP a usar para generar el nombre de usuario de ownCloud.", @@ -73,7 +75,15 @@ "User Home Folder Naming Rule" => "Regla para la carpeta Home de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Vacío para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", "Internal Username" => "Nombre de usuario interno", -"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud utiliza nombre de usuarios para almacenar y asignar (meta) datos. Con el fin de identificar con precisión y reconocer usuarios, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario de ownCloud a usuario LDAP. El nombre de usuario creado se asigna al UUID del usuario LDAP. Además el DN se almacena en caché más bien para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si la DN cambia, los cambios serán encontrados por ownCloud. El nombre interno de ownCloud se utiliza para todo en ownCloud. Eliminando las asignaciones tendrá restos por todas partes. Eliminando las asignaciones no es sensible a la configuración, que afecta a todas las configuraciones de LDAP! No limpiar nunca las asignaciones en un entorno de producción. Sólo borrar asignaciones en una situación de prueba o experimental.", +"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder in ownCloud. It is also a port of remote URLs, for instance for all *DAV services. With this setting, the default behaviour can be overriden. To achieve a similar behaviour as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users." => "Por defecto el nombre de usuario interno será creado desde el atributo UUID. Esto asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. En el nombre de usuario interno sólo se pueden usar estos caracteres: [a-zA-Z0-9_.@-]. Otros caracteres son sustituidos por su correspondiente en ASCII o simplemente quitados. En coincidencias un número será añadido o incrementado. El nombre de usuario interno es usado para identificar un usuario internamente. Es también el nombre por defecto para la carpeta personal del usuario in ownCloud. También es un puerto de URLs remotas, por ejemplo, para todos los servicios *DAV. Con esta configuración el comportamiento por defecto puede ser cambiado. Para conseguir un comportamiento similar a como era antes de ownCloud 5, introduce el atributo del nombre en pantalla del usuario en el siguiente campo. Déjalo vacío para el comportamiento por defecto. Los cambios solo tendrán efecto en los nuevos usuarios LDAP.", +"Internal Username Attribute:" => "Atributo Nombre de usuario Interno:", +"Override UUID detection" => "Sobrescribir la detección UUID", +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behaviour. Changes will have effect only on newly mapped (added) LDAP users and groups." => "Por defecto, ownCloud autodetecta el atributo UUID. El atributo UUID es usado para identificar indudablemente usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no ha sido especificado otro comportamiento arriba. Puedes sobrescribir la configuración y pasar un atributo de tu elección. Debes asegurarte de que el atributo de tu elección sea accesible por los usuarios y grupos y ser único. Déjalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los nuevos usuarios y grupos de LDAP.", +"UUID Attribute:" => "Atributo UUID:", +"Username-LDAP User Mapping" => "Asignación del Nombre de usuario de un usuario LDAP", +"ownCloud uses usernames to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from ownCloud username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found by ownCloud. The internal ownCloud name is used all over in ownCloud. Clearing the Mappings will have leftovers everywhere. Clearing the Mappings is not configuration sensitive, it affects all LDAP configurations! Do never clear the mappings in a production environment. Only clear mappings in a testing or experimental stage." => "ownCloud utiliza nombres de usuario para almacenar y asignar (meta) datos. Con el fin de identificar con precisión y reconocer usuarios, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario de ownCloud a usuario LDAP. El nombre de usuario creado se asigna al UUID del usuario LDAP. Además el DN se almacena en caché más bien para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si la DN cambia, los cambios serán encontrados por ownCloud. El nombre interno de ownCloud se utiliza para todo en ownCloud. Eliminando las asignaciones tendrá restos por todas partes. Eliminando las asignaciones no es sensible a la configuración, que afecta a todas las configuraciones de LDAP! No limpiar nunca las asignaciones en un entorno de producción. Sólo borrar asignaciones en una situación de prueba o experimental.", +"Clear Username-LDAP User Mapping" => "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", +"Clear Groupname-LDAP Group Mapping" => "Borrar la asignación de los Nombres de grupo de los grupos de LDAP", "Test Configuration" => "Configuración de prueba", "Help" => "Ayuda" ); diff --git a/apps/user_ldap/l10n/pl.php b/apps/user_ldap/l10n/pl.php index a7a831e3e5..29c814b5fb 100644 --- a/apps/user_ldap/l10n/pl.php +++ b/apps/user_ldap/l10n/pl.php @@ -1,4 +1,5 @@ "Nie udało się wyczyścić mapowania.", "Failed to delete the server configuration" => "Nie można usunąć konfiguracji serwera", "The configuration is valid and the connection could be established!" => "Konfiguracja jest prawidłowa i można ustanowić połączenie!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.", @@ -7,6 +8,7 @@ "Take over settings from recent server configuration?" => "Przejmij ustawienia z ostatnich konfiguracji serwera?", "Keep settings?" => "Zachować ustawienia?", "Cannot add server configuration" => "Nie można dodać konfiguracji serwera", +"mappings cleared" => "Mapoanie wyczyszczone", "Success" => "Sukces", "Error" => "Błąd", "Connection test succeeded" => "Test połączenia udany", @@ -72,6 +74,11 @@ "Email Field" => "Pole email", "User Home Folder Naming Rule" => "Reguły nazewnictwa folderu domowego użytkownika", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", +"Internal Username" => "Wewnętrzna nazwa użytkownika", +"Internal Username Attribute:" => "Wewnętrzny atrybut nazwy uzżytkownika:", +"Override UUID detection" => "Zastąp wykrywanie UUID", +"UUID Attribute:" => "Atrybuty UUID:", +"Username-LDAP User Mapping" => "Mapowanie użytkownika LDAP", "Test Configuration" => "Konfiguracja testowa", "Help" => "Pomoc" ); diff --git a/core/l10n/ca.php b/core/l10n/ca.php index 6a5a6ea542..323ef7997f 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -46,6 +46,7 @@ "years ago" => "anys enrere", "Choose" => "Escull", "Cancel" => "Cancel·la", +"Error loading file picker template" => "Error en carregar la plantilla del seleccionador de fitxers", "Yes" => "Sí", "No" => "No", "Ok" => "D'acord", diff --git a/core/l10n/es.php b/core/l10n/es.php index 2d9adb15cc..4b8d5c7b18 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -46,6 +46,7 @@ "years ago" => "hace años", "Choose" => "Seleccionar", "Cancel" => "Cancelar", +"Error loading file picker template" => "Error cargando la plantilla del seleccionador de archivos", "Yes" => "Sí", "No" => "No", "Ok" => "Aceptar", diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index d298b74fc0..fd05062408 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -46,6 +46,7 @@ "years ago" => "aastat tagasi", "Choose" => "Vali", "Cancel" => "Loobu", +"Error loading file picker template" => "Viga failivalija malli laadimisel", "Yes" => "Jah", "No" => "Ei", "Ok" => "Ok", diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 3e05f7ec3f..9865269544 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -46,6 +46,7 @@ "years ago" => "anos atrás", "Choose" => "Escoller", "Cancel" => "Cancelar", +"Error loading file picker template" => "Produciuse un erro ao cargar o modelo do selector de ficheiros", "Yes" => "Si", "No" => "Non", "Ok" => "Aceptar", diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 5f25445080..8395a1d272 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -46,6 +46,7 @@ "years ago" => "年前", "Choose" => "選択", "Cancel" => "キャンセル", +"Error loading file picker template" => "ファイルピッカーのテンプレートの読み込みエラー", "Yes" => "はい", "No" => "いいえ", "Ok" => "OK", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 335dda6f4d..045da821f2 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -46,6 +46,7 @@ "years ago" => "lat temu", "Choose" => "Wybierz", "Cancel" => "Anuluj", +"Error loading file picker template" => "Błąd podczas ładowania pliku wybranego szablonu", "Yes" => "Tak", "No" => "Nie", "Ok" => "OK", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index 9ce255980c..59c8f69aee 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -46,6 +46,7 @@ "years ago" => "anos atrás", "Choose" => "Escolha", "Cancel" => "Cancelar", +"Error loading file picker template" => "Template selecionador Erro ao carregar arquivo", "Yes" => "Sim", "No" => "Não", "Ok" => "Ok", diff --git a/l10n/af_ZA/core.po b/l10n/af_ZA/core.po index 7474a030a0..a624008674 100644 --- a/l10n/af_ZA/core.po +++ b/l10n/af_ZA/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/files.po b/l10n/af_ZA/files.po index a1b17ff718..159278587d 100644 --- a/l10n/af_ZA/files.po +++ b/l10n/af_ZA/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/files_encryption.po b/l10n/af_ZA/files_encryption.po index 36aa676dfb..8d8d6032e0 100644 --- a/l10n/af_ZA/files_encryption.po +++ b/l10n/af_ZA/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: af_ZA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/af_ZA/files_external.po b/l10n/af_ZA/files_external.po index 661213122b..30a7d76922 100644 --- a/l10n/af_ZA/files_external.po +++ b/l10n/af_ZA/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/files_sharing.po b/l10n/af_ZA/files_sharing.po index 268f465228..934d01cdeb 100644 --- a/l10n/af_ZA/files_sharing.po +++ b/l10n/af_ZA/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/files_trashbin.po b/l10n/af_ZA/files_trashbin.po index b98068957e..59b6ea0942 100644 --- a/l10n/af_ZA/files_trashbin.po +++ b/l10n/af_ZA/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/files_versions.po b/l10n/af_ZA/files_versions.po index d21eec3f1e..a663f48e17 100644 --- a/l10n/af_ZA/files_versions.po +++ b/l10n/af_ZA/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/lib.po b/l10n/af_ZA/lib.po index 007aa81cc8..f7cb1209ce 100644 --- a/l10n/af_ZA/lib.po +++ b/l10n/af_ZA/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/settings.po b/l10n/af_ZA/settings.po index 641b7e82fc..868778c6d7 100644 --- a/l10n/af_ZA/settings.po +++ b/l10n/af_ZA/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:17+0200\n" -"PO-Revision-Date: 2013-04-26 08:28+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/user_webdavauth.po b/l10n/af_ZA/user_webdavauth.po index bb29159478..62bfbe01b3 100644 --- a/l10n/af_ZA/user_webdavauth.po +++ b/l10n/af_ZA/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/core.po b/l10n/ar/core.po index c1ec6581da..d06b5bff99 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index dd86ceb4bc..d45bfe2245 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_encryption.po b/l10n/ar/files_encryption.po index cde78c5cd1..7c86c6d247 100644 --- a/l10n/ar/files_encryption.po +++ b/l10n/ar/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "التشفير" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "تشفير الملفات فعال." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "الملفات الاتية لن يتم تشفيرها:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "إستثناء أنواع الملفات الاتية من التشفير: " +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "لا شيء" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ar/files_external.po b/l10n/ar/files_external.po index bbe335948c..73ac33ef6f 100644 --- a/l10n/ar/files_external.po +++ b/l10n/ar/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 369e400f5f..8b8c2471a5 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index 97578e2ef9..70e2c9c9ff 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_versions.po b/l10n/ar/files_versions.po index 58b505fc60..9066fe25fa 100644 --- a/l10n/ar/files_versions.po +++ b/l10n/ar/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index 07c5b6fd22..cdd85e6e09 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index de2dc8b777..a415162350 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "تراجع" msgid "Unable to remove user" msgstr "تعذر حذف المستخدم" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "مجموعات" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "مدير المجموعة" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "إلغاء" @@ -153,15 +153,15 @@ msgstr "إلغاء" msgid "add group" msgstr "اضافة مجموعة" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "يجب ادخال اسم مستخدم صحيح" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "حصل خطأ اثناء انشاء مستخدم" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "يجب ادخال كلمة مرور صحيحة" @@ -399,7 +399,7 @@ msgstr "احصل على التطبيقات لمزامنة ملفاتك" msgid "Show First Run Wizard again" msgstr "ابدأ خطوات بداية التشغيل من جديد" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "كلمة المرور" @@ -423,7 +423,7 @@ msgstr "كلمات سر جديدة" msgid "Change password" msgstr "عدل كلمة السر" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "اسم الحساب" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "إستخدم هذا العنوان للإتصال بـ ownCloud في مدير الملفات" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "اسم الدخول" @@ -463,30 +463,34 @@ msgstr "اسم الدخول" msgid "Create" msgstr "انشئ" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "وحدة التخزين الافتراضية" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "غير محدود" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "شيء آخر" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "وحدة التخزين" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "تغيير اسم الحساب" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "اعداد كلمة مرور جديدة" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "افتراضي" diff --git a/l10n/ar/user_ldap.po b/l10n/ar/user_ldap.po index 9674f31fb6..2e595ac641 100644 --- a/l10n/ar/user_ldap.po +++ b/l10n/ar/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/user_webdavauth.po b/l10n/ar/user_webdavauth.po index 7defa1d4b0..0b90ad151d 100644 --- a/l10n/ar/user_webdavauth.po +++ b/l10n/ar/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. -# , 2012. -# , 2013. +# TYMAH , 2012 +# aboodilankaboot, 2012 +# blackcoder , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/core.po b/l10n/be/core.po index b35189b41a..5a28e4f3e4 100644 --- a/l10n/be/core.po +++ b/l10n/be/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/be/files.po b/l10n/be/files.po index de9d057f6a..ac51487cf2 100644 --- a/l10n/be/files.po +++ b/l10n/be/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/files_encryption.po b/l10n/be/files_encryption.po index e69ef2d14d..229b8b326a 100644 --- a/l10n/be/files_encryption.po +++ b/l10n/be/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: be\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/be/files_external.po b/l10n/be/files_external.po index 142d2eff37..c6f284fc40 100644 --- a/l10n/be/files_external.po +++ b/l10n/be/files_external.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/files_sharing.po b/l10n/be/files_sharing.po index 03a80d8b42..b09ac51eb4 100644 --- a/l10n/be/files_sharing.po +++ b/l10n/be/files_sharing.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/files_trashbin.po b/l10n/be/files_trashbin.po index 1953d1cd3d..41c6a308ab 100644 --- a/l10n/be/files_trashbin.po +++ b/l10n/be/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/files_versions.po b/l10n/be/files_versions.po index e194db5f43..2ec579f88f 100644 --- a/l10n/be/files_versions.po +++ b/l10n/be/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/lib.po b/l10n/be/lib.po index 284f8eeb6a..7fe412203c 100644 --- a/l10n/be/lib.po +++ b/l10n/be/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: be\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/be/settings.po b/l10n/be/settings.po index 9da6989831..77d13b3886 100644 --- a/l10n/be/settings.po +++ b/l10n/be/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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" @@ -120,52 +120,52 @@ msgstr "" msgid "Updated" msgstr "" -#: js/personal.js:115 +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" -#: personal.php:29 personal.php:30 +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" @@ -324,11 +324,11 @@ msgstr "" msgid "Less" msgstr "" -#: templates/admin.php:235 templates/personal.php:100 +#: templates/admin.php:235 templates/personal.php:105 msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:103 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/be/user_webdavauth.po b/l10n/be/user_webdavauth.po index 9e0304b10b..21fb9c8c46 100644 --- a/l10n/be/user_webdavauth.po +++ b/l10n/be/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/owncloud/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index e2a9f071ad..21545c799d 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 2dbb38e8b9..cc86637f91 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_encryption.po b/l10n/bg_BG/files_encryption.po index 859b65c0eb..fe26f583d1 100644 --- a/l10n/bg_BG/files_encryption.po +++ b/l10n/bg_BG/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Криптиране" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Няма" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index 00fc8947a1..68c2ba58ed 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index 7c4ce74f7a..28d6ed9c19 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index 4784eccbdd..95abefdf71 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_versions.po b/l10n/bg_BG/files_versions.po index d01c393db1..1d86aa6d8d 100644 --- a/l10n/bg_BG/files_versions.po +++ b/l10n/bg_BG/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index 9926586c63..b59ef966a8 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 4a48feafd4..bec96510ec 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "възтановяване" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Групи" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Изтриване" @@ -153,15 +153,15 @@ msgstr "Изтриване" msgid "add group" msgstr "нова група" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "Покажи настройките за първоначално зареждане отново" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Парола" @@ -423,7 +423,7 @@ msgstr "Нова парола" msgid "Change password" msgstr "Промяна на паролата" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Екранно име" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Потребител" @@ -463,30 +463,34 @@ msgstr "Потребител" msgid "Create" msgstr "Създаване" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Хранилище по подразбиране" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Неограничено" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Други" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Хранилище" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "По подразбиране" diff --git a/l10n/bg_BG/user_ldap.po b/l10n/bg_BG/user_ldap.po index 523a9f3f6b..38caf68df4 100644 --- a/l10n/bg_BG/user_ldap.po +++ b/l10n/bg_BG/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/user_webdavauth.po b/l10n/bg_BG/user_webdavauth.po index 2d321a7650..fb9b137fdf 100644 --- a/l10n/bg_BG/user_webdavauth.po +++ b/l10n/bg_BG/user_webdavauth.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-04-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-23 09:40+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: Stefan Ilivanov \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index 04357e7be9..31b5995fa8 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index ef080f3a2c..53e2fd039b 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_encryption.po b/l10n/bn_BD/files_encryption.po index a2ee8c0db4..08c97a096b 100644 --- a/l10n/bn_BD/files_encryption.po +++ b/l10n/bn_BD/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "সংকেতায়ন" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "কোনটিই নয়" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/bn_BD/files_external.po b/l10n/bn_BD/files_external.po index 756e68e648..ac48988b3d 100644 --- a/l10n/bn_BD/files_external.po +++ b/l10n/bn_BD/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index 1125bc4119..b934234300 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index 941d663b7b..2e9364c8c3 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_versions.po b/l10n/bn_BD/files_versions.po index 2edd5f1a35..7bc652b6c8 100644 --- a/l10n/bn_BD/files_versions.po +++ b/l10n/bn_BD/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index c0026153b0..6977a5cd3f 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index 69adcbebf6..a2167f9e17 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "ক্রিয়া প্রত্যাহার" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "গোষ্ঠীসমূহ" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "গোষ্ঠী প্রশাসক" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "মুছে" @@ -153,15 +153,15 @@ msgstr "মুছে" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "কূটশব্দ" @@ -423,7 +423,7 @@ msgstr "নতুন কূটশব্দ" msgid "Change password" msgstr "কূটশব্দ পরিবর্তন করুন" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "আপনার ownCloud এ সংযুক্ত হতে এই ঠিকানাটি আপনার ফাইল ব্যবস্থাপকে ব্যবহার করুন" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "তৈরী কর" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "পূর্বনির্ধারিত সংরক্ষণাগার" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "অসীম" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "অন্যান্য" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "সংরক্ষণাগার" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "পূর্বনির্ধারিত" diff --git a/l10n/bn_BD/user_ldap.po b/l10n/bn_BD/user_ldap.po index 95e7905df4..06e69066c0 100644 --- a/l10n/bn_BD/user_ldap.po +++ b/l10n/bn_BD/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/user_webdavauth.po b/l10n/bn_BD/user_webdavauth.po index e5c329e580..1768f6474f 100644 --- a/l10n/bn_BD/user_webdavauth.po +++ b/l10n/bn_BD/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Shubhra Paul , 2013. +# Shubhra Paul , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index f507c90fb8..cc8ad021d0 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -4,12 +4,13 @@ # # Translators: # rogerc, 2013 +# rogerc, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -223,7 +224,7 @@ msgstr "Cancel·la" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Error en carregar la plantilla del seleccionador de fitxers" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 04981726ab..7335f12d18 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -262,7 +262,7 @@ msgstr "Desa" #: templates/index.php:7 msgid "New" -msgstr "Nova" +msgstr "Nou" #: templates/index.php:10 msgid "Text file" diff --git a/l10n/ca/files_encryption.po b/l10n/ca/files_encryption.po index 98fd3185f0..b2b602fcda 100644 --- a/l10n/ca/files_encryption.po +++ b/l10n/ca/files_encryption.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-03 02:02+0200\n" -"PO-Revision-Date: 2013-05-02 10:40+0000\n" -"Last-Translator: Jordi Vilalta Prat \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,22 +18,77 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Xifrat" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "El xifrat de fitxers està activat." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Els tipus de fitxers següents no es xifraran:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Exclou els tipus de fitxers següents del xifratge:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Cap" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ca/files_external.po b/l10n/ca/files_external.po index 8891a75a0e..57707cb496 100644 --- a/l10n/ca/files_external.po +++ b/l10n/ca/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index 74044813bc..dbae0e9248 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index 42c6cf5a92..36d1753b85 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_versions.po b/l10n/ca/files_versions.po index 624a5da1e1..c1e4d1db8d 100644 --- a/l10n/ca/files_versions.po +++ b/l10n/ca/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 0bacb709f9..74675cf556 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 1fdca4c9dc..64eb8eea68 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: rogerc\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "desfés" msgid "Unable to remove user" msgstr "No s'ha pogut eliminar l'usuari" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grups" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grup Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Esborra" @@ -154,15 +154,15 @@ msgstr "Esborra" msgid "add group" msgstr "afegeix grup" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Heu de facilitar un nom d'usuari vàlid" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Error en crear l'usuari" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Heu de facilitar una contrasenya vàlida" @@ -400,7 +400,7 @@ msgstr "Obtén les aplicacions per sincronitzar fitxers" msgid "Show First Run Wizard again" msgstr "Torna a mostrar l'assistent de primera execució" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Contrasenya" @@ -424,7 +424,7 @@ msgstr "Contrasenya nova" msgid "Change password" msgstr "Canvia la contrasenya" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nom a mostrar" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Useu aquesta adreça per connectar amb ownCloud des del gestor de fitxers" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nom d'accés" @@ -464,30 +464,34 @@ msgstr "Nom d'accés" msgid "Create" msgstr "Crea" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Emmagatzemament per defecte" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Il·limitat" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Un altre" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Emmagatzemament" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "canvia el nom a mostrar" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "estableix nova contrasenya" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Per defecte" diff --git a/l10n/ca/user_ldap.po b/l10n/ca/user_ldap.po index 10f3f0166d..8acfede6fd 100644 --- a/l10n/ca/user_ldap.po +++ b/l10n/ca/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/user_webdavauth.po b/l10n/ca/user_webdavauth.po index bcde4299fd..66136ea54a 100644 --- a/l10n/ca/user_webdavauth.po +++ b/l10n/ca/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012-2013. +# rogerc, 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index be3bbdc893..ab49706a17 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 7a36587eeb..757ea02759 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_encryption.po b/l10n/cs_CZ/files_encryption.po index af7d094cfb..ab7ce4acce 100644 --- a/l10n/cs_CZ/files_encryption.po +++ b/l10n/cs_CZ/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Šifrování" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Šifrování je povoleno." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Následující typy souborů nebudou šifrovány:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Vyjmout následující typy souborů ze šifrování:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Žádné" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index 927cfd451c..acc653dc36 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index ce9e280736..3e13acd54c 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index a7f3b6ea85..29df8f8843 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_versions.po b/l10n/cs_CZ/files_versions.po index 03e51b990a..11930a8b79 100644 --- a/l10n/cs_CZ/files_versions.po +++ b/l10n/cs_CZ/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index ad1a269592..89c5471f48 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 64f7c79490..83ef8d81f5 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "zpět" msgid "Unable to remove user" msgstr "Nelze odebrat uživatele" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Skupiny" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Správa skupiny" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Smazat" @@ -153,15 +153,15 @@ msgstr "Smazat" msgid "add group" msgstr "přidat skupinu" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Musíte zadat platné uživatelské jméno" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Chyba při vytváření užiatele" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Musíte zadat platné heslo" @@ -399,7 +399,7 @@ msgstr "Získat aplikace pro synchronizaci vašich souborů" msgid "Show First Run Wizard again" msgstr "Znovu zobrazit průvodce prvním spuštěním" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Heslo" @@ -423,7 +423,7 @@ msgstr "Nové heslo" msgid "Change password" msgstr "Změnit heslo" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Zobrazované jméno" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Použijte tuto adresu pro připojení k vašemu ownCloud skrze správce souborů" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Přihlašovací jméno" @@ -463,30 +463,34 @@ msgstr "Přihlašovací jméno" msgid "Create" msgstr "Vytvořit" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Výchozí úložiště" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Neomezeně" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Jiný" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Úložiště" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "změnit zobrazované jméno" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "nastavit nové heslo" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Výchozí" diff --git a/l10n/cs_CZ/user_ldap.po b/l10n/cs_CZ/user_ldap.po index 60c1780300..165b5faf3e 100644 --- a/l10n/cs_CZ/user_ldap.po +++ b/l10n/cs_CZ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/user_webdavauth.po b/l10n/cs_CZ/user_webdavauth.po index a7466ca6bf..420758436b 100644 --- a/l10n/cs_CZ/user_webdavauth.po +++ b/l10n/cs_CZ/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Tomáš Chvátal , 2012-2013. +# Tomáš Chvátal , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/core.po b/l10n/cy_GB/core.po index 7d0fc54707..d179fe43c4 100644 --- a/l10n/cy_GB/core.po +++ b/l10n/cy_GB/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index e6532a72d4..5c57b58b14 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_encryption.po b/l10n/cy_GB/files_encryption.po index 0d6bc4131f..abca22ad96 100644 --- a/l10n/cy_GB/files_encryption.po +++ b/l10n/cy_GB/files_encryption.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-01 01:59+0200\n" -"PO-Revision-Date: 2013-04-30 15:40+0000\n" -"Last-Translator: ubuntucymraeg \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,22 +18,77 @@ msgstr "" "Language: cy_GB\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Amgryptiad" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Galluogwyd amgryptio ffeiliau." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Ni fydd ffeiliau o'r math yma'n cael eu hamgryptio:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Eithrio'r mathau canlynol o ffeiliau rhag cael eu hamgryptio:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Dim" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/cy_GB/files_external.po b/l10n/cy_GB/files_external.po index 8eedfc37f7..c948d12813 100644 --- a/l10n/cy_GB/files_external.po +++ b/l10n/cy_GB/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index a7f0caca27..2072c20c29 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_trashbin.po b/l10n/cy_GB/files_trashbin.po index 45e6ca9476..79ae4020be 100644 --- a/l10n/cy_GB/files_trashbin.po +++ b/l10n/cy_GB/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_versions.po b/l10n/cy_GB/files_versions.po index 2d178293a3..ee2268ca74 100644 --- a/l10n/cy_GB/files_versions.po +++ b/l10n/cy_GB/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/lib.po b/l10n/cy_GB/lib.po index e29f1d19e6..b79791a04f 100644 --- a/l10n/cy_GB/lib.po +++ b/l10n/cy_GB/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/settings.po b/l10n/cy_GB/settings.po index 4680367639..77867e9ddb 100644 --- a/l10n/cy_GB/settings.po +++ b/l10n/cy_GB/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "dadwneud" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grwpiau" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Dileu" @@ -153,15 +153,15 @@ msgstr "Dileu" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Cyfrinair" @@ -423,7 +423,7 @@ msgstr "Cyfrinair newydd" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Arall" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/cy_GB/user_ldap.po b/l10n/cy_GB/user_ldap.po index b8246f1cea..540e4a8bda 100644 --- a/l10n/cy_GB/user_ldap.po +++ b/l10n/cy_GB/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/user_webdavauth.po b/l10n/cy_GB/user_webdavauth.po index 38625a8e00..2f567efac8 100644 --- a/l10n/cy_GB/user_webdavauth.po +++ b/l10n/cy_GB/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/core.po b/l10n/da/core.po index 3d81bf96c9..783b792b27 100644 --- a/l10n/da/core.po +++ b/l10n/da/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files.po b/l10n/da/files.po index 57a44c5f98..3c842f56da 100644 --- a/l10n/da/files.po +++ b/l10n/da/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_encryption.po b/l10n/da/files_encryption.po index 9d253656f2..8f86ac81bf 100644 --- a/l10n/da/files_encryption.po +++ b/l10n/da/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Kryptering" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Fil kryptering aktiveret." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "De følgende filtyper vil ikke blive krypteret:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Ekskluder de følgende fil typer fra kryptering:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ingen" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/da/files_external.po b/l10n/da/files_external.po index 3a75895703..ae8fd2d4df 100644 --- a/l10n/da/files_external.po +++ b/l10n/da/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index a51c29810a..0c457353d8 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index 909dec96ad..d288474c11 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_versions.po b/l10n/da/files_versions.po index 4dcf5e81f4..23356455f8 100644 --- a/l10n/da/files_versions.po +++ b/l10n/da/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index 021991572a..420454de10 100644 --- a/l10n/da/lib.po +++ b/l10n/da/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 1fc6fbb763..c9d5248fae 100644 --- a/l10n/da/settings.po +++ b/l10n/da/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Ole Holm Frandsen \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "fortryd" msgid "Unable to remove user" msgstr "Kan ikke fjerne bruger" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupper" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppe Administrator" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Slet" @@ -154,15 +154,15 @@ msgstr "Slet" msgid "add group" msgstr "Tilføj gruppe" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Et gyldigt brugernavn skal angives" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Fejl ved oprettelse af bruger" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "En gyldig adgangskode skal angives" @@ -400,7 +400,7 @@ msgstr "Hent applikationerne for at synkronisere dine filer" msgid "Show First Run Wizard again" msgstr "Vis Første Kørsels Guiden igen." -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Kodeord" @@ -424,7 +424,7 @@ msgstr "Nyt kodeord" msgid "Change password" msgstr "Skift kodeord" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Skærmnavn" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Brug denne adresse til at oprette forbindelse til din ownCloud i din filstyring" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Loginnavn" @@ -464,30 +464,34 @@ msgstr "Loginnavn" msgid "Create" msgstr "Ny" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Standard opbevaring" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ubegrænset" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Andet" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Opbevaring" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "skift skærmnavn" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "skift kodeord" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Standard" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 9639ba3b5f..542012b668 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/user_webdavauth.po b/l10n/da/user_webdavauth.po index 0590c136e9..9c0bc594ab 100644 --- a/l10n/da/user_webdavauth.po +++ b/l10n/da/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. -# Morten Juhl-Johansen Zölde-Fejér , 2013. +# cronner , 2012 +# Morten Juhl-Johansen Zölde-Fejér , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/core.po b/l10n/de/core.po index 4d051755e2..247b8373db 100644 --- a/l10n/de/core.po +++ b/l10n/de/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Marcel Kühlhorn \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files.po b/l10n/de/files.po index 6c709fddd8..4765111c00 100644 --- a/l10n/de/files.po +++ b/l10n/de/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_encryption.po b/l10n/de/files_encryption.po index caaaa81d2b..6fed59d267 100644 --- a/l10n/de/files_encryption.po +++ b/l10n/de/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 21:54+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Verschlüsselung" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Dateiverschlüsselung ist aktiviert" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Die folgenden Dateitypen werden nicht verschlüsselt:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Schließe die folgenden Dateitypen von der Verschlüsselung aus:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nichts" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/de/files_external.po b/l10n/de/files_external.po index 762e9d3486..6476179fc2 100644 --- a/l10n/de/files_external.po +++ b/l10n/de/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 5662022a29..134980ed79 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index ea4291698a..a620790ecd 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_versions.po b/l10n/de/files_versions.po index 921aba68c4..24dc734736 100644 --- a/l10n/de/files_versions.po +++ b/l10n/de/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 21:59+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index 6f60dd7fd8..deb1107b94 100644 --- a/l10n/de/lib.po +++ b/l10n/de/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index b84c87664b..1cad13645b 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -138,16 +138,16 @@ msgstr "rückgängig machen" msgid "Unable to remove user" msgstr "Benutzer konnte nicht entfernt werden." -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruppen" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppenadministrator" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Löschen" @@ -155,15 +155,15 @@ msgstr "Löschen" msgid "add group" msgstr "Gruppe hinzufügen" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Es muss ein gültiger Benutzername angegeben werden" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Beim Anlegen des Benutzers ist ein Fehler aufgetreten" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Es muss ein gültiges Passwort angegeben werden" @@ -401,7 +401,7 @@ msgstr "Lade die Apps zur Synchronisierung Deiner Daten herunter" msgid "Show First Run Wizard again" msgstr "Erstinstallation erneut durchführen" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passwort" @@ -425,7 +425,7 @@ msgstr "Neues Passwort" msgid "Change password" msgstr "Passwort ändern" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Anzeigename" @@ -457,7 +457,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Verwende diese Adresse, um Deinen Dateimanager mit Deiner ownCloud zu verbinden" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Loginname" @@ -465,30 +465,34 @@ msgstr "Loginname" msgid "Create" msgstr "Anlegen" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Standard-Speicher" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Unbegrenzt" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Andere" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Speicher" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Anzeigenamen ändern" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Neues Passwort setzen" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Standard" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index 1d0d538225..cd224bb20e 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/user_webdavauth.po b/l10n/de/user_webdavauth.po index a756a0d857..ff18551f62 100644 --- a/l10n/de/user_webdavauth.po +++ b/l10n/de/user_webdavauth.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. -# Marcel Kühlhorn , 2013. -# , 2013. -# , 2012. +# Mirodin , 2012 +# Marcel Kühlhorn , 2013 +# AndryXY , 2013 +# seeed , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index 9a849c6a2b..38b4ca3853 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index 9f2775390a..ad5b6855bc 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_encryption.po b/l10n/de_DE/files_encryption.po index 6630efe377..0073db8696 100644 --- a/l10n/de_DE/files_encryption.po +++ b/l10n/de_DE/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 21:54+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Verschlüsselung" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Datei-Verschlüsselung ist aktiviert" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Die folgenden Dateitypen werden nicht verschlüsselt:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Die folgenden Dateitypen von der Verschlüsselung ausnehmen:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nichts" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po index 95a49523f0..aec6594f2e 100644 --- a/l10n/de_DE/files_external.po +++ b/l10n/de_DE/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index ecf16837b2..157ccf0de9 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index 7528aa33b1..b9a9e24c81 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_versions.po b/l10n/de_DE/files_versions.po index 4218653d90..7d3c1a83c4 100644 --- a/l10n/de_DE/files_versions.po +++ b/l10n/de_DE/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 20:39+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index 802433b473..badd06466f 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index 231673b043..a7b92f7eeb 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -139,16 +139,16 @@ msgstr "rückgängig machen" msgid "Unable to remove user" msgstr "Der Benutzer konnte nicht entfernt werden." -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruppen" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppenadministrator" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Löschen" @@ -156,15 +156,15 @@ msgstr "Löschen" msgid "add group" msgstr "Gruppe hinzufügen" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Es muss ein gültiger Benutzername angegeben werden" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Beim Erstellen des Benutzers ist ein Fehler aufgetreten" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Es muss ein gültiges Passwort angegeben werden" @@ -402,7 +402,7 @@ msgstr "Installieren Sie die Anwendungen, um Ihre Dateien zu synchronisieren" msgid "Show First Run Wizard again" msgstr "Den Einrichtungsassistenten erneut anzeigen" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passwort" @@ -426,7 +426,7 @@ msgstr "Neues Passwort" msgid "Change password" msgstr "Passwort ändern" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Anzeigename" @@ -458,7 +458,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Verwenden Sie diese Adresse, um Ihren Dateimanager mit Ihrer ownCloud zu verbinden" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Loginname" @@ -466,30 +466,34 @@ msgstr "Loginname" msgid "Create" msgstr "Erstellen" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Standard-Speicher" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Unbegrenzt" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Andere" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Speicher" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Anzeigenamen ändern" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Neues Passwort setzen" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Standard" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index 7f49c8e8ea..263a36393e 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/user_webdavauth.po b/l10n/de_DE/user_webdavauth.po index 05ec894d85..44670121a4 100644 --- a/l10n/de_DE/user_webdavauth.po +++ b/l10n/de_DE/user_webdavauth.po @@ -3,17 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012-2013. -# Marcel Kühlhorn , 2013. -# , 2012. -# , 2013. -# , 2012. +# a.tangemann , 2012-2013 +# Marcel Kühlhorn , 2013 +# multimill , 2012 +# traductor , 2013 +# traductor , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/el/core.po b/l10n/el/core.po index 404b31bf2c..6f93f9fc42 100644 --- a/l10n/el/core.po +++ b/l10n/el/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files.po b/l10n/el/files.po index 776ae2e521..cb98be6195 100644 --- a/l10n/el/files.po +++ b/l10n/el/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_encryption.po b/l10n/el/files_encryption.po index e3d818fc1b..e0ad9229a4 100644 --- a/l10n/el/files_encryption.po +++ b/l10n/el/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Κρυπτογράφηση" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Η κρυπτογράφηση αρχείων είναι ενεργή." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Τίποτα" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index cc6ffbfcf0..6d82b8d167 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index b963f18ed1..009eb5a811 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index 09dfdf6d4a..658ee7bd3c 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_versions.po b/l10n/el/files_versions.po index 12369ab3d4..c0a78762a8 100644 --- a/l10n/el/files_versions.po +++ b/l10n/el/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 66fdcec8a4..329bed83b0 100644 --- a/l10n/el/lib.po +++ b/l10n/el/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index b5ee78199a..f073289261 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: KAT.RAT12 \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "αναίρεση" msgid "Unable to remove user" msgstr "Αδυναμία αφαίρεση χρήστη" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Ομάδες" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Ομάδα Διαχειριστών" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Διαγραφή" @@ -154,15 +154,15 @@ msgstr "Διαγραφή" msgid "add group" msgstr "προσθήκη ομάδας" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Πρέπει να δοθεί έγκυρο όνομα χρήστη" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Σφάλμα δημιουργίας χρήστη" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Πρέπει να δοθεί έγκυρο συνθηματικό" @@ -400,7 +400,7 @@ msgstr "Λήψη της εφαρμογής για συγχρονισμό των msgid "Show First Run Wizard again" msgstr "Προβολή Πρώτης Εκτέλεσης Οδηγού πάλι" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Συνθηματικό" @@ -424,7 +424,7 @@ msgstr "Νέο συνθηματικό" msgid "Change password" msgstr "Αλλαγή συνθηματικού" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Όνομα εμφάνισης" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Χρήση αυτής της διεύθυνσης για σύνδεση στο ownCloud με τον διαχειριστή αρχείων σας" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Όνομα Σύνδεσης" @@ -464,30 +464,34 @@ msgstr "Όνομα Σύνδεσης" msgid "Create" msgstr "Δημιουργία" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Προκαθορισμένη Αποθήκευση " -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Απεριόριστο" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Άλλο" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Αποθήκευση" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "αλλαγή ονόματος εμφάνισης" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "επιλογή νέου κωδικού" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Προκαθορισμένο" diff --git a/l10n/el/user_ldap.po b/l10n/el/user_ldap.po index 39de6e98c6..50a8f739da 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/user_webdavauth.po b/l10n/el/user_webdavauth.po index 370f455b11..3a75e3ceae 100644 --- a/l10n/el/user_webdavauth.po +++ b/l10n/el/user_webdavauth.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dimitris M. , 2012. -# Efstathios Iosifidis , 2012. -# Konstantinos Tzanidis , 2012. -# Marios Bekatoros <>, 2013. +# Dimitris M. , 2012 +# Efstathios Iosifidis , 2012 +# Konstantinos Tzanidis , 2012 +# Marios Bekatoros <>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/core.po b/l10n/en@pirate/core.po index 48961fc2a5..63750feeb3 100644 --- a/l10n/en@pirate/core.po +++ b/l10n/en@pirate/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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 04:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" @@ -213,26 +213,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/en@pirate/files.po b/l10n/en@pirate/files.po index c3f62f9571..b4d090e23a 100644 --- a/l10n/en@pirate/files.po +++ b/l10n/en@pirate/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_encryption.po b/l10n/en@pirate/files_encryption.po index a45b177914..e436edc61e 100644 --- a/l10n/en@pirate/files_encryption.po +++ b/l10n/en@pirate/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: en@pirate\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/en@pirate/files_external.po b/l10n/en@pirate/files_external.po index fefa9ba8f7..a7724b86be 100644 --- a/l10n/en@pirate/files_external.po +++ b/l10n/en@pirate/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" diff --git a/l10n/en@pirate/files_sharing.po b/l10n/en@pirate/files_sharing.po index c8e6a64b2e..524b1b909a 100644 --- a/l10n/en@pirate/files_sharing.po +++ b/l10n/en@pirate/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_trashbin.po b/l10n/en@pirate/files_trashbin.po index 9fd846e695..3ae46bccb4 100644 --- a/l10n/en@pirate/files_trashbin.po +++ b/l10n/en@pirate/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" diff --git a/l10n/en@pirate/files_versions.po b/l10n/en@pirate/files_versions.po index b1e0a380e9..2df316a892 100644 --- a/l10n/en@pirate/files_versions.po +++ b/l10n/en@pirate/files_versions.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" diff --git a/l10n/en@pirate/lib.po b/l10n/en@pirate/lib.po index 73994aee80..be031f5ebd 100644 --- a/l10n/en@pirate/lib.po +++ b/l10n/en@pirate/lib.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:15+0200\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" @@ -17,43 +17,43 @@ msgstr "" "Language: en@pirate\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/en@pirate/settings.po b/l10n/en@pirate/settings.po index ef0b0c8304..2dd26cf0d9 100644 --- a/l10n/en@pirate/settings.po +++ b/l10n/en@pirate/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:15+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passcode" @@ -423,7 +423,7 @@ msgstr "" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/en@pirate/user_ldap.po b/l10n/en@pirate/user_ldap.po index 9e9a16cb2c..ffa7973ace 100644 --- a/l10n/en@pirate/user_ldap.po +++ b/l10n/en@pirate/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-05-17 02:03+0200\n" -"PO-Revision-Date: 2013-05-17 00:04+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/user_webdavauth.po b/l10n/en@pirate/user_webdavauth.po index 18917231eb..055e077694 100644 --- a/l10n/en@pirate/user_webdavauth.po +++ b/l10n/en@pirate/user_webdavauth.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-02 02:14+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2012-11-09 09:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 0ed73ec376..7e9696f698 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index 9e476a415a..27aa6ec0b5 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_encryption.po b/l10n/eo/files_encryption.po index 8b1ceb53a9..244d63f3b0 100644 --- a/l10n/eo/files_encryption.po +++ b/l10n/eo/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Ĉifrado" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nenio" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index 915ab9e130..bc3498cba6 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index c1815327db..b42b5a067f 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index e30b73af02..1c6009954f 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_versions.po b/l10n/eo/files_versions.po index f3fddd5909..afca16226f 100644 --- a/l10n/eo/files_versions.po +++ b/l10n/eo/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index 7b7db0ac13..6c9aa9d71e 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index ea11dc41a8..8d4c3eddd7 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "malfari" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupoj" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupadministranto" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Forigi" @@ -153,15 +153,15 @@ msgstr "Forigi" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Pasvorto" @@ -423,7 +423,7 @@ msgstr "Nova pasvorto" msgid "Change password" msgstr "Ŝanĝi la pasvorton" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Uzu ĉi tiun adreson por konekti al via ownCloud vian dosieradministrilon" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Krei" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Defaŭlta konservejo" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Senlima" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Alia" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Konservejo" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Defaŭlta" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index 305aa9ebd8..7c9235b4e1 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/user_webdavauth.po b/l10n/eo/user_webdavauth.po index 8217ee0e2b..aa3b42b411 100644 --- a/l10n/eo/user_webdavauth.po +++ b/l10n/eo/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Mariano , 2013. -# Mariano , 2012. +# Mariano , 2013 +# Mariano , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/core.po b/l10n/es/core.po index bcbb2c83cc..61828126fd 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -6,13 +6,14 @@ # ggam , 2013 # msoko , 2013 # iGerli , 2013 +# xhiena , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: ggam \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: xhiena \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" @@ -225,7 +226,7 @@ msgstr "Cancelar" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Error cargando la plantilla del seleccionador de archivos" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/es/files.po b/l10n/es/files.po index f6922124d9..b959c11dfa 100644 --- a/l10n/es/files.po +++ b/l10n/es/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_encryption.po b/l10n/es/files_encryption.po index b2a20b26ea..d6c76e9dba 100644 --- a/l10n/es/files_encryption.po +++ b/l10n/es/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Cifrado" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "La encriptacion de archivo esta activada." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Los siguientes tipos de archivo no seran encriptados:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Excluir los siguientes tipos de archivo de la encriptacion:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ninguno" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/es/files_external.po b/l10n/es/files_external.po index 435a62fe2f..61bc450c87 100644 --- a/l10n/es/files_external.po +++ b/l10n/es/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index 55007656ed..a371882b62 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index c51f723c6c..6d0aaf7696 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_versions.po b/l10n/es/files_versions.po index 5fc70f6e2a..89307a3c01 100644 --- a/l10n/es/files_versions.po +++ b/l10n/es/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index 9affc11972..3dcdad6129 100644 --- a/l10n/es/lib.po +++ b/l10n/es/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# xhiena , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: xhiena \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" @@ -123,7 +124,7 @@ msgstr "Tiene que ingresar una cuenta existente o la del administrador." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "No se pudo establecer la conexión a Oracle" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index 04074a0a42..34b0d4d380 100644 --- a/l10n/es/settings.po +++ b/l10n/es/settings.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: ggam \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -138,16 +138,16 @@ msgstr "deshacer" msgid "Unable to remove user" msgstr "No se puede eliminar el usuario" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupo administrador" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Eliminar" @@ -155,15 +155,15 @@ msgstr "Eliminar" msgid "add group" msgstr "añadir Grupo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Se debe usar un nombre de usuario válido" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Error al crear usuario" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Se debe usar una contraseña valida" @@ -401,7 +401,7 @@ msgstr "Obtener las aplicaciones para sincronizar sus archivos" msgid "Show First Run Wizard again" msgstr "Mostrar asistente para iniciar otra vez" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Contraseña" @@ -425,7 +425,7 @@ msgstr "Nueva contraseña" msgid "Change password" msgstr "Cambiar contraseña" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nombre a mostrar" @@ -457,7 +457,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Use esta dirección para conectarse a su cuenta de ownCloud en el administrador de archivos" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nombre de usuario" @@ -465,30 +465,34 @@ msgstr "Nombre de usuario" msgid "Create" msgstr "Crear" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Almacenamiento predeterminado" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Otro" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Almacenamiento" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Cambiar nombre a mostrar" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Configurar nueva contraseña" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Predeterminado" diff --git a/l10n/es/user_ldap.po b/l10n/es/user_ldap.po index 60ce98ad43..9f85de4c0d 100644 --- a/l10n/es/user_ldap.po +++ b/l10n/es/user_ldap.po @@ -5,13 +5,14 @@ # Translators: # Agustin Ferrario , 2013 # ordenet , 2013 +# xhiena , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" -"Last-Translator: Agustin Ferrario \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,7 +22,7 @@ msgstr "" #: ajax/clearMappings.php:34 msgid "Failed to clear the mappings." -msgstr "" +msgstr "Ocurrió un fallo al borrar las asignaciones." #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" @@ -49,7 +50,7 @@ msgstr "Falló el borrado" #: js/settings.js:82 msgid "Take over settings from recent server configuration?" -msgstr "Hacerse cargo de los ajustes de configuración del servidor reciente?" +msgstr "¿Asumir los ajustes actuales de la configuración del servidor?" #: js/settings.js:83 msgid "Keep settings?" @@ -61,7 +62,7 @@ msgstr "No se puede añadir la configuración del servidor" #: js/settings.js:111 msgid "mappings cleared" -msgstr "" +msgstr "Asignaciones borradas" #: js/settings.js:112 msgid "Success" @@ -92,7 +93,7 @@ msgid "" "Warning: Apps user_ldap and user_webdavauth are incompatible. You may" " experience unexpected behaviour. Please ask your system administrator to " "disable one of them." -msgstr "Advertencia: Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos." +msgstr "Advertencia: Las aplicaciones user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos." #: templates/settings.php:12 msgid "" @@ -162,7 +163,7 @@ msgstr "Define el filtro a aplicar cuando se ha realizado un login. %%uid rempla #: templates/settings.php:55 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" -msgstr "usar %%uid como placeholder, ej: \"uid=%%uid\"" +msgstr "usar %%uid como comodín, ej: \"uid=%%uid\"" #: templates/settings.php:56 msgid "User List Filter" @@ -174,7 +175,7 @@ msgstr "Define el filtro a aplicar, cuando se obtienen usuarios." #: templates/settings.php:60 msgid "without any placeholder, e.g. \"objectClass=person\"." -msgstr "Sin placeholder, ej: \"objectClass=person\"." +msgstr "Sin comodines, ej: \"objectClass=person\"." #: templates/settings.php:61 msgid "Group Filter" @@ -186,11 +187,11 @@ msgstr "Define el filtro a aplicar, cuando se obtienen grupos." #: templates/settings.php:65 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." -msgstr "Con cualquier placeholder, ej: \"objectClass=posixGroup\"." +msgstr "sin comodines, ej: \"objectClass=posixGroup\"." #: templates/settings.php:69 msgid "Connection Settings" -msgstr "Configuracion de coneccion" +msgstr "Configuración de conexión" #: templates/settings.php:71 msgid "Configuration Active" @@ -206,17 +207,17 @@ msgstr "Puerto" #: templates/settings.php:73 msgid "Backup (Replica) Host" -msgstr "Host para backup (Replica)" +msgstr "Servidor de copia de seguridad (Replica)" #: templates/settings.php:73 msgid "" "Give an optional backup host. It must be a replica of the main LDAP/AD " "server." -msgstr "Dar un host de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD." +msgstr "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD." #: templates/settings.php:74 msgid "Backup (Replica) Port" -msgstr "Puerto para backup (Replica)" +msgstr "Puerto para copias de seguridad (Replica)" #: templates/settings.php:75 msgid "Disable Main Server" @@ -224,7 +225,7 @@ msgstr "Deshabilitar servidor principal" #: templates/settings.php:75 msgid "When switched on, ownCloud will only connect to the replica server." -msgstr "Cuando se inicie, ownCloud unicamente estara conectado al servidor replica" +msgstr "Cuando se inicie, ownCloud unicamente conectará al servidor replica" #: templates/settings.php:76 msgid "Use TLS" @@ -232,11 +233,11 @@ msgstr "Usar TLS" #: templates/settings.php:76 msgid "Do not use it additionally for LDAPS connections, it will fail." -msgstr "No usar adicionalmente para conecciones LDAPS, estas fallaran" +msgstr "No lo use para conexiones LDAPS, Fallará." #: templates/settings.php:77 msgid "Case insensitve LDAP server (Windows)" -msgstr "Servidor de LDAP sensible a mayúsculas/minúsculas (Windows)" +msgstr "Servidor de LDAP no sensible a mayúsculas/minúsculas (Windows)" #: templates/settings.php:78 msgid "Turn off SSL certificate validation." @@ -258,7 +259,7 @@ msgstr "Cache TTL" #: templates/settings.php:79 msgid "in seconds. A change empties the cache." -msgstr "en segundos. Un cambio vacía la cache." +msgstr "en segundos. Un cambio vacía la caché." #: templates/settings.php:81 msgid "Directory Settings" @@ -360,15 +361,15 @@ msgid "" "achieve a similar behaviour as before ownCloud 5 enter the user display name" " attribute in the following field. Leave it empty for default behaviour. " "Changes will have effect only on newly mapped (added) LDAP users." -msgstr "" +msgstr "Por defecto el nombre de usuario interno será creado desde el atributo UUID. Esto asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. En el nombre de usuario interno sólo se pueden usar estos caracteres: [a-zA-Z0-9_.@-]. Otros caracteres son sustituidos por su correspondiente en ASCII o simplemente quitados. En coincidencias un número será añadido o incrementado. El nombre de usuario interno es usado para identificar un usuario internamente. Es también el nombre por defecto para la carpeta personal del usuario in ownCloud. También es un puerto de URLs remotas, por ejemplo, para todos los servicios *DAV. Con esta configuración el comportamiento por defecto puede ser cambiado. Para conseguir un comportamiento similar a como era antes de ownCloud 5, introduce el atributo del nombre en pantalla del usuario en el siguiente campo. Déjalo vacío para el comportamiento por defecto. Los cambios solo tendrán efecto en los nuevos usuarios LDAP." #: templates/settings.php:103 msgid "Internal Username Attribute:" -msgstr "" +msgstr "Atributo Nombre de usuario Interno:" #: templates/settings.php:104 msgid "Override UUID detection" -msgstr "" +msgstr "Sobrescribir la detección UUID" #: templates/settings.php:105 msgid "" @@ -379,15 +380,15 @@ msgid "" "You must make sure that the attribute of your choice can be fetched for both" " users and groups and it is unique. Leave it empty for default behaviour. " "Changes will have effect only on newly mapped (added) LDAP users and groups." -msgstr "" +msgstr "Por defecto, ownCloud autodetecta el atributo UUID. El atributo UUID es usado para identificar indudablemente usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no ha sido especificado otro comportamiento arriba. Puedes sobrescribir la configuración y pasar un atributo de tu elección. Debes asegurarte de que el atributo de tu elección sea accesible por los usuarios y grupos y ser único. Déjalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los nuevos usuarios y grupos de LDAP." #: templates/settings.php:106 msgid "UUID Attribute:" -msgstr "" +msgstr "Atributo UUID:" #: templates/settings.php:107 msgid "Username-LDAP User Mapping" -msgstr "" +msgstr "Asignación del Nombre de usuario de un usuario LDAP" #: templates/settings.php:108 msgid "" @@ -402,15 +403,15 @@ msgid "" "configuration sensitive, it affects all LDAP configurations! Do never clear " "the mappings in a production environment. Only clear mappings in a testing " "or experimental stage." -msgstr "ownCloud utiliza nombre de usuarios para almacenar y asignar (meta) datos. Con el fin de identificar con precisión y reconocer usuarios, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario de ownCloud a usuario LDAP. El nombre de usuario creado se asigna al UUID del usuario LDAP. Además el DN se almacena en caché más bien para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si la DN cambia, los cambios serán encontrados por ownCloud. El nombre interno de ownCloud se utiliza para todo en ownCloud. Eliminando las asignaciones tendrá restos por todas partes. Eliminando las asignaciones no es sensible a la configuración, que afecta a todas las configuraciones de LDAP! No limpiar nunca las asignaciones en un entorno de producción. Sólo borrar asignaciones en una situación de prueba o experimental." +msgstr "ownCloud utiliza nombres de usuario para almacenar y asignar (meta) datos. Con el fin de identificar con precisión y reconocer usuarios, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario de ownCloud a usuario LDAP. El nombre de usuario creado se asigna al UUID del usuario LDAP. Además el DN se almacena en caché más bien para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si la DN cambia, los cambios serán encontrados por ownCloud. El nombre interno de ownCloud se utiliza para todo en ownCloud. Eliminando las asignaciones tendrá restos por todas partes. Eliminando las asignaciones no es sensible a la configuración, que afecta a todas las configuraciones de LDAP! No limpiar nunca las asignaciones en un entorno de producción. Sólo borrar asignaciones en una situación de prueba o experimental." #: templates/settings.php:109 msgid "Clear Username-LDAP User Mapping" -msgstr "" +msgstr "Borrar la asignación de los Nombres de usuario de los usuarios LDAP" #: templates/settings.php:109 msgid "Clear Groupname-LDAP Group Mapping" -msgstr "" +msgstr "Borrar la asignación de los Nombres de grupo de los grupos de LDAP" #: templates/settings.php:111 msgid "Test Configuration" diff --git a/l10n/es/user_webdavauth.po b/l10n/es/user_webdavauth.po index 305a875650..9b520ddeaa 100644 --- a/l10n/es/user_webdavauth.po +++ b/l10n/es/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Agustin Ferrario , 2013. -# Art O. Pal , 2012. -# , 2012. +# Agustin Ferrario , 2013 +# Art O. Pal , 2012 +# pggx999 , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index e4e0a5550b..11a4e5dcb9 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index a6178d4834..9ac2ead527 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_encryption.po b/l10n/es_AR/files_encryption.po index 08c82d2bc8..8dccd67247 100644 --- a/l10n/es_AR/files_encryption.po +++ b/l10n/es_AR/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Encriptación" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "La encriptación de archivos no está habilitada" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Los siguientes tipos de archivos no serán encriptados" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Excluir los siguientes tipos de archivos de encriptación:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ninguno" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/es_AR/files_external.po b/l10n/es_AR/files_external.po index 14fa3cdbff..922592fcfd 100644 --- a/l10n/es_AR/files_external.po +++ b/l10n/es_AR/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index 1e7b677a93..09cbf34968 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 433e065a7c..0090b05bfd 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_versions.po b/l10n/es_AR/files_versions.po index 623368fabe..956dd59f21 100644 --- a/l10n/es_AR/files_versions.po +++ b/l10n/es_AR/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 0c4628ce5d..6607a5c37b 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index d2e301928f..e5949fdc99 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Agustin Ferrario \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \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" @@ -137,16 +137,16 @@ msgstr "deshacer" msgid "Unable to remove user" msgstr "Imposible remover usuario" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupo Administrador" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Borrar" @@ -154,15 +154,15 @@ msgstr "Borrar" msgid "add group" msgstr "Agregar grupo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Debe ingresar un nombre de usuario válido" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Error creando usuario" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Debe ingresar una contraseña válida" @@ -400,7 +400,7 @@ msgstr "Obtené aplicaciones para sincronizar tus archivos" msgid "Show First Run Wizard again" msgstr "Mostrar de nuevo el asistente de primera ejecución" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Contraseña" @@ -424,7 +424,7 @@ msgstr "Nueva contraseña:" msgid "Change password" msgstr "Cambiar contraseña" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nombre a mostrar" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utiliza esta dirección para conectarte con ownCloud en tu Administrador de Archivos" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nombre de " @@ -464,30 +464,34 @@ msgstr "Nombre de " msgid "Create" msgstr "Crear" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Almacenamiento Predeterminado" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Otros" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Almacenamiento" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Cambiar el nombre que se muestra" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Configurar nueva contraseña" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Predeterminado" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 701428e5ae..3e7f15f0e2 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_webdavauth.po b/l10n/es_AR/user_webdavauth.po index 2d5007b68e..752a64616b 100644 --- a/l10n/es_AR/user_webdavauth.po +++ b/l10n/es_AR/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Agustin Ferrario , 2012. -# CJTess , 2013. -# , 2012. +# Agustin Ferrario , 2012 +# cjtess , 2013 +# cjtess , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index 44a8a4e36b..c2fc834e59 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Rivo Zängov \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: pisike.sipelgas \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" @@ -224,7 +224,7 @@ msgstr "Loobu" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Viga failivalija malli laadimisel" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 025cdc35cf..832fe2132e 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_encryption.po b/l10n/et_EE/files_encryption.po index 9850a24ab4..f6d7f0ebaa 100644 --- a/l10n/et_EE/files_encryption.po +++ b/l10n/et_EE/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 11:12+0000\n" -"Last-Translator: Rivo Zängov \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Krüpteerimine" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Faili krüpteerimine on sisse lülitatud." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Järgnevaid failitüüpe ei krüpteerita:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Järgnevaid failitüüpe ei krüpteerita:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Pole" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index 347a4b9d54..ccc0445389 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index 90d63ed0ae..e78843e5d9 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 632d1ffb0f..3cfda325dd 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_versions.po b/l10n/et_EE/files_versions.po index 570e7d1253..6be6fc45ff 100644 --- a/l10n/et_EE/files_versions.po +++ b/l10n/et_EE/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 11:20+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index 15363d6f0e..752eb631e1 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# pisike.sipelgas , 2013 # Rivo Zängov , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Rivo Zängov \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: pisike.sipelgas \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" @@ -124,7 +125,7 @@ msgstr "Sisesta kas juba olemasolev konto või administrator." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Ei suuda luua ühendust Oracle baasiga" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index 6162b117d9..ad01c7a3f1 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Rivo Zängov \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "tagasi" msgid "Unable to remove user" msgstr "Kasutaja eemaldamine ebaõnnestus" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupid" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupi admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Kustuta" @@ -154,15 +154,15 @@ msgstr "Kustuta" msgid "add group" msgstr "lisa grupp" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Sisesta nõuetele vastav kasutajatunnus" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Viga kasutaja loomisel" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Sisesta nõuetele vastav parool" @@ -400,7 +400,7 @@ msgstr "Hangi rakendusi failide sünkroniseerimiseks" msgid "Show First Run Wizard again" msgstr "Näita veelkord Esmase Käivituse Juhendajat" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Parool" @@ -424,7 +424,7 @@ msgstr "Uus parool" msgid "Change password" msgstr "Muuda parooli" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Näidatav nimi" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Kasuta seda aadressi ühendamaks oma ownCloudi failihalduriga" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Kasutajanimi" @@ -464,30 +464,34 @@ msgstr "Kasutajanimi" msgid "Create" msgstr "Lisa" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Vaikimisi maht" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Piiramatult" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Muu" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Maht" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "muuda näidatavat nime" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "määra uus parool" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Vaikeväärtus" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index 8ced5675c1..194455c637 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/user_webdavauth.po b/l10n/et_EE/user_webdavauth.po index b1ac57ddbf..ee2a1e41f4 100644 --- a/l10n/et_EE/user_webdavauth.po +++ b/l10n/et_EE/user_webdavauth.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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 19:19+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 1678d02561..918df02676 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index b63a4ea80e..edbc4c3d35 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_encryption.po b/l10n/eu/files_encryption.po index 40ebdc5fdf..d329a7d7a2 100644 --- a/l10n/eu/files_encryption.po +++ b/l10n/eu/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Enkriptazioa" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Fitxategien enkriptazioa gaituta dago." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Hurrengo fitxategi motak ez dira enkriptatuko:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Baztertu hurrengo fitxategi motak enkriptatzetik:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ezer" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/eu/files_external.po b/l10n/eu/files_external.po index c1517d8e38..6b33e53c9f 100644 --- a/l10n/eu/files_external.po +++ b/l10n/eu/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index 7b2e073f37..d060b0a940 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index d0cad8e270..56efcb5590 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_versions.po b/l10n/eu/files_versions.po index c7a497b929..284ceaf733 100644 --- a/l10n/eu/files_versions.po +++ b/l10n/eu/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 0fb97f4caf..3e161e5af7 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index 5564b94a31..de7d09fb66 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "desegin" msgid "Unable to remove user" msgstr "Ezin izan da erabiltzailea aldatu" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Taldeak" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Talde administradorea" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Ezabatu" @@ -153,15 +153,15 @@ msgstr "Ezabatu" msgid "add group" msgstr "gehitu taldea" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Baliozko erabiltzaile izena eman behar da" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Errore bat egon da erabiltzailea sortzean" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Baliozko pasahitza eman behar da" @@ -399,7 +399,7 @@ msgstr "Lortu aplikazioak zure fitxategiak sinkronizatzeko" msgid "Show First Run Wizard again" msgstr "Erakutsi berriz Lehenengo Aldiko Morroia" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Pasahitza" @@ -423,7 +423,7 @@ msgstr "Pasahitz berria" msgid "Change password" msgstr "Aldatu pasahitza" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Bistaratze Izena" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Erabili helbide hau zure fitxategi kudeatzailean zure ownCloudera konektatzeko" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Sarrera Izena" @@ -463,30 +463,34 @@ msgstr "Sarrera Izena" msgid "Create" msgstr "Sortu" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Lehenetsitako Biltegiratzea" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Mugarik gabe" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Bestelakoa" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Biltegiratzea" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "aldatu bistaratze izena" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "ezarri pasahitz berria" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Lehenetsia" diff --git a/l10n/eu/user_ldap.po b/l10n/eu/user_ldap.po index a86914e471..63d357b112 100644 --- a/l10n/eu/user_ldap.po +++ b/l10n/eu/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/user_webdavauth.po b/l10n/eu/user_webdavauth.po index 7128f70cb6..c9297b3ff2 100644 --- a/l10n/eu/user_webdavauth.po +++ b/l10n/eu/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# , 2012. +# asieriko , 2013 +# asieriko , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index dc320638bd..b65d129533 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index b16787e022..10a3bb10e4 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_encryption.po b/l10n/fa/files_encryption.po index fef3cfd192..bd0e9ee416 100644 --- a/l10n/fa/files_encryption.po +++ b/l10n/fa/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "رمزگذاری" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "رمزنگاری فایلها فعال شد." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "فایلهای زیر رمزنگاری نخواهند شد:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "فایلهای زیر از رمزنگاری نادیده گرفته می شوند:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "هیچ‌کدام" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/fa/files_external.po b/l10n/fa/files_external.po index 316ca3fb55..2e5205fde2 100644 --- a/l10n/fa/files_external.po +++ b/l10n/fa/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index f23556b137..6921b1cfc3 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index a246816ff7..64e654b7e8 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_versions.po b/l10n/fa/files_versions.po index 15fe4b1b74..1917353992 100644 --- a/l10n/fa/files_versions.po +++ b/l10n/fa/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 62b626ded1..4d1be2c3f6 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 373f6ca85e..9f85ece592 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "بازگشت" msgid "Unable to remove user" msgstr "حذف کاربر امکان پذیر نیست" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "گروه ها" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "گروه مدیران" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "حذف" @@ -153,15 +153,15 @@ msgstr "حذف" msgid "add group" msgstr "افزودن گروه" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "نام کاربری صحیح باید وارد شود" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "خطا در ایجاد کاربر" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "رمز عبور صحیح باید وارد شود" @@ -399,7 +399,7 @@ msgstr "برنامه ها را دریافت کنید تا فایل هایتان msgid "Show First Run Wizard again" msgstr "راهبری کمکی اجرای اول را دوباره نمایش بده" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "گذرواژه" @@ -423,7 +423,7 @@ msgstr "گذرواژه جدید" msgid "Change password" msgstr "تغییر گذر واژه" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "نام نمایشی" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "از این نشانی برای اتصال به ownCloud خودتان در بخش مدیریت فایل خودتان استفاده کنید" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "نام کاربری" @@ -463,30 +463,34 @@ msgstr "نام کاربری" msgid "Create" msgstr "ایجاد کردن" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "ذخیره سازی پیش فرض" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "نامحدود" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "دیگر" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "حافظه" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "تغییر نام نمایشی" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "تنظیم کلمه عبور جدید" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "پیش فرض" diff --git a/l10n/fa/user_ldap.po b/l10n/fa/user_ldap.po index 1d8c8ce4b6..291214be8b 100644 --- a/l10n/fa/user_ldap.po +++ b/l10n/fa/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/user_webdavauth.po b/l10n/fa/user_webdavauth.po index 5b69bafee6..f89e5c1feb 100644 --- a/l10n/fa/user_webdavauth.po +++ b/l10n/fa/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/core.po b/l10n/fi/core.po index ec04afbad4..ff1cb94e44 100644 --- a/l10n/fi/core.po +++ b/l10n/fi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/files.po b/l10n/fi/files.po index 0625ba07dd..67ef673fa9 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/files_encryption.po b/l10n/fi/files_encryption.po index 8aa6088c38..a650f8bc90 100644 --- a/l10n/fi/files_encryption.po +++ b/l10n/fi/files_encryption.po @@ -7,28 +7,87 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings.php:3 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings.php:4 -msgid "Exclude the following file types from encryption" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" msgstr "" -#: templates/settings.php:5 -msgid "None" +#: templates/settings-admin.php:13 +msgid "Recovery account password" msgstr "" -#: templates/settings.php:10 -msgid "Enable Encryption" +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" + +#: templates/settings-personal.php:11 +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" + +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" + +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/fi/files_external.po b/l10n/fi/files_external.po index d37cbbef37..3281188f3b 100644 --- a/l10n/fi/files_external.po +++ b/l10n/fi/files_external.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-10-02 23:16+0200\n" -"PO-Revision-Date: 2012-10-02 21:17+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,90 +17,107 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/dropbox.js:7 js/dropbox.js:25 js/google.js:7 js/google.js:23 +#: js/dropbox.js:7 js/dropbox.js:28 js/google.js:16 js/google.js:34 msgid "Access granted" msgstr "" -#: js/dropbox.js:28 js/dropbox.js:74 js/dropbox.js:79 js/dropbox.js:86 +#: js/dropbox.js:30 js/dropbox.js:96 js/dropbox.js:102 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:65 js/google.js:66 msgid "Grant access" msgstr "" -#: js/dropbox.js:73 js/google.js:72 -msgid "Fill out all required fields" -msgstr "" - -#: js/dropbox.js:85 +#: js/dropbox.js:101 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:36 js/google.js:93 msgid "Error configuring Google Drive storage" msgstr "" +#: lib/config.php:431 +msgid "" +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares " +"is not possible. Please ask your system administrator to install it." +msgstr "" + +#: lib/config.php:434 +msgid "" +"Warning: The FTP support in PHP is not enabled or installed. Mounting" +" of FTP shares is not possible. Please ask your system administrator to " +"install it." +msgstr "" + +#: lib/config.php:437 +msgid "" +"Warning: The Curl support in PHP is not enabled or installed. " +"Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask " +"your system administrator to install it." +msgstr "" + #: templates/settings.php:3 msgid "External Storage" msgstr "" -#: templates/settings.php:7 templates/settings.php:19 -msgid "Mount point" -msgstr "" - -#: templates/settings.php:8 -msgid "Backend" -msgstr "" - -#: templates/settings.php:9 -msgid "Configuration" +#: templates/settings.php:9 templates/settings.php:28 +msgid "Folder name" msgstr "" #: templates/settings.php:10 -msgid "Options" +msgid "External storage" msgstr "" #: templates/settings.php:11 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:12 +msgid "Options" +msgstr "" + +#: templates/settings.php:13 msgid "Applicable" msgstr "" -#: templates/settings.php:23 -msgid "Add mount point" +#: templates/settings.php:33 +msgid "Add storage" msgstr "" -#: templates/settings.php:54 templates/settings.php:62 +#: templates/settings.php:90 msgid "None set" msgstr "" -#: templates/settings.php:63 +#: templates/settings.php:91 msgid "All Users" msgstr "" -#: templates/settings.php:64 +#: templates/settings.php:92 msgid "Groups" msgstr "" -#: templates/settings.php:69 +#: templates/settings.php:100 msgid "Users" msgstr "" -#: templates/settings.php:77 templates/settings.php:107 +#: templates/settings.php:113 templates/settings.php:114 +#: templates/settings.php:149 templates/settings.php:150 msgid "Delete" msgstr "" -#: templates/settings.php:87 +#: templates/settings.php:129 msgid "Enable User External Storage" msgstr "" -#: templates/settings.php:88 +#: templates/settings.php:130 msgid "Allow users to mount their own external storage" msgstr "" -#: templates/settings.php:99 +#: templates/settings.php:141 msgid "SSL root certificates" msgstr "" -#: templates/settings.php:113 +#: templates/settings.php:159 msgid "Import Root Certificate" msgstr "" diff --git a/l10n/fi/files_sharing.po b/l10n/fi/files_sharing.po index fcba73eea4..ce314f8d2a 100644 --- a/l10n/fi/files_sharing.po +++ b/l10n/fi/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 \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,24 +25,24 @@ msgstr "" msgid "Submit" msgstr "" -#: templates/public.php:9 +#: templates/public.php:10 #, 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:19 templates/public.php:43 msgid "Download" msgstr "" -#: templates/public.php:29 +#: templates/public.php:40 msgid "No preview available for" msgstr "" -#: templates/public.php:37 +#: templates/public.php:50 msgid "web services under your control" msgstr "" diff --git a/l10n/fi/files_trashbin.po b/l10n/fi/files_trashbin.po new file mode 100644 index 0000000000..7cf44f62a8 --- /dev/null +++ b/l10n/fi/files_trashbin.po @@ -0,0 +1,84 @@ +# 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-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/delete.php:42 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:42 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + +#: js/trash.js:7 js/trash.js:96 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:19 js/trash.js:46 js/trash.js:114 js/trash.js:139 +msgid "Error" +msgstr "" + +#: js/trash.js:34 +msgid "delete file permanently" +msgstr "" + +#: js/trash.js:121 +msgid "Delete permanently" +msgstr "" + +#: js/trash.js:174 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:175 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:184 +msgid "1 folder" +msgstr "" + +#: js/trash.js:186 +msgid "{count} folders" +msgstr "" + +#: js/trash.js:194 +msgid "1 file" +msgstr "" + +#: js/trash.js:196 +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 "" + +#: templates/index.php:30 templates/index.php:31 +msgid "Delete" +msgstr "" + +#: templates/part.breadcrumb.php:9 +msgid "Deleted Files" +msgstr "" diff --git a/l10n/fi/files_versions.po b/l10n/fi/files_versions.po index 7317ba1f3e..12a72b999d 100644 --- a/l10n/fi/files_versions.po +++ b/l10n/fi/files_versions.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,26 +17,41 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:31 templates/settings-personal.php:10 -msgid "Expire all versions" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" msgstr "" -#: js/versions.js:16 -msgid "History" +#: history.php:40 +msgid "success" msgstr "" -#: templates/settings-personal.php:4 +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:69 +msgid "No old versions available" +msgstr "" + +#: history.php:74 +msgid "No path specified" +msgstr "" + +#: js/versions.js:6 msgid "Versions" msgstr "" -#: templates/settings-personal.php:7 -msgid "This will delete all existing backup versions of your files" -msgstr "" - -#: templates/settings.php:3 -msgid "Files Versioning" -msgstr "" - -#: templates/settings.php:4 -msgid "Enable" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" msgstr "" diff --git a/l10n/fi/lib.po b/l10n/fi/lib.po index 8996a10489..a315271139 100644 --- a/l10n/fi/lib.po +++ b/l10n/fi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/settings.po b/l10n/fi/settings.po index 4be7031174..1e9abc85b8 100644 --- a/l10n/fi/settings.po +++ b/l10n/fi/settings.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-10-09 02:03+0200\n" -"PO-Revision-Date: 2012-10-09 00:04+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,86 +17,163 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/apps/ocs.php:23 +#: ajax/apps/ocs.php:20 msgid "Unable to load list from App Store" msgstr "" -#: ajax/creategroup.php:9 ajax/removeuser.php:13 ajax/setquota.php:18 -#: ajax/togglegroups.php:15 +#: ajax/changedisplayname.php:25 ajax/removeuser.php:15 ajax/setquota.php:17 +#: ajax/togglegroups.php:20 msgid "Authentication error" msgstr "" -#: ajax/creategroup.php:19 +#: ajax/changedisplayname.php:31 +msgid "Your display name has been changed." +msgstr "" + +#: ajax/changedisplayname.php:34 +msgid "Unable to change display name" +msgstr "" + +#: ajax/creategroup.php:10 msgid "Group already exists" msgstr "" -#: ajax/creategroup.php:28 +#: ajax/creategroup.php:19 msgid "Unable to add group" msgstr "" -#: ajax/enableapp.php:14 +#: ajax/enableapp.php:11 msgid "Could not enable app. " msgstr "" -#: ajax/lostpassword.php:14 +#: ajax/lostpassword.php:12 msgid "Email saved" msgstr "" -#: ajax/lostpassword.php:16 +#: ajax/lostpassword.php:14 msgid "Invalid email" msgstr "" -#: ajax/openid.php:16 -msgid "OpenID Changed" -msgstr "" - -#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 -msgid "Invalid request" -msgstr "" - -#: ajax/removegroup.php:16 +#: ajax/removegroup.php:13 msgid "Unable to delete group" msgstr "" -#: ajax/removeuser.php:22 +#: ajax/removeuser.php:24 msgid "Unable to delete user" msgstr "" -#: ajax/setlanguage.php:18 +#: ajax/setlanguage.php:15 msgid "Language changed" msgstr "" -#: ajax/togglegroups.php:25 +#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:30 #, php-format msgid "Unable to add user to group %s" msgstr "" -#: ajax/togglegroups.php:31 +#: ajax/togglegroups.php:36 #, php-format msgid "Unable to remove user from group %s" msgstr "" -#: js/apps.js:28 js/apps.js:65 +#: ajax/updateapp.php:14 +msgid "Couldn't update app." +msgstr "" + +#: js/apps.js:30 +msgid "Update to {appversion}" +msgstr "" + +#: js/apps.js:36 js/apps.js:76 msgid "Disable" msgstr "" -#: js/apps.js:28 js/apps.js:54 +#: js/apps.js:36 js/apps.js:64 js/apps.js:83 msgid "Enable" msgstr "" -#: js/personal.js:69 +#: js/apps.js:55 +msgid "Please wait...." +msgstr "" + +#: js/apps.js:59 js/apps.js:71 js/apps.js:80 js/apps.js:93 +msgid "Error" +msgstr "" + +#: js/apps.js:90 +msgid "Updating...." +msgstr "" + +#: js/apps.js:93 +msgid "Error while updating app" +msgstr "" + +#: js/apps.js:96 +msgid "Updated" +msgstr "" + +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: personal.php:47 personal.php:48 +#: js/users.js:47 +msgid "deleted" +msgstr "" + +#: js/users.js:47 +msgid "undo" +msgstr "" + +#: js/users.js:79 +msgid "Unable to remove user" +msgstr "" + +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 +msgid "Groups" +msgstr "" + +#: js/users.js:95 templates/users.php:85 templates/users.php:120 +msgid "Group Admin" +msgstr "" + +#: js/users.js:115 templates/users.php:160 +msgid "Delete" +msgstr "" + +#: js/users.js:269 +msgid "add group" +msgstr "" + +#: js/users.js:428 +msgid "A valid username must be provided" +msgstr "" + +#: js/users.js:429 js/users.js:435 js/users.js:450 +msgid "Error creating user" +msgstr "" + +#: js/users.js:434 +msgid "A valid password must be provided" +msgstr "" + +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" -#: templates/admin.php:14 +#: templates/admin.php:15 msgid "Security Warning" msgstr "" -#: templates/admin.php:17 +#: templates/admin.php:18 msgid "" "Your data directory and your files are probably accessible from the " "internet. The .htaccess file that ownCloud provides is not working. We " @@ -105,71 +182,153 @@ msgid "" " webserver document root." msgstr "" -#: templates/admin.php:31 +#: templates/admin.php:29 +msgid "Setup Warning" +msgstr "" + +#: templates/admin.php:32 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: templates/admin.php:33 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + +#: templates/admin.php:44 +msgid "Module 'fileinfo' missing" +msgstr "" + +#: templates/admin.php:47 +msgid "" +"The PHP module 'fileinfo' is missing. We strongly recommend to enable this " +"module to get best results with mime-type detection." +msgstr "" + +#: templates/admin.php:58 +msgid "Locale not working" +msgstr "" + +#: templates/admin.php:63 +#, php-format +msgid "" +"This ownCloud server can't set system locale to %s. This means that there " +"might be problems with certain characters in file names. We strongly suggest" +" to install the required packages on your system to support %s." +msgstr "" + +#: templates/admin.php:75 +msgid "Internet connection not working" +msgstr "" + +#: templates/admin.php:78 +msgid "" +"This ownCloud server has no working internet connection. This means that " +"some of the features like mounting of external storage, notifications about " +"updates or installation of 3rd party apps don´t work. Accessing files from " +"remote and sending of notification emails might also not work. We suggest to" +" enable internet connection for this server if you want to have all features" +" of ownCloud." +msgstr "" + +#: templates/admin.php:92 msgid "Cron" msgstr "" -#: templates/admin.php:37 +#: templates/admin.php:101 msgid "Execute one task with each page loaded" msgstr "" -#: templates/admin.php:43 +#: templates/admin.php:111 msgid "" "cron.php is registered at a webcron service. Call the cron.php page in the " "owncloud root once a minute over http." msgstr "" -#: templates/admin.php:49 +#: templates/admin.php:121 msgid "" "Use systems cron service. Call the cron.php file in the owncloud folder via " "a system cronjob once a minute." msgstr "" -#: templates/admin.php:56 +#: templates/admin.php:128 msgid "Sharing" msgstr "" -#: templates/admin.php:61 +#: templates/admin.php:134 msgid "Enable Share API" msgstr "" -#: templates/admin.php:62 +#: templates/admin.php:135 msgid "Allow apps to use the Share API" msgstr "" -#: templates/admin.php:67 +#: templates/admin.php:142 msgid "Allow links" msgstr "" -#: templates/admin.php:68 +#: templates/admin.php:143 msgid "Allow users to share items to the public with links" msgstr "" -#: templates/admin.php:73 +#: templates/admin.php:150 msgid "Allow resharing" msgstr "" -#: templates/admin.php:74 +#: templates/admin.php:151 msgid "Allow users to share items shared with them again" msgstr "" -#: templates/admin.php:79 +#: templates/admin.php:158 msgid "Allow users to share with anyone" msgstr "" -#: templates/admin.php:81 +#: templates/admin.php:161 msgid "Allow users to only share with users in their groups" msgstr "" -#: templates/admin.php:88 +#: templates/admin.php:168 +msgid "Security" +msgstr "" + +#: templates/admin.php:181 +msgid "Enforce HTTPS" +msgstr "" + +#: templates/admin.php:182 +msgid "" +"Enforces the clients to connect to ownCloud via an encrypted connection." +msgstr "" + +#: templates/admin.php:185 +msgid "" +"Please connect to this ownCloud instance via HTTPS to enable or disable the " +"SSL enforcement." +msgstr "" + +#: templates/admin.php:195 msgid "Log" msgstr "" -#: templates/admin.php:116 +#: templates/admin.php:196 +msgid "Log level" +msgstr "" + +#: templates/admin.php:227 msgid "More" msgstr "" -#: templates/admin.php:124 +#: templates/admin.php:228 +msgid "Less" +msgstr "" + +#: templates/admin.php:235 templates/personal.php:105 +msgid "Version" +msgstr "" + +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the AGPL." msgstr "" -#: templates/apps.php:10 +#: templates/apps.php:11 msgid "Add your App" msgstr "" -#: templates/apps.php:11 +#: templates/apps.php:12 msgid "More Apps" msgstr "" -#: templates/apps.php:27 +#: templates/apps.php:28 msgid "Select an App" msgstr "" -#: templates/apps.php:31 +#: templates/apps.php:34 msgid "See application page at apps.owncloud.com" msgstr "" -#: templates/apps.php:32 +#: templates/apps.php:36 msgid "-licensed by " msgstr "" -#: templates/help.php:9 -msgid "Documentation" +#: templates/apps.php:38 +msgid "Update" msgstr "" -#: templates/help.php:10 -msgid "Managing Big Files" +#: templates/help.php:4 +msgid "User Documentation" +msgstr "" + +#: templates/help.php:6 +msgid "Administrator Documentation" +msgstr "" + +#: templates/help.php:9 +msgid "Online Documentation" msgstr "" #: templates/help.php:11 -msgid "Ask a question" +msgid "Forum" msgstr "" -#: templates/help.php:23 -msgid "Problems connecting to help database." +#: templates/help.php:14 +msgid "Bugtracker" msgstr "" -#: templates/help.php:24 -msgid "Go there manually." -msgstr "" - -#: templates/help.php:32 -msgid "Answer" +#: templates/help.php:17 +msgid "Commercial Support" msgstr "" #: templates/personal.php:8 #, php-format -msgid "You have used %s of the available %s" +msgid "You have used %s of the available %s" msgstr "" -#: templates/personal.php:12 -msgid "Desktop and Mobile Syncing Clients" +#: templates/personal.php:15 +msgid "Get the apps to sync your files" msgstr "" -#: templates/personal.php:13 -msgid "Download" +#: templates/personal.php:26 +msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:19 -msgid "Your password was changed" -msgstr "" - -#: templates/personal.php:20 -msgid "Unable to change your password" -msgstr "" - -#: templates/personal.php:21 -msgid "Current password" -msgstr "" - -#: templates/personal.php:22 -msgid "New password" -msgstr "" - -#: templates/personal.php:23 -msgid "show" -msgstr "" - -#: templates/personal.php:24 -msgid "Change password" -msgstr "" - -#: templates/personal.php:30 -msgid "Email" -msgstr "" - -#: templates/personal.php:31 -msgid "Your email address" -msgstr "" - -#: templates/personal.php:32 -msgid "Fill in an email address to enable password recovery" -msgstr "" - -#: templates/personal.php:38 templates/personal.php:39 -msgid "Language" -msgstr "" - -#: templates/personal.php:44 -msgid "Help translate" -msgstr "" - -#: templates/personal.php:51 -msgid "use this address to connect to your ownCloud in your file manager" -msgstr "" - -#: templates/users.php:21 templates/users.php:76 -msgid "Name" -msgstr "" - -#: templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "" -#: templates/users.php:26 templates/users.php:78 templates/users.php:98 -msgid "Groups" +#: templates/personal.php:38 +msgid "Your password was changed" msgstr "" -#: templates/users.php:32 +#: templates/personal.php:39 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:40 +msgid "Current password" +msgstr "" + +#: templates/personal.php:42 +msgid "New password" +msgstr "" + +#: templates/personal.php:44 +msgid "Change password" +msgstr "" + +#: templates/personal.php:56 templates/users.php:81 +msgid "Display Name" +msgstr "" + +#: templates/personal.php:68 +msgid "Email" +msgstr "" + +#: templates/personal.php:70 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:71 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:77 templates/personal.php:78 +msgid "Language" +msgstr "" + +#: templates/personal.php:89 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:94 +msgid "WebDAV" +msgstr "" + +#: templates/personal.php:96 +msgid "Use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/users.php:21 templates/users.php:80 +msgid "Login Name" +msgstr "" + +#: templates/users.php:30 msgid "Create" msgstr "" -#: templates/users.php:35 -msgid "Default Quota" +#: templates/users.php:34 +msgid "Admin Recovery Password" msgstr "" -#: templates/users.php:55 templates/users.php:138 +#: templates/users.php:38 +msgid "Default Storage" +msgstr "" + +#: templates/users.php:44 templates/users.php:138 +msgid "Unlimited" +msgstr "" + +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:80 templates/users.php:112 -msgid "Group Admin" +#: templates/users.php:87 +msgid "Storage" msgstr "" -#: templates/users.php:82 -msgid "Quota" +#: templates/users.php:98 +msgid "change display name" msgstr "" -#: templates/users.php:146 -msgid "Delete" +#: templates/users.php:102 +msgid "set new password" +msgstr "" + +#: templates/users.php:133 +msgid "Default" msgstr "" diff --git a/l10n/fi/user_ldap.po b/l10n/fi/user_ldap.po index 5f8865fafa..cd2c388c98 100644 --- a/l10n/fi/user_ldap.po +++ b/l10n/fi/user_ldap.po @@ -7,164 +7,413 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings.php:8 +#: ajax/clearMappings.php:34 +msgid "Failed to clear the mappings." +msgstr "" + +#: ajax/deleteConfiguration.php:34 +msgid "Failed to delete the server configuration" +msgstr "" + +#: ajax/testConfiguration.php:36 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:39 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:43 +msgid "" +"The configuration is invalid. Please look in the ownCloud log for further " +"details." +msgstr "" + +#: js/settings.js:66 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:82 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:83 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:97 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:111 +msgid "mappings cleared" +msgstr "" + +#: js/settings.js:112 +msgid "Success" +msgstr "" + +#: js/settings.js:117 +msgid "Error" +msgstr "" + +#: js/settings.js:141 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:146 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:156 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:157 +msgid "Confirm Deletion" +msgstr "" + +#: templates/settings.php:9 +msgid "" +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behaviour. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:12 +msgid "" +"Warning: The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:16 +msgid "Server configuration" +msgstr "" + +#: templates/settings.php:32 +msgid "Add Server Configuration" +msgstr "" + +#: templates/settings.php:37 msgid "Host" msgstr "" -#: templates/settings.php:8 +#: templates/settings.php:39 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" msgstr "" -#: templates/settings.php:9 +#: templates/settings.php:40 msgid "Base DN" msgstr "" -#: templates/settings.php:9 +#: templates/settings.php:41 +msgid "One Base DN per line" +msgstr "" + +#: templates/settings.php:42 msgid "You can specify Base DN for users and groups in the Advanced tab" msgstr "" -#: templates/settings.php:10 +#: templates/settings.php:44 msgid "User DN" msgstr "" -#: templates/settings.php:10 +#: templates/settings.php:46 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." msgstr "" -#: templates/settings.php:11 +#: templates/settings.php:47 msgid "Password" msgstr "" -#: templates/settings.php:11 +#: templates/settings.php:50 msgid "For anonymous access, leave DN and Password empty." msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:51 msgid "User Login Filter" msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:54 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:55 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:56 msgid "User List Filter" msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:59 msgid "Defines the filter to apply, when retrieving users." msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:60 msgid "without any placeholder, e.g. \"objectClass=person\"." msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:61 msgid "Group Filter" msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:64 msgid "Defines the filter to apply, when retrieving groups." msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:65 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." msgstr "" -#: templates/settings.php:17 +#: templates/settings.php:69 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:71 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:71 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:72 msgid "Port" msgstr "" -#: templates/settings.php:18 -msgid "Base User Tree" +#: templates/settings.php:73 +msgid "Backup (Replica) Host" msgstr "" -#: templates/settings.php:19 -msgid "Base Group Tree" +#: templates/settings.php:73 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." msgstr "" -#: templates/settings.php:20 -msgid "Group-Member association" +#: templates/settings.php:74 +msgid "Backup (Replica) Port" msgstr "" -#: templates/settings.php:21 +#: templates/settings.php:75 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:75 +msgid "When switched on, ownCloud will only connect to the replica server." +msgstr "" + +#: templates/settings.php:76 msgid "Use TLS" msgstr "" -#: templates/settings.php:21 -msgid "Do not use it for SSL connections, it will fail." +#: templates/settings.php:76 +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" -#: templates/settings.php:22 +#: templates/settings.php:77 msgid "Case insensitve LDAP server (Windows)" msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "Turn off SSL certificate validation." msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "Not recommended, use for testing only." msgstr "" -#: templates/settings.php:24 -msgid "User Display Name Field" +#: templates/settings.php:79 +msgid "Cache Time-To-Live" msgstr "" -#: templates/settings.php:24 -msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" - -#: templates/settings.php:25 -msgid "Group Display Name Field" -msgstr "" - -#: templates/settings.php:25 -msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" - -#: templates/settings.php:27 -msgid "in bytes" -msgstr "" - -#: templates/settings.php:29 +#: templates/settings.php:79 msgid "in seconds. A change empties the cache." msgstr "" -#: templates/settings.php:30 +#: templates/settings.php:81 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:83 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:83 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:84 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:84 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:85 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:85 templates/settings.php:88 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:86 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:86 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:87 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:87 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:88 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:89 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:91 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:93 +msgid "Quota Field" +msgstr "" + +#: templates/settings.php:94 +msgid "Quota Default" +msgstr "" + +#: templates/settings.php:94 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:95 +msgid "Email Field" +msgstr "" + +#: templates/settings.php:96 +msgid "User Home Folder Naming Rule" +msgstr "" + +#: templates/settings.php:96 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." msgstr "" -#: templates/settings.php:32 +#: templates/settings.php:101 +msgid "Internal Username" +msgstr "" + +#: templates/settings.php:102 +msgid "" +"By default the internal username will be created from the UUID attribute. It" +" makes sure that the username is unique and characters do not need to be " +"converted. The internal username has the restriction that only these " +"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced " +"with their ASCII correspondence or simply omitted. On collisions a number " +"will be added/increased. The internal username is used to identify a user " +"internally. It is also the default name for the user home folder in " +"ownCloud. It is also a port of remote URLs, for instance for all *DAV " +"services. With this setting, the default behaviour can be overriden. To " +"achieve a similar behaviour as before ownCloud 5 enter the user display name" +" attribute in the following field. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users." +msgstr "" + +#: templates/settings.php:103 +msgid "Internal Username Attribute:" +msgstr "" + +#: templates/settings.php:104 +msgid "Override UUID detection" +msgstr "" + +#: templates/settings.php:105 +msgid "" +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is " +"used to doubtlessly identify LDAP users and groups. Also, the internal " +"username will be created based on the UUID, if not specified otherwise " +"above. You can override the setting and pass an attribute of your choice. " +"You must make sure that the attribute of your choice can be fetched for both" +" users and groups and it is unique. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users and groups." +msgstr "" + +#: templates/settings.php:106 +msgid "UUID Attribute:" +msgstr "" + +#: templates/settings.php:107 +msgid "Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:108 +msgid "" +"ownCloud uses usernames to store and assign (meta) data. In order to " +"precisely identify and recognize users, each LDAP user will have a internal " +"username. This requires a mapping from ownCloud username to LDAP user. The " +"created username is mapped to the UUID of the LDAP user. Additionally the DN" +" is cached as well to reduce LDAP interaction, but it is not used for " +"identification. If the DN changes, the changes will be found by ownCloud. " +"The internal ownCloud name is used all over in ownCloud. Clearing the " +"Mappings will have leftovers everywhere. Clearing the Mappings is not " +"configuration sensitive, it affects all LDAP configurations! Do never clear " +"the mappings in a production environment. Only clear mappings in a testing " +"or experimental stage." +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Groupname-LDAP Group Mapping" +msgstr "" + +#: templates/settings.php:111 +msgid "Test Configuration" +msgstr "" + +#: templates/settings.php:111 msgid "Help" msgstr "" diff --git a/l10n/fi/user_webdavauth.po b/l10n/fi/user_webdavauth.po new file mode 100644 index 0000000000..9f3a7c03ab --- /dev/null +++ b/l10n/fi/user_webdavauth.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "URL: http://" +msgstr "" + +#: templates/settings.php:7 +msgid "" +"ownCloud will send the user credentials to this URL. This plugin checks the " +"response and will interpret the HTTP statuscodes 401 and 403 as invalid " +"credentials, and all other responses as valid credentials." +msgstr "" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index e2afacc780..8e75917810 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 35eb801053..b203078f77 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_encryption.po b/l10n/fi_FI/files_encryption.po index 8e9d79de1f..2895592bdc 100644 --- a/l10n/fi_FI/files_encryption.po +++ b/l10n/fi_FI/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Salaus" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Tiedostojen salaus on käytössä." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Seuraavia tiedostotyyppejä ei salata:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Älä salaa seuravia tiedostotyyppejä:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ei mitään" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/fi_FI/files_external.po b/l10n/fi_FI/files_external.po index edd382a35e..03be39502c 100644 --- a/l10n/fi_FI/files_external.po +++ b/l10n/fi_FI/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 3b9d716daf..1e669de89d 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index 851ab24cd6..3b9804b01c 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_versions.po b/l10n/fi_FI/files_versions.po index f29c46f457..c93ead204d 100644 --- a/l10n/fi_FI/files_versions.po +++ b/l10n/fi_FI/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 14b138f950..8a83621a29 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index 6ff0246e51..283aa23af9 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Jiri Grönroos \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "kumoa" msgid "Unable to remove user" msgstr "Käyttäjän poistaminen ei onnistunut" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Ryhmät" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Ryhmän ylläpitäjä" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Poista" @@ -154,15 +154,15 @@ msgstr "Poista" msgid "add group" msgstr "lisää ryhmä" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Virhe käyttäjää luotaessa" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -400,7 +400,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "Näytä ensimmäisen käyttökerran avustaja uudelleen" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Salasana" @@ -424,7 +424,7 @@ msgstr "Uusi salasana" msgid "Change password" msgstr "Vaihda salasana" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Näyttönimi" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Käytä tätä osoitetta yhdistäessäsi ownCloudiisi tiedostonhallintaa käyttäen" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Kirjautumisnimi" @@ -464,30 +464,34 @@ msgstr "Kirjautumisnimi" msgid "Create" msgstr "Luo" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Oletustallennustila" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Rajoittamaton" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Muu" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Tallennustila" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "vaihda näyttönimi" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "aseta uusi salasana" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Oletus" diff --git a/l10n/fi_FI/user_ldap.po b/l10n/fi_FI/user_ldap.po index d4087f7e42..546ad400ad 100644 --- a/l10n/fi_FI/user_ldap.po +++ b/l10n/fi_FI/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/user_webdavauth.po b/l10n/fi_FI/user_webdavauth.po index ef62c35b8a..0361107193 100644 --- a/l10n/fi_FI/user_webdavauth.po +++ b/l10n/fi_FI/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Jiri Grönroos , 2012-2013. +# Jiri Grönroos , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index 89298278d5..f33e69d38f 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: msoko \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 3bea1fc06d..043584249e 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_encryption.po b/l10n/fr/files_encryption.po index a39633b451..ca51aab0f6 100644 --- a/l10n/fr/files_encryption.po +++ b/l10n/fr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Chiffrement" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Le chiffrement des fichiers est activé" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Les fichiers de types suivants ne seront pas chiffrés :" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Ne pas chiffrer les fichiers dont les types sont les suivants :" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Aucun" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/fr/files_external.po b/l10n/fr/files_external.po index 6426a14ef8..a014ba452c 100644 --- a/l10n/fr/files_external.po +++ b/l10n/fr/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index 72d0af006b..8b1f088ee7 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index 699ddf1fa0..5f9fde21ee 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_versions.po b/l10n/fr/files_versions.po index 9dd1fa7ce3..dd91318cfb 100644 --- a/l10n/fr/files_versions.po +++ b/l10n/fr/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index fc6f5e5ae5..912f2f2869 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index 755128df72..47d36ce754 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Christophe Lherieau \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "annuler" msgid "Unable to remove user" msgstr "Impossible de retirer l'utilisateur" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Groupes" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Groupe Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Supprimer" @@ -154,15 +154,15 @@ msgstr "Supprimer" msgid "add group" msgstr "ajouter un groupe" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Un nom d'utilisateur valide doit être saisi" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Erreur lors de la création de l'utilisateur" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Un mot de passe valide doit être saisi" @@ -400,7 +400,7 @@ msgstr "Obtenez les applications de synchronisation de vos fichiers" msgid "Show First Run Wizard again" msgstr "Revoir le premier lancement de l'installeur" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Mot de passe" @@ -424,7 +424,7 @@ msgstr "Nouveau mot de passe" msgid "Change password" msgstr "Changer de mot de passe" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nom affiché" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utiliser cette adresse pour vous connecter à ownCloud dans votre gestionnaire de fichiers" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nom de la connexion" @@ -464,30 +464,34 @@ msgstr "Nom de la connexion" msgid "Create" msgstr "Créer" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Support de stockage par défaut" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Illimité" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Autre" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Support de stockage" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Changer le nom affiché" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Changer le mot de passe" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Défaut" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index 4067405dd2..842ea4ffd9 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: plachance \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/user_webdavauth.po b/l10n/fr/user_webdavauth.po index 8fdd18d7e5..d1834912d7 100644 --- a/l10n/fr/user_webdavauth.po +++ b/l10n/fr/user_webdavauth.po @@ -3,17 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Christophe Lherieau , 2013. -# , 2013. -# , 2012. -# Robert Di Rosa <>, 2012. -# Romain DEP. , 2012-2013. +# Christophe Lherieau , 2013 +# mishka , 2013 +# ouafnico , 2012 +# Robert Di Rosa <>, 2012 +# Romain DEP. , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index 3a992b1ece..50c6e6c5f6 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "Cancelar" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Produciuse un erro ao cargar o modelo do selector de ficheiros" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index 8b39cf6301..32363f8b96 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index deed371c80..53d8a1f9b1 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Cifrado" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "O cifrado de ficheiros está activado" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Os seguintes tipos de ficheiros non van seren cifrados:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Excluír os seguintes tipos de ficheiros do cifrado:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ningún" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index 5353e0077d..38f4ed5da9 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 90d51ee3cf..dd3de23a2e 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index ecaed1a19b..dd65678ec6 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_versions.po b/l10n/gl/files_versions.po index b7440fc633..be763534a5 100644 --- a/l10n/gl/files_versions.po +++ b/l10n/gl/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index e5cf1f4955..50078ca2db 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# mbouzada , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +124,7 @@ msgstr "Deberá introducir unha conta existente ou o administrador." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Non foi posíbel estabelecer a conexión con Oracle" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 74c09165be..97102e6ae9 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: mbouzada \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "desfacer" msgid "Unable to remove user" msgstr "Non é posíbel retirar o usuario" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupo Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Eliminar" @@ -154,15 +154,15 @@ msgstr "Eliminar" msgid "add group" msgstr "engadir un grupo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Debe fornecer un nome de usuario" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Produciuse un erro ao crear o usuario" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Debe fornecer un contrasinal" @@ -400,7 +400,7 @@ msgstr "Obteña os aplicativos para sincronizar os seus ficheiros" msgid "Show First Run Wizard again" msgstr "Amosar o axudante da primeira execución outra vez" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Contrasinal" @@ -424,7 +424,7 @@ msgstr "Novo contrasinal" msgid "Change password" msgstr "Cambiar o contrasinal" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Amosar o nome" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Utilice este enderezo para conectarse ao seu ownCloud co administrador de ficheiros" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nome de acceso" @@ -464,30 +464,34 @@ msgstr "Nome de acceso" msgid "Create" msgstr "Crear" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Almacenamento predeterminado" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Sen límites" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Outro" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Almacenamento" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "cambiar o nome visíbel" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "estabelecer un novo contrasinal" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Predeterminado" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index 49b8fa8f96..ff7219da90 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/user_webdavauth.po b/l10n/gl/user_webdavauth.po index 89f599a0be..779cbf82ba 100644 --- a/l10n/gl/user_webdavauth.po +++ b/l10n/gl/user_webdavauth.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# , 2012. -# Miguel Branco, 2012. -# Xosé M. Lamas , 2013. +# mbouzada , 2013 +# mbouzada , 2012 +# Miguel Branco, 2012 +# Xosé M. Lamas , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/core.po b/l10n/he/core.po index 0af74d8309..ccc4290d4e 100644 --- a/l10n/he/core.po +++ b/l10n/he/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files.po b/l10n/he/files.po index abb7b0cc67..79e992c88f 100644 --- a/l10n/he/files.po +++ b/l10n/he/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_encryption.po b/l10n/he/files_encryption.po index 2d25899318..23f92e54c1 100644 --- a/l10n/he/files_encryption.po +++ b/l10n/he/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "הצפנה" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "כלום" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index 9a1d53589b..ac4482459c 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index c9c3852419..265ce1360e 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index dfdeec5351..31008260ab 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_versions.po b/l10n/he/files_versions.po index e39843a6d4..b6e191d237 100644 --- a/l10n/he/files_versions.po +++ b/l10n/he/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index 0f47beffef..090576d578 100644 --- a/l10n/he/lib.po +++ b/l10n/he/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index e3beab8096..94c0c927b0 100644 --- a/l10n/he/settings.po +++ b/l10n/he/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "ביטול" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "קבוצות" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "מנהל הקבוצה" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "מחיקה" @@ -153,15 +153,15 @@ msgstr "מחיקה" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "השג את האפליקציות על מנת לסנכרן את הקבצ msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "סיסמא" @@ -423,7 +423,7 @@ msgstr "ססמה חדשה" msgid "Change password" msgstr "שינוי ססמה" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "השתמש בכתובת זאת על מנת להתחבר אל ownCloud דרך סייר קבצים." -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "יצירה" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "אחר" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po index 7612e8edea..ceab275c3f 100644 --- a/l10n/he/user_ldap.po +++ b/l10n/he/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/user_webdavauth.po b/l10n/he/user_webdavauth.po index a1956eff5d..43d52925cb 100644 --- a/l10n/he/user_webdavauth.po +++ b/l10n/he/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index 7b7465c414..89fc47d284 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/files.po b/l10n/hi/files.po index 9474cdb73f..4fbd84f199 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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/files_encryption.po b/l10n/hi/files_encryption.po index 1c0263d2b3..c362c343cb 100644 --- a/l10n/hi/files_encryption.po +++ b/l10n/hi/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/hi/files_external.po b/l10n/hi/files_external.po index befaf1f2c9..d437731724 100644 --- a/l10n/hi/files_external.po +++ b/l10n/hi/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/files_sharing.po b/l10n/hi/files_sharing.po index d56df17b30..5a9ccbc09e 100644 --- a/l10n/hi/files_sharing.po +++ b/l10n/hi/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/files_trashbin.po b/l10n/hi/files_trashbin.po index ad93e8681d..6c057b0c24 100644 --- a/l10n/hi/files_trashbin.po +++ b/l10n/hi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/files_versions.po b/l10n/hi/files_versions.po index 66568383a7..e3697cd451 100644 --- a/l10n/hi/files_versions.po +++ b/l10n/hi/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index b6ed4f2b48..9792ca8cbc 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/settings.po b/l10n/hi/settings.po index b8210ac04b..c81fb256e3 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-04-27 02:17+0200\n" -"PO-Revision-Date: 2013-04-26 08:28+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/user_webdavauth.po b/l10n/hi/user_webdavauth.po index c6cb2a2413..712626e49c 100644 --- a/l10n/hi/user_webdavauth.po +++ b/l10n/hi/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index 9471638d9f..7a6dae0c2d 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index d85601532c..5170e22c07 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_encryption.po b/l10n/hr/files_encryption.po index ba59607422..bb0d55ddf2 100644 --- a/l10n/hr/files_encryption.po +++ b/l10n/hr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/hr/files_external.po b/l10n/hr/files_external.po index 6eef1684f4..b4d561b5be 100644 --- a/l10n/hr/files_external.po +++ b/l10n/hr/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index 6a0b1c13e7..7f50527558 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index 7c054264c4..e0317ae8d3 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_versions.po b/l10n/hr/files_versions.po index 6004430d18..4a55674bbd 100644 --- a/l10n/hr/files_versions.po +++ b/l10n/hr/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index 98511a6ff2..e64e4a8d3d 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index f86beb7215..dbbaaba717 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "vrati" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupe" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupa Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Obriši" @@ -153,15 +153,15 @@ msgstr "Obriši" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Lozinka" @@ -423,7 +423,7 @@ msgstr "Nova lozinka" msgid "Change password" msgstr "Izmjena lozinke" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Izradi" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "ostali" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/hr/user_ldap.po b/l10n/hr/user_ldap.po index ec2531ec06..b6b20e974e 100644 --- a/l10n/hr/user_ldap.po +++ b/l10n/hr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/user_webdavauth.po b/l10n/hr/user_webdavauth.po index c9f410b1ad..bc4382e068 100644 --- a/l10n/hr/user_webdavauth.po +++ b/l10n/hr/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index e077229e9a..ee92d52364 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 11ac1f30c0..79cb7eabaa 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_encryption.po b/l10n/hu_HU/files_encryption.po index 319463b638..5df77c3458 100644 --- a/l10n/hu_HU/files_encryption.po +++ b/l10n/hu_HU/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Titkosítás" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Az állományok titkosítása be van kapcsolva." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "A következő fájltípusok nem kerülnek titkosításra:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Zárjuk ki a titkosításból a következő fájltípusokat:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Egyik sem" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/hu_HU/files_external.po b/l10n/hu_HU/files_external.po index 45c8d923e2..91d88fed96 100644 --- a/l10n/hu_HU/files_external.po +++ b/l10n/hu_HU/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index 56e7f66070..411f8ee770 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index 3b66e1260b..4975db5ce2 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_versions.po b/l10n/hu_HU/files_versions.po index c10a67b3b8..39f58c0a5d 100644 --- a/l10n/hu_HU/files_versions.po +++ b/l10n/hu_HU/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index a03140c35c..bd672de992 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 357d84fe56..608dcabc06 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Laszlo Tornoci \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "visszavonás" msgid "Unable to remove user" msgstr "A felhasználót nem sikerült eltávolítáni" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Csoportok" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Csoportadminisztrátor" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Törlés" @@ -154,15 +154,15 @@ msgstr "Törlés" msgid "add group" msgstr "csoport hozzáadása" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Érvényes felhasználónevet kell megadnia" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "A felhasználó nem hozható létre" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Érvényes jelszót kell megadnia" @@ -400,7 +400,7 @@ msgstr "Töltse le az állományok szinkronizációjához szükséges programoka msgid "Show First Run Wizard again" msgstr "Nézzük meg újra az első bejelentkezéskori segítséget!" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Jelszó" @@ -424,7 +424,7 @@ msgstr "Az új jelszó" msgid "Change password" msgstr "A jelszó megváltoztatása" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "A megjelenített név" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Ennek a címnek a megadásával a WebDAV-protokollon keresztül saját gépének fájlkezelőjével is is elérheti az állományait." -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Bejelentkezési név" @@ -464,30 +464,34 @@ msgstr "Bejelentkezési név" msgid "Create" msgstr "Létrehozás" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Alapértelmezett tárhely" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Korlátlan" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Más" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Tárhely" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "a megjelenített név módosítása" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "új jelszó beállítása" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Alapértelmezett" diff --git a/l10n/hu_HU/user_ldap.po b/l10n/hu_HU/user_ldap.po index 1cfe317651..eaa8597a0d 100644 --- a/l10n/hu_HU/user_ldap.po +++ b/l10n/hu_HU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/user_webdavauth.po b/l10n/hu_HU/user_webdavauth.po index 535e53af33..e2056a92ca 100644 --- a/l10n/hu_HU/user_webdavauth.po +++ b/l10n/hu_HU/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Akos , 2013. +# akoscomp , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/core.po b/l10n/hy/core.po index f393e4f5a2..e738115c1e 100644 --- a/l10n/hy/core.po +++ b/l10n/hy/core.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" -"Language-Team: LANGUAGE \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/hy/files.po b/l10n/hy/files.po index 72daa086dd..ba7c214a9c 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files_encryption.po b/l10n/hy/files_encryption.po index 00b039ad39..58e5d4de2e 100644 --- a/l10n/hy/files_encryption.po +++ b/l10n/hy/files_encryption.po @@ -7,28 +7,87 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-13 23:12+0200\n" -"PO-Revision-Date: 2012-08-12 22:33+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings.php:3 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings.php:4 -msgid "Exclude the following file types from encryption" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" msgstr "" -#: templates/settings.php:5 -msgid "None" +#: templates/settings-admin.php:13 +msgid "Recovery account password" msgstr "" -#: templates/settings.php:10 -msgid "Enable Encryption" +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" + +#: templates/settings-personal.php:11 +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" + +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" + +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/hy/files_external.po b/l10n/hy/files_external.po index 245e624257..aed614ea01 100644 --- a/l10n/hy/files_external.po +++ b/l10n/hy/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_sharing.po b/l10n/hy/files_sharing.po index c39089bded..a581a2284b 100644 --- a/l10n/hy/files_sharing.po +++ b/l10n/hy/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_trashbin.po b/l10n/hy/files_trashbin.po index afbe098759..6b027b829f 100644 --- a/l10n/hy/files_trashbin.po +++ b/l10n/hy/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_versions.po b/l10n/hy/files_versions.po index 4caf1f1827..7e959a096a 100644 --- a/l10n/hy/files_versions.po +++ b/l10n/hy/files_versions.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-22 01:14+0200\n" -"PO-Revision-Date: 2012-09-21 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,26 +17,41 @@ msgstr "" "Language: hy\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: js/settings-personal.js:31 templates/settings-personal.php:10 -msgid "Expire all versions" +#: ajax/rollbackVersion.php:15 +#, php-format +msgid "Could not revert: %s" msgstr "" -#: js/versions.js:16 -msgid "History" +#: history.php:40 +msgid "success" msgstr "" -#: templates/settings-personal.php:4 +#: history.php:42 +#, php-format +msgid "File %s was reverted to version %s" +msgstr "" + +#: history.php:49 +msgid "failure" +msgstr "" + +#: history.php:51 +#, php-format +msgid "File %s could not be reverted to version %s" +msgstr "" + +#: history.php:69 +msgid "No old versions available" +msgstr "" + +#: history.php:74 +msgid "No path specified" +msgstr "" + +#: js/versions.js:6 msgid "Versions" msgstr "" -#: templates/settings-personal.php:7 -msgid "This will delete all existing backup versions of your files" -msgstr "" - -#: templates/settings.php:3 -msgid "Files Versioning" -msgstr "" - -#: templates/settings.php:4 -msgid "Enable" +#: templates/history.php:20 +msgid "Revert a file to a previous version by clicking on its revert button" msgstr "" diff --git a/l10n/hy/lib.po b/l10n/hy/lib.po index a6359330b3..a40365032a 100644 --- a/l10n/hy/lib.po +++ b/l10n/hy/lib.po @@ -7,61 +7,65 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-09-01 02:01+0200\n" -"PO-Revision-Date: 2012-09-01 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:288 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:295 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:300 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:305 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:312 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:314 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:280 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:281 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:281 files.php:306 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:305 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" +#: helper.php:228 +msgid "couldn't be determined" +msgstr "" + #: json.php:28 msgid "Application is not enabled" msgstr "" -#: json.php:39 json.php:63 json.php:75 +#: json.php:39 json.php:62 json.php:73 msgid "Authentication error" msgstr "" @@ -69,57 +73,173 @@ msgstr "" msgid "Token expired. Please reload page." msgstr "" -#: template.php:86 +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: setup.php:34 +msgid "Set an admin username." +msgstr "" + +#: setup.php:37 +msgid "Set an admin password." +msgstr "" + +#: setup.php:55 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup.php:58 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup.php:61 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup.php:64 +#, php-format +msgid "%s set the database host." +msgstr "" + +#: setup.php:132 setup.php:329 setup.php:374 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:133 setup.php:238 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup.php:155 +msgid "Oracle connection could not be established" +msgstr "" + +#: setup.php:237 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup.php:308 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup.php:309 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup.php:314 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup.php:315 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup.php:644 +#, php-format +msgid "MS SQL username and/or password not valid: %s" +msgstr "" + +#: setup.php:867 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:868 +#, php-format +msgid "Please double check the installation guides." +msgstr "" + +#: template.php:113 msgid "seconds ago" msgstr "" -#: template.php:87 +#: template.php:114 msgid "1 minute ago" msgstr "" -#: template.php:88 +#: template.php:115 #, php-format msgid "%d minutes ago" msgstr "" -#: template.php:91 +#: template.php:116 +msgid "1 hour ago" +msgstr "" + +#: template.php:117 +#, php-format +msgid "%d hours ago" +msgstr "" + +#: template.php:118 msgid "today" msgstr "" -#: template.php:92 +#: template.php:119 msgid "yesterday" msgstr "" -#: template.php:93 +#: template.php:120 #, php-format msgid "%d days ago" msgstr "" -#: template.php:94 +#: template.php:121 msgid "last month" msgstr "" -#: template.php:95 -msgid "months ago" +#: template.php:122 +#, php-format +msgid "%d months ago" msgstr "" -#: template.php:96 +#: template.php:123 msgid "last year" msgstr "" -#: template.php:97 +#: template.php:124 msgid "years ago" msgstr "" -#: updater.php:66 +#: vcategories.php:188 vcategories.php:249 #, php-format -msgid "%s is available. Get more information" -msgstr "" - -#: updater.php:68 -msgid "up to date" -msgstr "" - -#: updater.php:71 -msgid "updates check is disabled" +msgid "Could not find category \"%s\"" msgstr "" diff --git a/l10n/hy/settings.po b/l10n/hy/settings.po index 4d039f2ea6..aa40a478e9 100644 --- a/l10n/hy/settings.po +++ b/l10n/hy/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Ջնջել" @@ -153,15 +153,15 @@ msgstr "Ջնջել" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "" @@ -423,7 +423,7 @@ msgstr "" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Այլ" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/hy/user_ldap.po b/l10n/hy/user_ldap.po index 438a2108b7..b85c44b15c 100644 --- a/l10n/hy/user_ldap.po +++ b/l10n/hy/user_ldap.po @@ -7,164 +7,413 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-29 02:01+0200\n" -"PO-Revision-Date: 2012-08-29 00:03+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hy\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings.php:8 +#: ajax/clearMappings.php:34 +msgid "Failed to clear the mappings." +msgstr "" + +#: ajax/deleteConfiguration.php:34 +msgid "Failed to delete the server configuration" +msgstr "" + +#: ajax/testConfiguration.php:36 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:39 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:43 +msgid "" +"The configuration is invalid. Please look in the ownCloud log for further " +"details." +msgstr "" + +#: js/settings.js:66 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:82 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:83 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:97 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:111 +msgid "mappings cleared" +msgstr "" + +#: js/settings.js:112 +msgid "Success" +msgstr "" + +#: js/settings.js:117 +msgid "Error" +msgstr "" + +#: js/settings.js:141 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:146 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:156 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:157 +msgid "Confirm Deletion" +msgstr "" + +#: templates/settings.php:9 +msgid "" +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behaviour. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:12 +msgid "" +"Warning: The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:16 +msgid "Server configuration" +msgstr "" + +#: templates/settings.php:32 +msgid "Add Server Configuration" +msgstr "" + +#: templates/settings.php:37 msgid "Host" msgstr "" -#: templates/settings.php:8 +#: templates/settings.php:39 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" msgstr "" -#: templates/settings.php:9 +#: templates/settings.php:40 msgid "Base DN" msgstr "" -#: templates/settings.php:9 +#: templates/settings.php:41 +msgid "One Base DN per line" +msgstr "" + +#: templates/settings.php:42 msgid "You can specify Base DN for users and groups in the Advanced tab" msgstr "" -#: templates/settings.php:10 +#: templates/settings.php:44 msgid "User DN" msgstr "" -#: templates/settings.php:10 +#: templates/settings.php:46 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." msgstr "" -#: templates/settings.php:11 +#: templates/settings.php:47 msgid "Password" msgstr "" -#: templates/settings.php:11 +#: templates/settings.php:50 msgid "For anonymous access, leave DN and Password empty." msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:51 msgid "User Login Filter" msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:54 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." msgstr "" -#: templates/settings.php:12 +#: templates/settings.php:55 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:56 msgid "User List Filter" msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:59 msgid "Defines the filter to apply, when retrieving users." msgstr "" -#: templates/settings.php:13 +#: templates/settings.php:60 msgid "without any placeholder, e.g. \"objectClass=person\"." msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:61 msgid "Group Filter" msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:64 msgid "Defines the filter to apply, when retrieving groups." msgstr "" -#: templates/settings.php:14 +#: templates/settings.php:65 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." msgstr "" -#: templates/settings.php:17 +#: templates/settings.php:69 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:71 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:71 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:72 msgid "Port" msgstr "" -#: templates/settings.php:18 -msgid "Base User Tree" +#: templates/settings.php:73 +msgid "Backup (Replica) Host" msgstr "" -#: templates/settings.php:19 -msgid "Base Group Tree" +#: templates/settings.php:73 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." msgstr "" -#: templates/settings.php:20 -msgid "Group-Member association" +#: templates/settings.php:74 +msgid "Backup (Replica) Port" msgstr "" -#: templates/settings.php:21 +#: templates/settings.php:75 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:75 +msgid "When switched on, ownCloud will only connect to the replica server." +msgstr "" + +#: templates/settings.php:76 msgid "Use TLS" msgstr "" -#: templates/settings.php:21 -msgid "Do not use it for SSL connections, it will fail." +#: templates/settings.php:76 +msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" -#: templates/settings.php:22 +#: templates/settings.php:77 msgid "Case insensitve LDAP server (Windows)" msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "Turn off SSL certificate validation." msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." msgstr "" -#: templates/settings.php:23 +#: templates/settings.php:78 msgid "Not recommended, use for testing only." msgstr "" -#: templates/settings.php:24 -msgid "User Display Name Field" +#: templates/settings.php:79 +msgid "Cache Time-To-Live" msgstr "" -#: templates/settings.php:24 -msgid "The LDAP attribute to use to generate the user`s ownCloud name." -msgstr "" - -#: templates/settings.php:25 -msgid "Group Display Name Field" -msgstr "" - -#: templates/settings.php:25 -msgid "The LDAP attribute to use to generate the groups`s ownCloud name." -msgstr "" - -#: templates/settings.php:27 -msgid "in bytes" -msgstr "" - -#: templates/settings.php:29 +#: templates/settings.php:79 msgid "in seconds. A change empties the cache." msgstr "" -#: templates/settings.php:30 +#: templates/settings.php:81 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:83 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:83 +msgid "The LDAP attribute to use to generate the user`s ownCloud name." +msgstr "" + +#: templates/settings.php:84 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:84 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:85 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:85 templates/settings.php:88 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:86 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:86 +msgid "The LDAP attribute to use to generate the groups`s ownCloud name." +msgstr "" + +#: templates/settings.php:87 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:87 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:88 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:89 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:91 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:93 +msgid "Quota Field" +msgstr "" + +#: templates/settings.php:94 +msgid "Quota Default" +msgstr "" + +#: templates/settings.php:94 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:95 +msgid "Email Field" +msgstr "" + +#: templates/settings.php:96 +msgid "User Home Folder Naming Rule" +msgstr "" + +#: templates/settings.php:96 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." msgstr "" -#: templates/settings.php:32 +#: templates/settings.php:101 +msgid "Internal Username" +msgstr "" + +#: templates/settings.php:102 +msgid "" +"By default the internal username will be created from the UUID attribute. It" +" makes sure that the username is unique and characters do not need to be " +"converted. The internal username has the restriction that only these " +"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced " +"with their ASCII correspondence or simply omitted. On collisions a number " +"will be added/increased. The internal username is used to identify a user " +"internally. It is also the default name for the user home folder in " +"ownCloud. It is also a port of remote URLs, for instance for all *DAV " +"services. With this setting, the default behaviour can be overriden. To " +"achieve a similar behaviour as before ownCloud 5 enter the user display name" +" attribute in the following field. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users." +msgstr "" + +#: templates/settings.php:103 +msgid "Internal Username Attribute:" +msgstr "" + +#: templates/settings.php:104 +msgid "Override UUID detection" +msgstr "" + +#: templates/settings.php:105 +msgid "" +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is " +"used to doubtlessly identify LDAP users and groups. Also, the internal " +"username will be created based on the UUID, if not specified otherwise " +"above. You can override the setting and pass an attribute of your choice. " +"You must make sure that the attribute of your choice can be fetched for both" +" users and groups and it is unique. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users and groups." +msgstr "" + +#: templates/settings.php:106 +msgid "UUID Attribute:" +msgstr "" + +#: templates/settings.php:107 +msgid "Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:108 +msgid "" +"ownCloud uses usernames to store and assign (meta) data. In order to " +"precisely identify and recognize users, each LDAP user will have a internal " +"username. This requires a mapping from ownCloud username to LDAP user. The " +"created username is mapped to the UUID of the LDAP user. Additionally the DN" +" is cached as well to reduce LDAP interaction, but it is not used for " +"identification. If the DN changes, the changes will be found by ownCloud. " +"The internal ownCloud name is used all over in ownCloud. Clearing the " +"Mappings will have leftovers everywhere. Clearing the Mappings is not " +"configuration sensitive, it affects all LDAP configurations! Do never clear " +"the mappings in a production environment. Only clear mappings in a testing " +"or experimental stage." +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Groupname-LDAP Group Mapping" +msgstr "" + +#: templates/settings.php:111 +msgid "Test Configuration" +msgstr "" + +#: templates/settings.php:111 msgid "Help" msgstr "" diff --git a/l10n/hy/user_webdavauth.po b/l10n/hy/user_webdavauth.po new file mode 100644 index 0000000000..101ab76c34 --- /dev/null +++ b/l10n/hy/user_webdavauth.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "URL: http://" +msgstr "" + +#: templates/settings.php:7 +msgid "" +"ownCloud will send the user credentials to this URL. This plugin checks the " +"response and will interpret the HTTP statuscodes 401 and 403 as invalid " +"credentials, and all other responses as valid credentials." +msgstr "" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index 42c8432317..42e7435110 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index e30ef22aa4..8fc773b81b 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_encryption.po b/l10n/ia/files_encryption.po index 542eba1d2e..19dc97513c 100644 --- a/l10n/ia/files_encryption.po +++ b/l10n/ia/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/ia/files_external.po b/l10n/ia/files_external.po index e59e245c38..c5f0d75a41 100644 --- a/l10n/ia/files_external.po +++ b/l10n/ia/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index b4104ed933..42d31cb4af 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index 788abf2929..100d1a507a 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_versions.po b/l10n/ia/files_versions.po index 7c02d48b46..0e666b6dc5 100644 --- a/l10n/ia/files_versions.po +++ b/l10n/ia/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index a1ee19817d..414afc80d5 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 2a9cb44575..1ff9a6a4ac 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruppos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Deler" @@ -153,15 +153,15 @@ msgstr "Deler" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "Obtene le apps (applicationes) pro synchronizar tu files" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Contrasigno" @@ -423,7 +423,7 @@ msgstr "Nove contrasigno" msgid "Change password" msgstr "Cambiar contrasigno" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Crear" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Altere" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ia/user_ldap.po b/l10n/ia/user_ldap.po index df0015b677..f9c33cc351 100644 --- a/l10n/ia/user_ldap.po +++ b/l10n/ia/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/user_webdavauth.po b/l10n/ia/user_webdavauth.po index 5b5b3f3347..a91b0b25c8 100644 --- a/l10n/ia/user_webdavauth.po +++ b/l10n/ia/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index 059487c899..f2de19bb1f 100644 --- a/l10n/id/core.po +++ b/l10n/id/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files.po b/l10n/id/files.po index 2b55a07afc..1c40126513 100644 --- a/l10n/id/files.po +++ b/l10n/id/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_encryption.po b/l10n/id/files_encryption.po index 0bcbac2567..0266196aaf 100644 --- a/l10n/id/files_encryption.po +++ b/l10n/id/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Enkripsi" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Enkripsi berkas aktif." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Tipe berkas berikut tidak akan dienkripsi:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Kecualikan tipe berkas berikut dari enkripsi:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Tidak ada" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index 560eebccca..e8f9d9991e 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index 153f33d41c..b6afa49959 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index 01a06ac1fa..2d6c5c1bc6 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_versions.po b/l10n/id/files_versions.po index 24b9a2f18c..a22d263e44 100644 --- a/l10n/id/files_versions.po +++ b/l10n/id/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 1339358d4d..ba9d5f8ab3 100644 --- a/l10n/id/lib.po +++ b/l10n/id/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index 4a0a14b40b..a59e270c34 100644 --- a/l10n/id/settings.po +++ b/l10n/id/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "urungkan" msgid "Unable to remove user" msgstr "Tidak dapat menghapus pengguna" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grup" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Admin Grup" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Hapus" @@ -153,15 +153,15 @@ msgstr "Hapus" msgid "add group" msgstr "tambah grup" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Tuliskan nama pengguna yang valid" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Gagal membuat pengguna" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Tuliskan sandi yang valid" @@ -399,7 +399,7 @@ msgstr "Dapatkan aplikasi untuk sinkronisasi berkas Anda" msgid "Show First Run Wizard again" msgstr "Tampilkan Penuntun Konfigurasi Awal" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Sandi" @@ -423,7 +423,7 @@ msgstr "Sandi baru" msgid "Change password" msgstr "Ubah sandi" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nama Tampilan" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Gunakan alamat ini untuk terhubung ke ownCloud Anda pada manajer berkas " -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nama Masuk" @@ -463,30 +463,34 @@ msgstr "Nama Masuk" msgid "Create" msgstr "Buat" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Penyimpanan Baku" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Tak terbatas" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Lainnya" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Penyimpanan" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "ubah nama tampilan" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "setel sandi baru" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Baku" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 362136515b..6cc8ef52c7 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/user_webdavauth.po b/l10n/id/user_webdavauth.po index 89a9bc5bcd..f4b9d4b50e 100644 --- a/l10n/id/user_webdavauth.po +++ b/l10n/id/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Widya Walesa , 2013. +# w41l , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/core.po b/l10n/is/core.po index e22a70549e..40621a8f14 100644 --- a/l10n/is/core.po +++ b/l10n/is/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files.po b/l10n/is/files.po index 869426fc92..d74a3b4bd4 100644 --- a/l10n/is/files.po +++ b/l10n/is/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_encryption.po b/l10n/is/files_encryption.po index 5c70420bc3..db1c0d6ba6 100644 --- a/l10n/is/files_encryption.po +++ b/l10n/is/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Dulkóðun" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ekkert" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/is/files_external.po b/l10n/is/files_external.po index 24ffcf24c1..52a88992db 100644 --- a/l10n/is/files_external.po +++ b/l10n/is/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index 04af1ac95b..352d5e80ee 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index 8883af2d41..5392fa777b 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_versions.po b/l10n/is/files_versions.po index 0f8c3dd0c3..ad7f909d9f 100644 --- a/l10n/is/files_versions.po +++ b/l10n/is/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index 6e7680443b..38d90ff0c9 100644 --- a/l10n/is/lib.po +++ b/l10n/is/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/settings.po b/l10n/is/settings.po index 5f4d199f3e..fb877debb8 100644 --- a/l10n/is/settings.po +++ b/l10n/is/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "afturkalla" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Hópar" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Hópstjóri" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Eyða" @@ -153,15 +153,15 @@ msgstr "Eyða" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Lykilorð" @@ -423,7 +423,7 @@ msgstr "Nýtt lykilorð" msgid "Change password" msgstr "Breyta lykilorði" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Notaðu þessa vefslóð til að tengjast ownCloud svæðinu þínu" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Búa til" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Sjálfgefin gagnageymsla" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ótakmarkað" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Annað" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "gagnapláss" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Sjálfgefið" diff --git a/l10n/is/user_ldap.po b/l10n/is/user_ldap.po index da829f884d..a0b043fa98 100644 --- a/l10n/is/user_ldap.po +++ b/l10n/is/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/user_webdavauth.po b/l10n/is/user_webdavauth.po index 66194d2dae..6daf7cdbf0 100644 --- a/l10n/is/user_webdavauth.po +++ b/l10n/is/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. +# sveinn , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/core.po b/l10n/it/core.po index dbaa6ad613..afb024ad7f 100644 --- a/l10n/it/core.po +++ b/l10n/it/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:50+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files.po b/l10n/it/files.po index 212df78a49..33bc6bca21 100644 --- a/l10n/it/files.po +++ b/l10n/it/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_encryption.po b/l10n/it/files_encryption.po index 7fa5301fd9..89b718b4e7 100644 --- a/l10n/it/files_encryption.po +++ b/l10n/it/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:23+0000\n" -"Last-Translator: Vincenzo Reale \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Cifratura" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "La cifratura dei file è abilitata." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "I seguenti tipi di file non saranno cifrati:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Escludi i seguenti tipi di file dalla cifratura:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nessuno" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/it/files_external.po b/l10n/it/files_external.po index 69822dc443..8421dcb6da 100644 --- a/l10n/it/files_external.po +++ b/l10n/it/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index f6a7ae0e9d..7ffbbe6cbc 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 24417db353..5122590d44 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_versions.po b/l10n/it/files_versions.po index 51be74320b..eecb2f8f5e 100644 --- a/l10n/it/files_versions.po +++ b/l10n/it/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:24+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index 9d852114bd..960c17220c 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 23:50+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index ae610e485c..160cf8e116 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Vincenzo Reale \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "annulla" msgid "Unable to remove user" msgstr "Impossibile rimuovere l'utente" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruppi" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppi amministrati" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Elimina" @@ -154,15 +154,15 @@ msgstr "Elimina" msgid "add group" msgstr "aggiungi gruppo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Deve essere fornito un nome utente valido" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Errore durante la creazione dell'utente" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Deve essere fornita una password valida" @@ -400,7 +400,7 @@ msgstr "Scarica le applicazioni per sincronizzare i tuoi file" msgid "Show First Run Wizard again" msgstr "Mostra nuovamente la procedura di primo avvio" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Password" @@ -424,7 +424,7 @@ msgstr "Nuova password" msgid "Change password" msgstr "Modifica password" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nome visualizzato" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Usa questo indirizzo per connetterti al tuo ownCloud dal tuo gestore file" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nome utente" @@ -464,30 +464,34 @@ msgstr "Nome utente" msgid "Create" msgstr "Crea" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Archiviazione predefinita" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Illimitata" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Altro" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Archiviazione" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "cambia il nome visualizzato" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "imposta una nuova password" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Predefinito" diff --git a/l10n/it/user_ldap.po b/l10n/it/user_ldap.po index 21ebc69f2a..93a262334a 100644 --- a/l10n/it/user_ldap.po +++ b/l10n/it/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/user_webdavauth.po b/l10n/it/user_webdavauth.po index 705336024c..342564faf7 100644 --- a/l10n/it/user_webdavauth.po +++ b/l10n/it/user_webdavauth.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-05-20 02:01+0200\n" -"PO-Revision-Date: 2013-05-19 09:22+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index beac431856..3a48be5f08 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "キャンセル" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "ファイルピッカーのテンプレートの読み込みエラー" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 9990444dd1..14404a2b63 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 90764dc0da..9f859bdcdc 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "暗号化" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "ファイルの暗号化は有効です。" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "次のファイルタイプは暗号化されません:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "次のファイルタイプを暗号化から除外:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "なし" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ja_JP/files_external.po b/l10n/ja_JP/files_external.po index fc034819a2..b356a404ef 100644 --- a/l10n/ja_JP/files_external.po +++ b/l10n/ja_JP/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index cf0e397f11..b8185a8c78 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index 669aa32490..5275c832c9 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_versions.po b/l10n/ja_JP/files_versions.po index 62a28eb62b..2b62bba4cc 100644 --- a/l10n/ja_JP/files_versions.po +++ b/l10n/ja_JP/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index 6d06b310e7..f9f380b0fd 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 6444931858..84ce823a72 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Daisuke Deguchi \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "元に戻す" msgid "Unable to remove user" msgstr "ユーザを削除出来ません" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "グループ" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "グループ管理者" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "削除" @@ -154,15 +154,15 @@ msgstr "削除" msgid "add group" msgstr "グループを追加" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "有効なユーザ名を指定する必要があります" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "ユーザ作成エラー" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "有効なパスワードを指定する必要があります" @@ -400,7 +400,7 @@ msgstr "ファイルを同期するためのアプリを取得" msgid "Show First Run Wizard again" msgstr "初回ウィザードを再表示する" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "パスワード" @@ -424,7 +424,7 @@ msgstr "新しいパスワードを入力" msgid "Change password" msgstr "パスワードを変更" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "表示名" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "ファイルマネージャでownCloudに接続する際はこのアドレスを利用してください" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "ログイン名" @@ -464,30 +464,34 @@ msgstr "ログイン名" msgid "Create" msgstr "作成" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "デフォルトストレージ" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "無制限" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "その他" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "ストレージ" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "表示名を変更" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "新しいパスワードを設定" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "デフォルト" diff --git a/l10n/ja_JP/user_ldap.po b/l10n/ja_JP/user_ldap.po index db962e11ee..dab3083511 100644 --- a/l10n/ja_JP/user_ldap.po +++ b/l10n/ja_JP/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/user_webdavauth.po b/l10n/ja_JP/user_webdavauth.po index 2341b9f95c..9db2784888 100644 --- a/l10n/ja_JP/user_webdavauth.po +++ b/l10n/ja_JP/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Daisuke Deguchi , 2012. -# Daisuke Deguchi , 2012-2013. +# Daisuke Deguchi , 2012 +# Daisuke Deguchi , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/core.po b/l10n/ka/core.po index 3840fc7208..fc467e8e09 100644 --- a/l10n/ka/core.po +++ b/l10n/ka/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ka/files.po b/l10n/ka/files.po index bbfe04671f..d7db600b41 100644 --- a/l10n/ka/files.po +++ b/l10n/ka/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_encryption.po b/l10n/ka/files_encryption.po index 06cfd02260..a1c8afe604 100644 --- a/l10n/ka/files_encryption.po +++ b/l10n/ka/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ka\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/ka/files_external.po b/l10n/ka/files_external.po index a9eecf3b31..b0114117f5 100644 --- a/l10n/ka/files_external.po +++ b/l10n/ka/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_sharing.po b/l10n/ka/files_sharing.po index 3c158ffc46..6cc4821858 100644 --- a/l10n/ka/files_sharing.po +++ b/l10n/ka/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_trashbin.po b/l10n/ka/files_trashbin.po index 934d68261e..f40050033f 100644 --- a/l10n/ka/files_trashbin.po +++ b/l10n/ka/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_versions.po b/l10n/ka/files_versions.po index fe02221e10..c36ba25f09 100644 --- a/l10n/ka/files_versions.po +++ b/l10n/ka/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/lib.po b/l10n/ka/lib.po index 26890fc56d..9974f858cf 100644 --- a/l10n/ka/lib.po +++ b/l10n/ka/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ka\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "შველა" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "პერსონა" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "მომხმარებლები" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "ადმინისტრატორი" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "ZIP გადმოწერა გამორთულია" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ka/settings.po b/l10n/ka/settings.po index d7da24759a..fe9f5ba85c 100644 --- a/l10n/ka/settings.po +++ b/l10n/ka/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-04-27 02:17+0200\n" -"PO-Revision-Date: 2013-04-26 08:28+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/user_webdavauth.po b/l10n/ka/user_webdavauth.po index 5433bc595c..81c2565495 100644 --- a/l10n/ka/user_webdavauth.po +++ b/l10n/ka/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index a6fa0a1283..64fc196b18 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index e94fb3a405..c9057aaded 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_encryption.po b/l10n/ka_GE/files_encryption.po index 6678dd7cc5..291706c0f4 100644 --- a/l10n/ka_GE/files_encryption.po +++ b/l10n/ka_GE/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 09:04+0000\n" -"Last-Translator: drlinux64 \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "ენკრიპცია" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "ფაილის ენკრიპცია ჩართულია." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "შემდეგი ფაილური ტიპების ენკრიპცია არ მოხდება:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "ამოიღე შემდეგი ფაილის ტიპები ენკრიპციიდან:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "არა" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po index e3d4eb60b8..8322a11954 100644 --- a/l10n/ka_GE/files_external.po +++ b/l10n/ka_GE/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index 2f4fa98163..09f606f010 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index 023bdfaf78..4bcb5f61e3 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_versions.po b/l10n/ka_GE/files_versions.po index 87f15b8179..35af4eeea3 100644 --- a/l10n/ka_GE/files_versions.po +++ b/l10n/ka_GE/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 09:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index 254f201809..86e1a23451 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index 04a0d9d034..a2dfe9c2d9 100644 --- a/l10n/ka_GE/settings.po +++ b/l10n/ka_GE/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: drlinux64 \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "დაბრუნება" msgid "Unable to remove user" msgstr "მომხმარებლის წაშლა ვერ მოხერხდა" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "ჯგუფები" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "ჯგუფის ადმინისტრატორი" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "წაშლა" @@ -154,15 +154,15 @@ msgstr "წაშლა" msgid "add group" msgstr "ჯგუფის დამატება" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "უნდა მიუთითოთ არსებული მომხმარებლის სახელი" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "შეცდომა მომხმარებლის შექმნისას" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "უნდა მიუთითოთ არსებული პაროლი" @@ -400,7 +400,7 @@ msgstr "აპლიკაცია ფაილების სინქრო msgid "Show First Run Wizard again" msgstr "მაჩვენე თავიდან გაშვებული ვიზარდი" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "პაროლი" @@ -424,7 +424,7 @@ msgstr "ახალი პაროლი" msgid "Change password" msgstr "პაროლის შეცვლა" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "დისპლეის სახელი" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "გამოიყენე შემდეგი მისამართი ownCloud–თან დასაკავშირებლად შენს ფაილმენეჯერში" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "მომხმარებლის სახელი" @@ -464,30 +464,34 @@ msgstr "მომხმარებლის სახელი" msgid "Create" msgstr "შექმნა" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "საწყისი საცავი" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "ულიმიტო" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "სხვა" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "საცავი" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "შეცვალე დისფლეის სახელი" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "დააყენეთ ახალი პაროლი" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "საწყისი პარამეტრები" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po index 7f6f2193d4..c025752907 100644 --- a/l10n/ka_GE/user_ldap.po +++ b/l10n/ka_GE/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/user_webdavauth.po b/l10n/ka_GE/user_webdavauth.po index a6662b7e11..275948740f 100644 --- a/l10n/ka_GE/user_webdavauth.po +++ b/l10n/ka_GE/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Romeo Pirtskhalava , 2013. +# drlinux64 , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/core.po b/l10n/kn/core.po index b412b63b1f..d5e7454d04 100644 --- a/l10n/kn/core.po +++ b/l10n/kn/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/kn/files.po b/l10n/kn/files.po index 6dc2264411..d8ead40a60 100644 --- a/l10n/kn/files.po +++ b/l10n/kn/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/files_encryption.po b/l10n/kn/files_encryption.po index 602b35e3e8..ec2074a7a7 100644 --- a/l10n/kn/files_encryption.po +++ b/l10n/kn/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: kn\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/kn/files_external.po b/l10n/kn/files_external.po index d73e3f29a7..61e30ed382 100644 --- a/l10n/kn/files_external.po +++ b/l10n/kn/files_external.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/files_sharing.po b/l10n/kn/files_sharing.po index 17f0921f70..a2eded06e4 100644 --- a/l10n/kn/files_sharing.po +++ b/l10n/kn/files_sharing.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/files_trashbin.po b/l10n/kn/files_trashbin.po index 1886595cea..28bf4f67f9 100644 --- a/l10n/kn/files_trashbin.po +++ b/l10n/kn/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/files_versions.po b/l10n/kn/files_versions.po index 33d7a4a3b2..c61eacfeba 100644 --- a/l10n/kn/files_versions.po +++ b/l10n/kn/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/lib.po b/l10n/kn/lib.po index 8bc47e9ad2..2e4f63e50e 100644 --- a/l10n/kn/lib.po +++ b/l10n/kn/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: kn\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/kn/settings.po b/l10n/kn/settings.po index 034be72d0d..899150546d 100644 --- a/l10n/kn/settings.po +++ b/l10n/kn/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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" @@ -120,52 +120,52 @@ msgstr "" msgid "Updated" msgstr "" -#: js/personal.js:115 +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" -#: personal.php:29 personal.php:30 +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" @@ -324,11 +324,11 @@ msgstr "" msgid "Less" msgstr "" -#: templates/admin.php:235 templates/personal.php:100 +#: templates/admin.php:235 templates/personal.php:105 msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:103 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/kn/user_webdavauth.po b/l10n/kn/user_webdavauth.po index 1dde34b41e..771cd4f87e 100644 --- a/l10n/kn/user_webdavauth.po +++ b/l10n/kn/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kannada (http://www.transifex.com/projects/p/owncloud/language/kn/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index cee727ba0a..1994193459 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index 72a5537640..db4d64d7d5 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_encryption.po b/l10n/ko/files_encryption.po index 432f5ed625..36a52c5cbe 100644 --- a/l10n/ko/files_encryption.po +++ b/l10n/ko/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "암호화" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "없음" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index da5082097d..b34d6965bf 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index 54062f51db..b81e97c4cb 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index ace3627e1b..af0fe1a970 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_versions.po b/l10n/ko/files_versions.po index b3241be267..ce0e200f0b 100644 --- a/l10n/ko/files_versions.po +++ b/l10n/ko/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index b97c280d47..84d6019ebb 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 2c93f03d41..8d07c23891 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "되돌리기" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "그룹" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "그룹 관리자" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "삭제" @@ -153,15 +153,15 @@ msgstr "삭제" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "앱을 이용하여 당신의 파일을 동기화 할 수 있습니다." msgid "Show First Run Wizard again" msgstr "첫 실행 마법사 다시 보이기" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "암호" @@ -423,7 +423,7 @@ msgstr "새 암호" msgid "Change password" msgstr "암호 변경" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "표시 이름" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "파일 관리자에서 ownCloud에 접속하려면 이 주소를 사용하십시오." -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "로그인 이름" @@ -463,30 +463,34 @@ msgstr "로그인 이름" msgid "Create" msgstr "만들기" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "기본 저장소" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "무제한" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "기타" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "저장소" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "표시 이름 변경" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "새 암호 설정" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "기본값" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index 73fcf08442..d2b97308ba 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/user_webdavauth.po b/l10n/ko/user_webdavauth.po index 02c3920ceb..07e03e8838 100644 --- a/l10n/ko/user_webdavauth.po +++ b/l10n/ko/user_webdavauth.po @@ -3,15 +3,18 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# 남자사람 , 2012. -# Park Shinjo , 2013. +# aoiob4305 , 2013 +# aoiob4305 , 2013 +# 남자사람 , 2012 +# 남자사람 , 2012 +# Shinjo Park , 2013 +# Shinjo Park , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index df702490ca..413035b869 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index b7ff8f3d26..d23f1d864c 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_encryption.po b/l10n/ku_IQ/files_encryption.po index c961a1e23d..5af0949e5c 100644 --- a/l10n/ku_IQ/files_encryption.po +++ b/l10n/ku_IQ/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ku_IQ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "نهێنیکردن" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "هیچ" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ku_IQ/files_external.po b/l10n/ku_IQ/files_external.po index ff019f8366..39319cbb04 100644 --- a/l10n/ku_IQ/files_external.po +++ b/l10n/ku_IQ/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 7c929822b6..2c2621c77f 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index 348f5fc442..be4563630c 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_versions.po b/l10n/ku_IQ/files_versions.po index 0b3811c2a5..65c39e3343 100644 --- a/l10n/ku_IQ/files_versions.po +++ b/l10n/ku_IQ/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index a1f467cb56..6b5349bf84 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 20bae1d2d7..88e46580f1 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" @@ -153,15 +153,15 @@ msgstr "" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "وشەی تێپەربو" @@ -423,7 +423,7 @@ msgstr "وشەی نهێنی نوێ" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ku_IQ/user_ldap.po b/l10n/ku_IQ/user_ldap.po index 3d3bedc560..2c76951bed 100644 --- a/l10n/ku_IQ/user_ldap.po +++ b/l10n/ku_IQ/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/user_webdavauth.po b/l10n/ku_IQ/user_webdavauth.po index e623bd161b..381e788ea4 100644 --- a/l10n/ku_IQ/user_webdavauth.po +++ b/l10n/ku_IQ/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 463eb139e4..7ded0d5205 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index d52d6051d9..42bbb7db49 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_encryption.po b/l10n/lb/files_encryption.po index 09f6598370..4bce576ce6 100644 --- a/l10n/lb/files_encryption.po +++ b/l10n/lb/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/lb/files_external.po b/l10n/lb/files_external.po index d4781c62a4..6926dd0cc8 100644 --- a/l10n/lb/files_external.po +++ b/l10n/lb/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index c88a6bd12d..e071f795bd 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index cf346cfdc0..fa572f9d22 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_versions.po b/l10n/lb/files_versions.po index 7745e418c1..8c2aad478e 100644 --- a/l10n/lb/files_versions.po +++ b/l10n/lb/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 03a90b8536..3ac5b1843d 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index df0dc32b9f..2b874094f5 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "réckgängeg man" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruppen" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppen Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Läschen" @@ -153,15 +153,15 @@ msgstr "Läschen" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passwuert" @@ -423,7 +423,7 @@ msgstr "Neit Passwuert" msgid "Change password" msgstr "Passwuert änneren" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Erstellen" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Aner" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index acc80e3d59..c03e8c3552 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/user_webdavauth.po b/l10n/lb/user_webdavauth.po index 093341b3d2..1bceab60db 100644 --- a/l10n/lb/user_webdavauth.po +++ b/l10n/lb/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index d5b4a0e4df..2045ec04d5 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Roman Deniobe \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index 8fe91c5cfd..1eebbacea9 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_encryption.po b/l10n/lt_LT/files_encryption.po index 0ee0533579..d58c738c69 100644 --- a/l10n/lt_LT/files_encryption.po +++ b/l10n/lt_LT/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Šifravimas" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nieko" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index ab55528f0b..a99fd6418e 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 55fa2bf159..0e5e166ecd 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index b5ac859e3e..44da9a6a0b 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_versions.po b/l10n/lt_LT/files_versions.po index 57d518462c..393a714fb5 100644 --- a/l10n/lt_LT/files_versions.po +++ b/l10n/lt_LT/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index cbc43ee811..eea8492bfc 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index 45772fd1b8..4103ebe057 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "anuliuoti" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupės" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Ištrinti" @@ -153,15 +153,15 @@ msgstr "Ištrinti" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Slaptažodis" @@ -423,7 +423,7 @@ msgstr "Naujas slaptažodis" msgid "Change password" msgstr "Pakeisti slaptažodį" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Sukurti" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Kita" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index 1e73b74a00..006804c9ed 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/user_webdavauth.po b/l10n/lt_LT/user_webdavauth.po index 9f842d8539..173f9167f2 100644 --- a/l10n/lt_LT/user_webdavauth.po +++ b/l10n/lt_LT/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Mindaugas , 2013. +# Min2liz , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index 27ef0cf51e..a681f3b100 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 64d7876673..6f6fa26e2b 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_encryption.po b/l10n/lv/files_encryption.po index cc34243949..e18c05ba14 100644 --- a/l10n/lv/files_encryption.po +++ b/l10n/lv/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Šifrēšana" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Datņu šifrēšana ir aktivēta." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Sekojošās datnes netiks šifrētas:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Sekojošos datņu tipus izslēgt no šifrēšanas:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nav" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/lv/files_external.po b/l10n/lv/files_external.po index c833916c88..03718850f3 100644 --- a/l10n/lv/files_external.po +++ b/l10n/lv/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index ff9a877f0d..dfc7467507 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index e376539f1d..b6619dcfcb 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_versions.po b/l10n/lv/files_versions.po index 7b0e211dbf..440afe984a 100644 --- a/l10n/lv/files_versions.po +++ b/l10n/lv/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index e27de079e8..9fdb84580a 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index f8f6d620dc..e6076c2ef4 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "atsaukt" msgid "Unable to remove user" msgstr "Nevar izņemt lietotāju" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupas" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupas administrators" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Dzēst" @@ -153,15 +153,15 @@ msgstr "Dzēst" msgid "add group" msgstr "pievienot grupu" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Jānorāda derīgs lietotājvārds" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Kļūda, veidojot lietotāju" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Jānorāda derīga parole" @@ -399,7 +399,7 @@ msgstr "Saņem lietotnes, lai sinhronizētu savas datnes" msgid "Show First Run Wizard again" msgstr "Vēlreiz rādīt pirmās palaišanas vedni" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Parole" @@ -423,7 +423,7 @@ msgstr "Jauna parole" msgid "Change password" msgstr "Mainīt paroli" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Redzamais vārds" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Izmanto šo adresi, lai, izmantojot datņu pārvaldnieku, savienotos ar savu ownCloud" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Ierakstīšanās vārds" @@ -463,30 +463,34 @@ msgstr "Ierakstīšanās vārds" msgid "Create" msgstr "Izveidot" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Noklusējuma krātuve" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Neierobežota" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Cits" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Krātuve" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "mainīt redzamo vārdu" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "iestatīt jaunu paroli" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Noklusējuma" diff --git a/l10n/lv/user_ldap.po b/l10n/lv/user_ldap.po index 1165adf4e3..13372d4da4 100644 --- a/l10n/lv/user_ldap.po +++ b/l10n/lv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/user_webdavauth.po b/l10n/lv/user_webdavauth.po index d866091dc0..bc46877310 100644 --- a/l10n/lv/user_webdavauth.po +++ b/l10n/lv/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Rūdolfs Mazurs , 2013. +# Rūdolfs Mazurs , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 3bd008969b..d59d840a52 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index ec08eae8ff..02958a44b6 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_encryption.po b/l10n/mk/files_encryption.po index 42d168af09..86a89dc8c5 100644 --- a/l10n/mk/files_encryption.po +++ b/l10n/mk/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Енкрипција" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ништо" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/mk/files_external.po b/l10n/mk/files_external.po index 129bb0f945..f2fb362c44 100644 --- a/l10n/mk/files_external.po +++ b/l10n/mk/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index f79af9510d..988ee369f9 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index 40ba1a5bec..3a4424dbbe 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_versions.po b/l10n/mk/files_versions.po index a25f7e9a24..0f47626449 100644 --- a/l10n/mk/files_versions.po +++ b/l10n/mk/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index 602ebd67b8..bf04616b5b 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 658d0a099b..2e1f5bfe49 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "врати" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Групи" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Администратор на група" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Избриши" @@ -153,15 +153,15 @@ msgstr "Избриши" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Лозинка" @@ -423,7 +423,7 @@ msgstr "Нова лозинка" msgid "Change password" msgstr "Смени лозинка" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Користете ја оваа адреса да " -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Создај" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Останато" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/mk/user_ldap.po b/l10n/mk/user_ldap.po index a7c58a824e..db60851b09 100644 --- a/l10n/mk/user_ldap.po +++ b/l10n/mk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/user_webdavauth.po b/l10n/mk/user_webdavauth.po index f396468a5d..78f50a5abe 100644 --- a/l10n/mk/user_webdavauth.po +++ b/l10n/mk/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Georgi Stanojevski , 2012. +# Georgi Stanojevski , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index c7eaafc301..ba209641f8 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index dbc1e5041c..c7a4735cf3 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_encryption.po b/l10n/ms_MY/files_encryption.po index 15afa59d32..6bde24151b 100644 --- a/l10n/ms_MY/files_encryption.po +++ b/l10n/ms_MY/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/ms_MY/files_external.po b/l10n/ms_MY/files_external.po index 032ecb7e41..e47d90c476 100644 --- a/l10n/ms_MY/files_external.po +++ b/l10n/ms_MY/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index d9b6bb9972..1bd8517254 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index 57049cc4cd..eea348554b 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_versions.po b/l10n/ms_MY/files_versions.po index 22e8fd7432..c76d0b2b73 100644 --- a/l10n/ms_MY/files_versions.po +++ b/l10n/ms_MY/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index db278328fb..34be508aac 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index dfb5957c75..eade3e3980 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Kumpulan" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Padam" @@ -153,15 +153,15 @@ msgstr "Padam" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Kata laluan" @@ -423,7 +423,7 @@ msgstr "Kata laluan baru" msgid "Change password" msgstr "Ubah kata laluan" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Buat" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Lain" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ms_MY/user_ldap.po b/l10n/ms_MY/user_ldap.po index 9525ea29a9..094fc785d6 100644 --- a/l10n/ms_MY/user_ldap.po +++ b/l10n/ms_MY/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/user_webdavauth.po b/l10n/ms_MY/user_webdavauth.po index c2284a1360..acf08a184c 100644 --- a/l10n/ms_MY/user_webdavauth.po +++ b/l10n/ms_MY/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po index 8babf35390..5ded37e594 100644 --- a/l10n/my_MM/core.po +++ b/l10n/my_MM/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files.po b/l10n/my_MM/files.po index d99bb1abe9..96e24035fc 100644 --- a/l10n/my_MM/files.po +++ b/l10n/my_MM/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_encryption.po b/l10n/my_MM/files_encryption.po index 0980592321..ce8102c037 100644 --- a/l10n/my_MM/files_encryption.po +++ b/l10n/my_MM/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: my_MM\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/my_MM/files_external.po b/l10n/my_MM/files_external.po index d6fae81ea2..12ae346136 100644 --- a/l10n/my_MM/files_external.po +++ b/l10n/my_MM/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po index bc2fd5ec55..5b883066e1 100644 --- a/l10n/my_MM/files_sharing.po +++ b/l10n/my_MM/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_trashbin.po b/l10n/my_MM/files_trashbin.po index 9107081978..6c22f61318 100644 --- a/l10n/my_MM/files_trashbin.po +++ b/l10n/my_MM/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_versions.po b/l10n/my_MM/files_versions.po index 57a0f93840..60f265294d 100644 --- a/l10n/my_MM/files_versions.po +++ b/l10n/my_MM/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po index 58fc7a42e0..9f36f1a333 100644 --- a/l10n/my_MM/lib.po +++ b/l10n/my_MM/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/settings.po b/l10n/my_MM/settings.po index 0a56eeb646..d80dc9bfb1 100644 --- a/l10n/my_MM/settings.po +++ b/l10n/my_MM/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-04-27 02:17+0200\n" -"PO-Revision-Date: 2013-04-26 08:28+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" @@ -124,44 +124,44 @@ msgstr "" msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -328,7 +328,7 @@ msgstr "" msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:108 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/user_webdavauth.po b/l10n/my_MM/user_webdavauth.po index bfba4e1cd6..51443b323f 100644 --- a/l10n/my_MM/user_webdavauth.po +++ b/l10n/my_MM/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index e7dd2477aa..e52d7c445e 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index e107543d82..9f856e2f2c 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_encryption.po b/l10n/nb_NO/files_encryption.po index 7fca6d3980..c1e9969292 100644 --- a/l10n/nb_NO/files_encryption.po +++ b/l10n/nb_NO/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Kryptering" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Fil-kryptering er aktivert." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Følgende filtyper vil ikke bli kryptert:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Ekskluder følgende filtyper fra kryptering:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ingen" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/nb_NO/files_external.po b/l10n/nb_NO/files_external.po index 917f02c2bd..67bb014219 100644 --- a/l10n/nb_NO/files_external.po +++ b/l10n/nb_NO/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index 868b4fd6eb..c113ac9ba7 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index 7f0b7fad5f..3153e434c6 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_versions.po b/l10n/nb_NO/files_versions.po index 2c4717260a..0d1e2a829c 100644 --- a/l10n/nb_NO/files_versions.po +++ b/l10n/nb_NO/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 08f2ae8e5f..406555f3f3 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index 3debc0b668..defddd01c2 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Hans Nesse <>\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "angre" msgid "Unable to remove user" msgstr "Kunne ikke slette bruker" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupper" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppeadministrator" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Slett" @@ -154,15 +154,15 @@ msgstr "Slett" msgid "add group" msgstr "legg til gruppe" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Oppgi et gyldig brukernavn" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Feil ved oppretting av bruker" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Oppgi et gyldig passord" @@ -400,7 +400,7 @@ msgstr "Få dine apps til å synkronisere dine filer" msgid "Show First Run Wizard again" msgstr "Vis \"Førstegangs veiveiseren\" på nytt" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passord" @@ -424,7 +424,7 @@ msgstr "Nytt passord" msgid "Change password" msgstr "Endre passord" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Visningsnavn" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Bruk denne adressen for å kople til ownCloud i din filbehandler" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Logginn navn" @@ -464,30 +464,34 @@ msgstr "Logginn navn" msgid "Create" msgstr "Opprett" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Standard lager" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ubegrenset" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Annet" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Lager" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "endre visningsnavn" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "sett nytt passord" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Standard" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index 49f8151a5f..d77902c25c 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/user_webdavauth.po b/l10n/nb_NO/user_webdavauth.po index 0bdc4ebc7b..6228186b67 100644 --- a/l10n/nb_NO/user_webdavauth.po +++ b/l10n/nb_NO/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. +# espenbye , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/core.po b/l10n/ne/core.po index c5b6a57bbb..bbe6f7e5af 100644 --- a/l10n/ne/core.po +++ b/l10n/ne/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/ne/files.po b/l10n/ne/files.po index a20804fbfe..2a295626b1 100644 --- a/l10n/ne/files.po +++ b/l10n/ne/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/files_encryption.po b/l10n/ne/files_encryption.po index 4eb8d284c4..9572c5a369 100644 --- a/l10n/ne/files_encryption.po +++ b/l10n/ne/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ne\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/ne/files_external.po b/l10n/ne/files_external.po index 5b2e2ed597..7e7ed0e396 100644 --- a/l10n/ne/files_external.po +++ b/l10n/ne/files_external.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/files_sharing.po b/l10n/ne/files_sharing.po index 6905b432c8..978e72b2eb 100644 --- a/l10n/ne/files_sharing.po +++ b/l10n/ne/files_sharing.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/files_trashbin.po b/l10n/ne/files_trashbin.po index 3775730782..0eebd5d130 100644 --- a/l10n/ne/files_trashbin.po +++ b/l10n/ne/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/files_versions.po b/l10n/ne/files_versions.po index 3f57c723bc..75141cb34f 100644 --- a/l10n/ne/files_versions.po +++ b/l10n/ne/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/lib.po b/l10n/ne/lib.po index bf5c92bdbf..17b8279af6 100644 --- a/l10n/ne/lib.po +++ b/l10n/ne/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: ne\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/ne/settings.po b/l10n/ne/settings.po index 20957a953f..e1e8ae4a62 100644 --- a/l10n/ne/settings.po +++ b/l10n/ne/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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" @@ -120,52 +120,52 @@ msgstr "" msgid "Updated" msgstr "" -#: js/personal.js:115 +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" -#: personal.php:29 personal.php:30 +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" @@ -324,11 +324,11 @@ msgstr "" msgid "Less" msgstr "" -#: templates/admin.php:235 templates/personal.php:100 +#: templates/admin.php:235 templates/personal.php:105 msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:103 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ne/user_webdavauth.po b/l10n/ne/user_webdavauth.po index 64e025a6be..d8b30a63e3 100644 --- a/l10n/ne/user_webdavauth.po +++ b/l10n/ne/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Nepali (http://www.transifex.com/projects/p/owncloud/language/ne/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index 5f6f7e5413..c0e1e5b3a2 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 0c04c6ce0d..7b0422f385 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_encryption.po b/l10n/nl/files_encryption.po index 548a5be15b..26b54b72d7 100644 --- a/l10n/nl/files_encryption.po +++ b/l10n/nl/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Versleuteling" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Bestandsversleuteling geactiveerd." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "De volgende bestandstypen zullen niet worden versleuteld:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Sluit de volgende bestandstypen uit van versleuteling:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Geen" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index 643ebd1c4b..fa61feb513 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index 924a6cedb2..d7b53f40fc 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index 7ccc62dbeb..ee4343a7ab 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_versions.po b/l10n/nl/files_versions.po index 4b1bafb81f..83735c7ef7 100644 --- a/l10n/nl/files_versions.po +++ b/l10n/nl/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index 08b48b27de..a5ffe9bf68 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 84e5a9fa47..2cea7358ed 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: André Koot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "ongedaan maken" msgid "Unable to remove user" msgstr "Kon gebruiker niet verwijderen" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Groepen" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Groep beheerder" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Verwijder" @@ -154,15 +154,15 @@ msgstr "Verwijder" msgid "add group" msgstr "toevoegen groep" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Er moet een geldige gebruikersnaam worden opgegeven" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Fout bij aanmaken gebruiker" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Er moet een geldig wachtwoord worden opgegeven" @@ -400,7 +400,7 @@ msgstr "Download de apps om bestanden te synchen" msgid "Show First Run Wizard again" msgstr "Toon de Eerste start Wizard opnieuw" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Wachtwoord" @@ -424,7 +424,7 @@ msgstr "Nieuw" msgid "Change password" msgstr "Wijzig wachtwoord" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Weergavenaam" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Gebruik dit adres om te verbinden met uw ownCloud in uw bestandsbeheer" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Inlognaam" @@ -464,30 +464,34 @@ msgstr "Inlognaam" msgid "Create" msgstr "Creëer" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Default opslag" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ongelimiteerd" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Anders" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Opslag" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "wijzig weergavenaam" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "Instellen nieuw wachtwoord" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Default" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index 5fae8e1644..5def276210 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/user_webdavauth.po b/l10n/nl/user_webdavauth.po index 90490f9dd9..9cd0fb7d2e 100644 --- a/l10n/nl/user_webdavauth.po +++ b/l10n/nl/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# André Koot , 2012-2013. -# Richard Bos , 2012. +# André Koot , 2012-2013 +# Richard Bos , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index 4cdd6e7d94..f3fc449d67 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 4fb7cfb26d..e508384dac 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_encryption.po b/l10n/nn_NO/files_encryption.po index 8e3b4ed5f7..7aced3d3d2 100644 --- a/l10n/nn_NO/files_encryption.po +++ b/l10n/nn_NO/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: nn_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/nn_NO/files_external.po b/l10n/nn_NO/files_external.po index 2cdb030bf8..71a854578f 100644 --- a/l10n/nn_NO/files_external.po +++ b/l10n/nn_NO/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index 1b09608a94..7733d865d7 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index fb0d4b784b..c1c2af9a53 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_versions.po b/l10n/nn_NO/files_versions.po index 925f545edd..4de20b0844 100644 --- a/l10n/nn_NO/files_versions.po +++ b/l10n/nn_NO/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-21 02:00+0200\n" -"PO-Revision-Date: 2013-05-20 15:10+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index f36faa6225..a63a6bb231 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index ad438e4bd5..3730eba1ef 100644 --- a/l10n/nn_NO/settings.po +++ b/l10n/nn_NO/settings.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: unhammer \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -138,16 +138,16 @@ msgstr "angra" msgid "Unable to remove user" msgstr "Klarte ikkje fjerna brukaren" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupper" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppestyrar" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Slett" @@ -155,15 +155,15 @@ msgstr "Slett" msgid "add group" msgstr "legg til gruppe" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Du må oppgje eit gyldig brukarnamn" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Feil ved oppretting av brukar" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Du må oppgje eit gyldig passord" @@ -401,7 +401,7 @@ msgstr "Få app-ar som kan synkronisera filene dine" msgid "Show First Run Wizard again" msgstr "Vis Oppstartvegvisaren igjen" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Passord" @@ -425,7 +425,7 @@ msgstr "Nytt passord" msgid "Change password" msgstr "Endra passord" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Visingsnamn" @@ -457,7 +457,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Bruk denne adressa for å kopla til din ownCloud frå filhandsamaren din" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Innloggingsnamn" @@ -465,30 +465,34 @@ msgstr "Innloggingsnamn" msgid "Create" msgstr "Lag" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Standardlagring" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ubegrensa" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Anna" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Lagring" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "endra visingsnamn" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "lag nytt passord" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Standard" diff --git a/l10n/nn_NO/user_ldap.po b/l10n/nn_NO/user_ldap.po index fcc357a041..214b5151d1 100644 --- a/l10n/nn_NO/user_ldap.po +++ b/l10n/nn_NO/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/user_webdavauth.po b/l10n/nn_NO/user_webdavauth.po index 1b5e93f18c..865055bbb1 100644 --- a/l10n/nn_NO/user_webdavauth.po +++ b/l10n/nn_NO/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index e9d807e557..2d38312773 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index 69839d306e..b37b98e77b 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_encryption.po b/l10n/oc/files_encryption.po index 3fbf4c0e83..0ad7cd968e 100644 --- a/l10n/oc/files_encryption.po +++ b/l10n/oc/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/oc/files_external.po b/l10n/oc/files_external.po index 62da99608e..d581045b36 100644 --- a/l10n/oc/files_external.po +++ b/l10n/oc/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index 5a45905848..355080977a 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 5258fea480..457ddae4ba 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_versions.po b/l10n/oc/files_versions.po index 0c94025552..d1964f5cfa 100644 --- a/l10n/oc/files_versions.po +++ b/l10n/oc/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index 74a296f1ae..bed1fe3806 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index 0c5eb4da19..e5799e25ea 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "defar" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grops" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grop Admin" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Escafa" @@ -153,15 +153,15 @@ msgstr "Escafa" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Senhal" @@ -423,7 +423,7 @@ msgstr "Senhal novèl" msgid "Change password" msgstr "Cambia lo senhal" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Crea" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Autres" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/oc/user_ldap.po b/l10n/oc/user_ldap.po index b30db96613..c3e6148098 100644 --- a/l10n/oc/user_ldap.po +++ b/l10n/oc/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/user_webdavauth.po b/l10n/oc/user_webdavauth.po index 28e19ba92c..13f4be6160 100644 --- a/l10n/oc/user_webdavauth.po +++ b/l10n/oc/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 2fb34b855d..9d403274a9 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -224,7 +224,7 @@ msgstr "Anuluj" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Błąd podczas ładowania pliku wybranego szablonu" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index ea95d73c5b..422cdc66d6 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_encryption.po b/l10n/pl/files_encryption.po index 7fd0d19e5c..faa26a3998 100644 --- a/l10n/pl/files_encryption.po +++ b/l10n/pl/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Szyfrowanie" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Szyfrowanie plików jest włączone" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Poniższe typy plików nie będą szyfrowane:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Wyłącz poniższe typy plików z szyfrowania:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nic" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index 964bffff5d..925bef414e 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index ada05ce04a..8baac1c876 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index 3818146e22..20141b5ca9 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_versions.po b/l10n/pl/files_versions.po index f06438de5b..897cae06ad 100644 --- a/l10n/pl/files_versions.po +++ b/l10n/pl/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index 9503eaaf77..bf51a156f1 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -123,7 +124,7 @@ msgstr "Należy wprowadzić istniejące konto użytkownika lub administratora." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Nie można ustanowić połączenia z bazą Oracle" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index dd5b124971..d0043002b6 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: adbrand \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "cofnij" msgid "Unable to remove user" msgstr "Nie można usunąć użytkownika" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupy" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Administrator grupy" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Usuń" @@ -154,15 +154,15 @@ msgstr "Usuń" msgid "add group" msgstr "dodaj grupę" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Należy podać prawidłową nazwę użytkownika" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Błąd podczas tworzenia użytkownika" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Należy podać prawidłowe hasło" @@ -400,7 +400,7 @@ msgstr "Pobierz aplikacje żeby synchronizować swoje pliki" msgid "Show First Run Wizard again" msgstr "Uruchom ponownie kreatora pierwszego uruchomienia" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Hasło" @@ -424,7 +424,7 @@ msgstr "Nowe hasło" msgid "Change password" msgstr "Zmień hasło" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Wyświetlana nazwa" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Użyj tego adresu aby podłączyć zasób ownCloud w menedżerze plików" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Login" @@ -464,30 +464,34 @@ msgstr "Login" msgid "Create" msgstr "Utwórz" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Magazyn domyślny" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Bez limitu" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Inne" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Magazyn" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "zmień wyświetlaną nazwę" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "ustaw nowe hasło" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Domyślny" diff --git a/l10n/pl/user_ldap.po b/l10n/pl/user_ldap.po index 1bf45fe73e..60970a2135 100644 --- a/l10n/pl/user_ldap.po +++ b/l10n/pl/user_ldap.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -19,7 +20,7 @@ msgstr "" #: ajax/clearMappings.php:34 msgid "Failed to clear the mappings." -msgstr "" +msgstr "Nie udało się wyczyścić mapowania." #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" @@ -59,7 +60,7 @@ msgstr "Nie można dodać konfiguracji serwera" #: js/settings.js:111 msgid "mappings cleared" -msgstr "" +msgstr "Mapoanie wyczyszczone" #: js/settings.js:112 msgid "Success" @@ -342,7 +343,7 @@ msgstr "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atry #: templates/settings.php:101 msgid "Internal Username" -msgstr "" +msgstr "Wewnętrzna nazwa użytkownika" #: templates/settings.php:102 msgid "" @@ -362,11 +363,11 @@ msgstr "" #: templates/settings.php:103 msgid "Internal Username Attribute:" -msgstr "" +msgstr "Wewnętrzny atrybut nazwy uzżytkownika:" #: templates/settings.php:104 msgid "Override UUID detection" -msgstr "" +msgstr "Zastąp wykrywanie UUID" #: templates/settings.php:105 msgid "" @@ -381,11 +382,11 @@ msgstr "" #: templates/settings.php:106 msgid "UUID Attribute:" -msgstr "" +msgstr "Atrybuty UUID:" #: templates/settings.php:107 msgid "Username-LDAP User Mapping" -msgstr "" +msgstr "Mapowanie użytkownika LDAP" #: templates/settings.php:108 msgid "" diff --git a/l10n/pl/user_webdavauth.po b/l10n/pl/user_webdavauth.po index 437dc1175d..0f5ded49b5 100644 --- a/l10n/pl/user_webdavauth.po +++ b/l10n/pl/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# Cyryl Sochacki , 2012. -# Marcin Małecki , 2012. +# bbartlomiej , 2013 +# Cyryl Sochacki , 2012 +# Marcin Małecki , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 2407cc50ed..8d297b83b2 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index b650901aca..bff30ed4d8 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/files_encryption.po b/l10n/pl_PL/files_encryption.po index 13ec81b2fa..477facd06b 100644 --- a/l10n/pl_PL/files_encryption.po +++ b/l10n/pl_PL/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/pl_PL/files_external.po b/l10n/pl_PL/files_external.po index aec6c07a33..be11b7a026 100644 --- a/l10n/pl_PL/files_external.po +++ b/l10n/pl_PL/files_external.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-23 23:58+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/pl_PL/files_sharing.po b/l10n/pl_PL/files_sharing.po index 6bd035fa98..c8bd08a2ea 100644 --- a/l10n/pl_PL/files_sharing.po +++ b/l10n/pl_PL/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: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/pl_PL/files_trashbin.po b/l10n/pl_PL/files_trashbin.po index 7920003d18..e6ecf010e7 100644 --- a/l10n/pl_PL/files_trashbin.po +++ b/l10n/pl_PL/files_trashbin.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/pl_PL/files_versions.po b/l10n/pl_PL/files_versions.po index f20407f561..d6ce265c2a 100644 --- a/l10n/pl_PL/files_versions.po +++ b/l10n/pl_PL/files_versions.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index 08ef2633ca..8f136d5521 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 7245910d41..7cc05ae1cf 100644 --- a/l10n/pl_PL/settings.po +++ b/l10n/pl_PL/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" @@ -153,15 +153,15 @@ msgstr "" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "" @@ -423,7 +423,7 @@ msgstr "" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/pl_PL/user_ldap.po b/l10n/pl_PL/user_ldap.po index 9d3f142fb4..242252ed0e 100644 --- a/l10n/pl_PL/user_ldap.po +++ b/l10n/pl_PL/user_ldap.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"Last-Translator: FULL NAME \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" @@ -17,6 +17,10 @@ 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/clearMappings.php:34 +msgid "Failed to clear the mappings." +msgstr "" + #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" msgstr "" @@ -53,281 +57,363 @@ msgstr "" msgid "Cannot add server configuration" msgstr "" -#: js/settings.js:121 +#: js/settings.js:111 +msgid "mappings cleared" +msgstr "" + +#: js/settings.js:112 +msgid "Success" +msgstr "" + +#: js/settings.js:117 +msgid "Error" +msgstr "" + +#: js/settings.js:141 msgid "Connection test succeeded" msgstr "" -#: js/settings.js:126 +#: js/settings.js:146 msgid "Connection test failed" msgstr "" -#: js/settings.js:136 +#: js/settings.js:156 msgid "Do you really want to delete the current Server Configuration?" msgstr "" -#: js/settings.js:137 +#: js/settings.js:157 msgid "Confirm Deletion" msgstr "" -#: templates/settings.php:8 +#: templates/settings.php:9 msgid "" "Warning: Apps user_ldap and user_webdavauth are incompatible. You may" " experience unexpected behaviour. Please ask your system administrator to " "disable one of them." msgstr "" -#: templates/settings.php:11 +#: templates/settings.php:12 msgid "" "Warning: The PHP LDAP module is not installed, the backend will not " "work. Please ask your system administrator to install it." msgstr "" -#: templates/settings.php:15 +#: templates/settings.php:16 msgid "Server configuration" msgstr "" -#: templates/settings.php:31 +#: templates/settings.php:32 msgid "Add Server Configuration" msgstr "" -#: templates/settings.php:36 +#: templates/settings.php:37 msgid "Host" msgstr "" -#: templates/settings.php:38 +#: templates/settings.php:39 msgid "" "You can omit the protocol, except you require SSL. Then start with ldaps://" msgstr "" -#: templates/settings.php:39 +#: templates/settings.php:40 msgid "Base DN" msgstr "" -#: templates/settings.php:40 +#: templates/settings.php:41 msgid "One Base DN per line" msgstr "" -#: templates/settings.php:41 +#: templates/settings.php:42 msgid "You can specify Base DN for users and groups in the Advanced tab" msgstr "" -#: templates/settings.php:43 +#: templates/settings.php:44 msgid "User DN" msgstr "" -#: templates/settings.php:45 +#: templates/settings.php:46 msgid "" "The DN of the client user with which the bind shall be done, e.g. " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password " "empty." msgstr "" -#: templates/settings.php:46 +#: templates/settings.php:47 msgid "Password" msgstr "" -#: templates/settings.php:49 +#: templates/settings.php:50 msgid "For anonymous access, leave DN and Password empty." msgstr "" -#: templates/settings.php:50 +#: templates/settings.php:51 msgid "User Login Filter" msgstr "" -#: templates/settings.php:53 +#: templates/settings.php:54 #, php-format msgid "" "Defines the filter to apply, when login is attempted. %%uid replaces the " "username in the login action." msgstr "" -#: templates/settings.php:54 +#: templates/settings.php:55 #, php-format msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" msgstr "" -#: templates/settings.php:55 +#: templates/settings.php:56 msgid "User List Filter" msgstr "" -#: templates/settings.php:58 +#: templates/settings.php:59 msgid "Defines the filter to apply, when retrieving users." msgstr "" -#: templates/settings.php:59 +#: templates/settings.php:60 msgid "without any placeholder, e.g. \"objectClass=person\"." msgstr "" -#: templates/settings.php:60 +#: templates/settings.php:61 msgid "Group Filter" msgstr "" -#: templates/settings.php:63 +#: templates/settings.php:64 msgid "Defines the filter to apply, when retrieving groups." msgstr "" -#: templates/settings.php:64 +#: templates/settings.php:65 msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." msgstr "" -#: templates/settings.php:68 +#: templates/settings.php:69 msgid "Connection Settings" msgstr "" -#: templates/settings.php:70 +#: templates/settings.php:71 msgid "Configuration Active" msgstr "" -#: templates/settings.php:70 +#: templates/settings.php:71 msgid "When unchecked, this configuration will be skipped." msgstr "" -#: templates/settings.php:71 +#: templates/settings.php:72 msgid "Port" msgstr "" -#: templates/settings.php:72 +#: templates/settings.php:73 msgid "Backup (Replica) Host" msgstr "" -#: templates/settings.php:72 +#: templates/settings.php:73 msgid "" "Give an optional backup host. It must be a replica of the main LDAP/AD " "server." msgstr "" -#: templates/settings.php:73 +#: templates/settings.php:74 msgid "Backup (Replica) Port" msgstr "" -#: templates/settings.php:74 +#: templates/settings.php:75 msgid "Disable Main Server" msgstr "" -#: templates/settings.php:74 +#: templates/settings.php:75 msgid "When switched on, ownCloud will only connect to the replica server." msgstr "" -#: templates/settings.php:75 +#: templates/settings.php:76 msgid "Use TLS" msgstr "" -#: templates/settings.php:75 +#: templates/settings.php:76 msgid "Do not use it additionally for LDAPS connections, it will fail." msgstr "" -#: templates/settings.php:76 +#: templates/settings.php:77 msgid "Case insensitve LDAP server (Windows)" msgstr "" -#: templates/settings.php:77 +#: templates/settings.php:78 msgid "Turn off SSL certificate validation." msgstr "" -#: templates/settings.php:77 +#: templates/settings.php:78 msgid "" "If connection only works with this option, import the LDAP server's SSL " "certificate in your ownCloud server." msgstr "" -#: templates/settings.php:77 +#: templates/settings.php:78 msgid "Not recommended, use for testing only." msgstr "" -#: templates/settings.php:78 +#: templates/settings.php:79 msgid "Cache Time-To-Live" msgstr "" -#: templates/settings.php:78 +#: templates/settings.php:79 msgid "in seconds. A change empties the cache." msgstr "" -#: templates/settings.php:80 +#: templates/settings.php:81 msgid "Directory Settings" msgstr "" -#: templates/settings.php:82 +#: templates/settings.php:83 msgid "User Display Name Field" msgstr "" -#: templates/settings.php:82 +#: templates/settings.php:83 msgid "The LDAP attribute to use to generate the user`s ownCloud name." msgstr "" -#: templates/settings.php:83 +#: templates/settings.php:84 msgid "Base User Tree" msgstr "" -#: templates/settings.php:83 +#: templates/settings.php:84 msgid "One User Base DN per line" msgstr "" -#: templates/settings.php:84 +#: templates/settings.php:85 msgid "User Search Attributes" msgstr "" -#: templates/settings.php:84 templates/settings.php:87 +#: templates/settings.php:85 templates/settings.php:88 msgid "Optional; one attribute per line" msgstr "" -#: templates/settings.php:85 +#: templates/settings.php:86 msgid "Group Display Name Field" msgstr "" -#: templates/settings.php:85 +#: templates/settings.php:86 msgid "The LDAP attribute to use to generate the groups`s ownCloud name." msgstr "" -#: templates/settings.php:86 +#: templates/settings.php:87 msgid "Base Group Tree" msgstr "" -#: templates/settings.php:86 +#: templates/settings.php:87 msgid "One Group Base DN per line" msgstr "" -#: templates/settings.php:87 +#: templates/settings.php:88 msgid "Group Search Attributes" msgstr "" -#: templates/settings.php:88 +#: templates/settings.php:89 msgid "Group-Member association" msgstr "" -#: templates/settings.php:90 +#: templates/settings.php:91 msgid "Special Attributes" msgstr "" -#: templates/settings.php:92 +#: templates/settings.php:93 msgid "Quota Field" msgstr "" -#: templates/settings.php:93 +#: templates/settings.php:94 msgid "Quota Default" msgstr "" -#: templates/settings.php:93 +#: templates/settings.php:94 msgid "in bytes" msgstr "" -#: templates/settings.php:94 +#: templates/settings.php:95 msgid "Email Field" msgstr "" -#: templates/settings.php:95 +#: templates/settings.php:96 msgid "User Home Folder Naming Rule" msgstr "" -#: templates/settings.php:95 +#: templates/settings.php:96 msgid "" "Leave empty for user name (default). Otherwise, specify an LDAP/AD " "attribute." msgstr "" -#: templates/settings.php:99 +#: templates/settings.php:101 +msgid "Internal Username" +msgstr "" + +#: templates/settings.php:102 +msgid "" +"By default the internal username will be created from the UUID attribute. It" +" makes sure that the username is unique and characters do not need to be " +"converted. The internal username has the restriction that only these " +"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced " +"with their ASCII correspondence or simply omitted. On collisions a number " +"will be added/increased. The internal username is used to identify a user " +"internally. It is also the default name for the user home folder in " +"ownCloud. It is also a port of remote URLs, for instance for all *DAV " +"services. With this setting, the default behaviour can be overriden. To " +"achieve a similar behaviour as before ownCloud 5 enter the user display name" +" attribute in the following field. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users." +msgstr "" + +#: templates/settings.php:103 +msgid "Internal Username Attribute:" +msgstr "" + +#: templates/settings.php:104 +msgid "Override UUID detection" +msgstr "" + +#: templates/settings.php:105 +msgid "" +"By default, ownCloud autodetects the UUID attribute. The UUID attribute is " +"used to doubtlessly identify LDAP users and groups. Also, the internal " +"username will be created based on the UUID, if not specified otherwise " +"above. You can override the setting and pass an attribute of your choice. " +"You must make sure that the attribute of your choice can be fetched for both" +" users and groups and it is unique. Leave it empty for default behaviour. " +"Changes will have effect only on newly mapped (added) LDAP users and groups." +msgstr "" + +#: templates/settings.php:106 +msgid "UUID Attribute:" +msgstr "" + +#: templates/settings.php:107 +msgid "Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:108 +msgid "" +"ownCloud uses usernames to store and assign (meta) data. In order to " +"precisely identify and recognize users, each LDAP user will have a internal " +"username. This requires a mapping from ownCloud username to LDAP user. The " +"created username is mapped to the UUID of the LDAP user. Additionally the DN" +" is cached as well to reduce LDAP interaction, but it is not used for " +"identification. If the DN changes, the changes will be found by ownCloud. " +"The internal ownCloud name is used all over in ownCloud. Clearing the " +"Mappings will have leftovers everywhere. Clearing the Mappings is not " +"configuration sensitive, it affects all LDAP configurations! Do never clear " +"the mappings in a production environment. Only clear mappings in a testing " +"or experimental stage." +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:109 +msgid "Clear Groupname-LDAP Group Mapping" +msgstr "" + +#: templates/settings.php:111 msgid "Test Configuration" msgstr "" -#: templates/settings.php:99 +#: templates/settings.php:111 msgid "Help" msgstr "" diff --git a/l10n/pl_PL/user_webdavauth.po b/l10n/pl_PL/user_webdavauth.po index 8056a470e9..2ac39a4621 100644 --- a/l10n/pl_PL/user_webdavauth.po +++ b/l10n/pl_PL/user_webdavauth.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index e3e181fda0..4b451b5a43 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "Cancelar" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Template selecionador Erro ao carregar arquivo" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 3228aff3b8..3d8b33bb27 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Flávio Veras \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/files_encryption.po b/l10n/pt_BR/files_encryption.po index 76932c4a27..aaf88b3f80 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Criptografia" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "A criptografia de arquivos está ativada." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Os seguintes tipos de arquivo não serão criptografados:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Excluir os seguintes tipos de arquivo da criptografia:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nada" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index ab7d6a869c..a792ac29b9 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Flávio Veras \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/files_sharing.po b/l10n/pt_BR/files_sharing.po index 19b81cd23c..7eedb66963 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index 4d9963fa4f..ec03bb5f74 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_versions.po b/l10n/pt_BR/files_versions.po index 133e452f03..8da66a76aa 100644 --- a/l10n/pt_BR/files_versions.po +++ b/l10n/pt_BR/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index 91dd830a9b..68ce889af1 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:59+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Flávio Veras \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/settings.po b/l10n/pt_BR/settings.po index 98faa1feb7..d7c412cf55 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Flávio Veras \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "desfazer" msgid "Unable to remove user" msgstr "Impossível remover usuário" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupo Administrativo" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Excluir" @@ -154,15 +154,15 @@ msgstr "Excluir" msgid "add group" msgstr "adicionar grupo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Forneça um nome de usuário válido" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Erro ao criar usuário" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Forneça uma senha válida" @@ -400,7 +400,7 @@ msgstr "Faça com que os apps sincronize seus arquivos" msgid "Show First Run Wizard again" msgstr "Mostrar este Assistente de novo" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Senha" @@ -424,7 +424,7 @@ msgstr "Nova senha" msgid "Change password" msgstr "Alterar senha" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nome de Exibição" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Usar este endereço para conectar-se ao seu ownCloud no seu gerenciador de arquivos" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nome de Login" @@ -464,30 +464,34 @@ msgstr "Nome de Login" msgid "Create" msgstr "Criar" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Armazenamento Padrão" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Outro" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Armazenamento" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "alterar nome de exibição" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "definir nova senha" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Padrão" diff --git a/l10n/pt_BR/user_ldap.po b/l10n/pt_BR/user_ldap.po index 943319be94..58d5046ce4 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Flávio Veras \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/user_webdavauth.po b/l10n/pt_BR/user_webdavauth.po index c68169faea..ef503e227b 100644 --- a/l10n/pt_BR/user_webdavauth.po +++ b/l10n/pt_BR/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Rodrigo Tavares , 2013. -# , 2012. +# Rodrigo Tavares , 2013 +# thoriumbr , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index 900edfc55f..f542bd33cd 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 96feb9f119..4a4f2840d2 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_encryption.po b/l10n/pt_PT/files_encryption.po index d8cfa5891f..c618d2ad5f 100644 --- a/l10n/pt_PT/files_encryption.po +++ b/l10n/pt_PT/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Encriptação" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "A encriptação de ficheiros está ligada" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Os seguintes ficheiros não serão encriptados:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Excluir da encriptação os seguintes tipos de ficheiro:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Nenhum" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/pt_PT/files_external.po b/l10n/pt_PT/files_external.po index 7795ea340d..810188abef 100644 --- a/l10n/pt_PT/files_external.po +++ b/l10n/pt_PT/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index 3b7ae09e73..ba5c23b6a1 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 1eb1cd9f59..8a5bc4df46 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_versions.po b/l10n/pt_PT/files_versions.po index 7cfc0d4b7f..07264486f6 100644 --- a/l10n/pt_PT/files_versions.po +++ b/l10n/pt_PT/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index 0f08273d3d..d9abe16e6e 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 696961608e..739cdc7752 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Mouxy \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "desfazer" msgid "Unable to remove user" msgstr "Não foi possível remover o utilizador" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupos" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupo Administrador" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Eliminar" @@ -154,15 +154,15 @@ msgstr "Eliminar" msgid "add group" msgstr "Adicionar grupo" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Um nome de utilizador válido deve ser fornecido" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Erro a criar utilizador" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Uma password válida deve ser fornecida" @@ -400,7 +400,7 @@ msgstr "Obtenha as aplicações para sincronizar os seus ficheiros" msgid "Show First Run Wizard again" msgstr "Mostrar novamente Wizard de Arranque Inicial" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Password" @@ -424,7 +424,7 @@ msgstr "Nova palavra-chave" msgid "Change password" msgstr "Alterar palavra-chave" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Nome público" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Use este endereço no seu gestor de ficheiros para ligar à sua ownCloud" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Nome de utilizador" @@ -464,30 +464,34 @@ msgstr "Nome de utilizador" msgid "Create" msgstr "Criar" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Armazenamento Padrão" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Ilimitado" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Outro" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Armazenamento" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "modificar nome exibido" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "definir nova palavra-passe" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Padrão" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index 7186aa08f3..e22a9e8085 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/user_webdavauth.po b/l10n/pt_PT/user_webdavauth.po index ba3adcee86..e7e520a00a 100644 --- a/l10n/pt_PT/user_webdavauth.po +++ b/l10n/pt_PT/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012-2013. -# Helder Meneses , 2012. +# Mouxy , 2012-2013 +# Helder Meneses , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index 63e649fe27..75c699cffb 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 21bd251d8f..ded190fc42 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_encryption.po b/l10n/ro/files_encryption.po index 91a23afb23..55c40bdf76 100644 --- a/l10n/ro/files_encryption.po +++ b/l10n/ro/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Încriptare" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Niciuna" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index 5d9b879da2..5321d0919a 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index 1e3ee609ff..3feeea158c 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index 0b656f9091..88d58700c4 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_versions.po b/l10n/ro/files_versions.po index 4ae67ab2bc..07ce3897b2 100644 --- a/l10n/ro/files_versions.po +++ b/l10n/ro/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index 23c2edaf60..4f3eabe62c 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 1cce576b45..025c891439 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "Anulează ultima acțiune" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupuri" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Grupul Admin " -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Șterge" @@ -153,15 +153,15 @@ msgstr "Șterge" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "Ia acum aplicatia pentru sincronizarea fisierelor " msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Parolă" @@ -423,7 +423,7 @@ msgstr "Noua parolă" msgid "Change password" msgstr "Schimbă parola" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Folosește această adresă pentru a conecta ownCloud cu managerul de fișiere" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Crează" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Stocare implicită" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Nelimitată" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Altele" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Stocare" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Implicită" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index 95cdac3c71..eff75c4862 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/user_webdavauth.po b/l10n/ro/user_webdavauth.po index 637e3bf026..7c28a3a2af 100644 --- a/l10n/ro/user_webdavauth.po +++ b/l10n/ro/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dumitru Ursu <>, 2013. -# , 2012. +# Dimon Pockemon <>, 2013 +# laurentiucristescu , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index 18dbafd721..82c9486364 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: foool \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 90c3788e71..76134c946a 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_encryption.po b/l10n/ru/files_encryption.po index a43bdd216c..b57c5b6fa7 100644 --- a/l10n/ru/files_encryption.po +++ b/l10n/ru/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Шифрование" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Шифрование файла включено." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Следующие типы файлов не будут зашифрованы:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Исключить следующие типы файлов из шифрованных:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Нет новостей" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index 1ed13f40c5..d514f51a78 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 908097384e..aa42b19d98 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index 63bebc7818..77e0b0331a 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_versions.po b/l10n/ru/files_versions.po index 24bebd364f..78d3f7898b 100644 --- a/l10n/ru/files_versions.po +++ b/l10n/ru/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index fd33536fc2..228e23807e 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index 79c16bb485..72822fbc9e 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: eurekafag \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "отмена" msgid "Unable to remove user" msgstr "Невозможно удалить пользователя" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Группы" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Группа Администраторы" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Удалить" @@ -154,15 +154,15 @@ msgstr "Удалить" msgid "add group" msgstr "добавить группу" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Предоставте подходящее имя пользователя" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Ошибка создания пользователя" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Предоставте подходящий пароль" @@ -400,7 +400,7 @@ msgstr "Получить приложения для синхронизации msgid "Show First Run Wizard again" msgstr "Показать помощник настройки" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Пароль" @@ -424,7 +424,7 @@ msgstr "Новый пароль" msgid "Change password" msgstr "Сменить пароль" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Отображаемое имя" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Используйте этот URL для подключения файлового менеджера к Вашему хранилищу" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Имя пользователя" @@ -464,30 +464,34 @@ msgstr "Имя пользователя" msgid "Create" msgstr "Создать" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Хранилище по-умолчанию" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Неограниченно" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Другое" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Хранилище" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "изменить отображаемое имя" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "установить новый пароль" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "По-умолчанию" diff --git a/l10n/ru/user_ldap.po b/l10n/ru/user_ldap.po index ea122b169b..94f6b62a91 100644 --- a/l10n/ru/user_ldap.po +++ b/l10n/ru/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/user_webdavauth.po b/l10n/ru/user_webdavauth.po index c402a17458..d6d190c1ea 100644 --- a/l10n/ru/user_webdavauth.po +++ b/l10n/ru/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Denis , 2013. -# , 2012. -# , 2012. +# Denis , 2013 +# adol , 2012 +# skoptev , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 22b8f03bc0..9549e1c7be 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:20+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 04189fc1a3..a60fb5b883 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_encryption.po b/l10n/ru_RU/files_encryption.po index e9f3e4b203..1ef909b3f5 100644 --- a/l10n/ru_RU/files_encryption.po +++ b/l10n/ru_RU/files_encryption.po @@ -3,14 +3,12 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -19,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 -msgid "Encryption" -msgstr "Шифрование" +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 +msgid "Encryption" +msgstr "" + +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ни один" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ru_RU/files_external.po b/l10n/ru_RU/files_external.po index 3efa280a09..6b81e43f06 100644 --- a/l10n/ru_RU/files_external.po +++ b/l10n/ru_RU/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_sharing.po b/l10n/ru_RU/files_sharing.po index c0973fddbc..94dbca97a5 100644 --- a/l10n/ru_RU/files_sharing.po +++ b/l10n/ru_RU/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index 7e4bcb47ed..c01ff4dfd6 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_versions.po b/l10n/ru_RU/files_versions.po index 8931ebb796..39fe47d2ed 100644 --- a/l10n/ru_RU/files_versions.po +++ b/l10n/ru_RU/files_versions.po @@ -3,14 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:22+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"Last-Translator: FULL NAME \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" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 31c091a0c9..143e9b5498 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:20+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index 43c1d82fa7..8fe4ec687f 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Группы" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Удалить" @@ -153,15 +153,15 @@ msgstr "Удалить" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "" @@ -423,7 +423,7 @@ msgstr "" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Другое" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index 9e4d98945d..febe3cdaea 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:02+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/user_webdavauth.po b/l10n/ru_RU/user_webdavauth.po index 8223c3dc9b..b2e9152457 100644 --- a/l10n/ru_RU/user_webdavauth.po +++ b/l10n/ru_RU/user_webdavauth.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. -# , 2012. -# , 2012. +# AnnaSch , 2013 +# AnnaSch , 2012 +# skoptev , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2012-11-09 09:06+0000\n" +"Last-Translator: FULL NAME \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 +22,11 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "WebDAV аутентификация" +msgstr "" #: templates/settings.php:4 msgid "URL: http://" -msgstr "URL: http://" +msgstr "" #: templates/settings.php:7 msgid "" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index ebc75e66e2..f4623415ee 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index 58fe5a8217..cbd18eba80 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_encryption.po b/l10n/si_LK/files_encryption.po index 4f64e1d7f5..23b0eaf780 100644 --- a/l10n/si_LK/files_encryption.po +++ b/l10n/si_LK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "ගුප්ත කේතනය" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "කිසිවක් නැත" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po index 3fc997bbe1..9c280da04a 100644 --- a/l10n/si_LK/files_external.po +++ b/l10n/si_LK/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index ead4e52179..17e00511be 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index df590ba871..2aa02bca50 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_versions.po b/l10n/si_LK/files_versions.po index e25ea0e116..5106a985d4 100644 --- a/l10n/si_LK/files_versions.po +++ b/l10n/si_LK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 41cc98f783..407a6a1ee9 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index eee6f40820..c787880b28 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "නිෂ්ප්‍රභ කරන්න" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "කණ්ඩායම්" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "කාණ්ඩ පරිපාලක" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "මකා දමන්න" @@ -153,15 +153,15 @@ msgstr "මකා දමන්න" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "මුර පදය" @@ -423,7 +423,7 @@ msgstr "නව මුරපදය" msgid "Change password" msgstr "මුරපදය වෙනස් කිරීම" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "තනන්න" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "වෙනත්" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po index 391d5cdf80..69ab01c359 100644 --- a/l10n/si_LK/user_ldap.po +++ b/l10n/si_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/user_webdavauth.po b/l10n/si_LK/user_webdavauth.po index cb5a2e879d..50163948c6 100644 --- a/l10n/si_LK/user_webdavauth.po +++ b/l10n/si_LK/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Anushke Guneratne , 2012. +# Anushke Guneratne , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/core.po b/l10n/sk/core.po index 267759adec..fa7bfd1c9e 100644 --- a/l10n/sk/core.po +++ b/l10n/sk/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/sk/files.po b/l10n/sk/files.po index 29c0e20276..98060efa36 100644 --- a/l10n/sk/files.po +++ b/l10n/sk/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/files_encryption.po b/l10n/sk/files_encryption.po index e1bece6b03..d955fe70f3 100644 --- a/l10n/sk/files_encryption.po +++ b/l10n/sk/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/sk/files_external.po b/l10n/sk/files_external.po index 6addb65af3..62d305b600 100644 --- a/l10n/sk/files_external.po +++ b/l10n/sk/files_external.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/files_sharing.po b/l10n/sk/files_sharing.po index 9348337814..489876c2ba 100644 --- a/l10n/sk/files_sharing.po +++ b/l10n/sk/files_sharing.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/files_trashbin.po b/l10n/sk/files_trashbin.po index d363a222d4..101816d2a6 100644 --- a/l10n/sk/files_trashbin.po +++ b/l10n/sk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/files_versions.po b/l10n/sk/files_versions.po index 1a9009a2ae..e61ebf4f94 100644 --- a/l10n/sk/files_versions.po +++ b/l10n/sk/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/lib.po b/l10n/sk/lib.po index 50d96efd77..d2b85b1a0f 100644 --- a/l10n/sk/lib.po +++ b/l10n/sk/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/sk/settings.po b/l10n/sk/settings.po index 1c2339b2dc..09d08c8666 100644 --- a/l10n/sk/settings.po +++ b/l10n/sk/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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" @@ -120,52 +120,52 @@ msgstr "" msgid "Updated" msgstr "" -#: js/personal.js:115 +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" -#: personal.php:29 personal.php:30 +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" @@ -324,11 +324,11 @@ msgstr "" msgid "Less" msgstr "" -#: templates/admin.php:235 templates/personal.php:100 +#: templates/admin.php:235 templates/personal.php:105 msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:103 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk/user_webdavauth.po b/l10n/sk/user_webdavauth.po index 4a5a83a1ea..7eac54f7db 100644 --- a/l10n/sk/user_webdavauth.po +++ b/l10n/sk/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/owncloud/language/sk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index 992dcda4c5..a5ad8b667d 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 4107af7595..f5b5bb4b99 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_encryption.po b/l10n/sk_SK/files_encryption.po index 3c5194e64c..7986558531 100644 --- a/l10n/sk_SK/files_encryption.po +++ b/l10n/sk_SK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Šifrovanie" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Šifrovanie súborov nastavené." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Uvedené typy súborov nebudú šifrované:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Nešifrovať uvedené typy súborov" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Žiadny" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index 2545d3dae8..6d51e1e990 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index 986c44241a..e082720a9c 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index 3cb233da32..1765328e96 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_versions.po b/l10n/sk_SK/files_versions.po index e7044592ad..2e4b2d8438 100644 --- a/l10n/sk_SK/files_versions.po +++ b/l10n/sk_SK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 8f6db323d2..b4c5868fbd 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 2121c51ae9..2933b88074 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: mhh \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "vrátiť" msgid "Unable to remove user" msgstr "Nemožno odobrať používateľa" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Skupiny" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Správca skupiny" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Zmazať" @@ -154,15 +154,15 @@ msgstr "Zmazať" msgid "add group" msgstr "pridať skupinu" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Musíte zadať platné používateľské meno" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Chyba pri vytváraní používateľa" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Musíte zadať platné heslo" @@ -400,7 +400,7 @@ msgstr "Získať aplikácie na synchronizáciu Vašich súborov" msgid "Show First Run Wizard again" msgstr "Znovu zobraziť sprievodcu prvým spustením" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Heslo" @@ -424,7 +424,7 @@ msgstr "Nové heslo" msgid "Change password" msgstr "Zmeniť heslo" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Zobrazované meno" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Použite túto adresu pre pripojenie vášho ownCloud k súborovému správcovi" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Prihlasovacie meno" @@ -464,30 +464,34 @@ msgstr "Prihlasovacie meno" msgid "Create" msgstr "Vytvoriť" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Predvolené úložisko" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Nelimitované" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Iné" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Úložisko" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "zmeniť zobrazované meno" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "nastaviť nové heslo" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Predvolené" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 3d3ff42198..1df70434af 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/user_webdavauth.po b/l10n/sk_SK/user_webdavauth.po index e20d8617a6..b0cb3100e7 100644 --- a/l10n/sk_SK/user_webdavauth.po +++ b/l10n/sk_SK/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Marián Hvolka , 2013. -# , 2012. +# mhh , 2013 +# martin , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index 1cc6c8be92..2218dd2444 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 98dbfaa2d2..27ed585646 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_encryption.po b/l10n/sl/files_encryption.po index 716091a2f0..547f21c77e 100644 --- a/l10n/sl/files_encryption.po +++ b/l10n/sl/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Šifriranje" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Šifriranje datotek je omogočeno." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Navedene vrste datotek ne bodo šifrirane:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Ne šifriraj navedenih vrst datotek:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Brez" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index bfc8aef54d..73de395130 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index 3a379322f4..ce360b38b2 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index 4e473f9e0d..2737fb4833 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_versions.po b/l10n/sl/files_versions.po index 72f744258c..3ca64dce8f 100644 --- a/l10n/sl/files_versions.po +++ b/l10n/sl/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index f00e1cfe9e..021c2f0651 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 7aac3a9c61..4f0ec81dfb 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: mateju <>\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "razveljavi" msgid "Unable to remove user" msgstr "Uporabnika ni mogoče odstraniti" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Skupine" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Skrbnik skupine" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Izbriši" @@ -154,15 +154,15 @@ msgstr "Izbriši" msgid "add group" msgstr "dodaj skupino" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Navedeno mora biti veljavno uporabniško ime" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Napaka ustvarjanja uporabnika" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Navedeno mora biti veljavno geslo" @@ -400,7 +400,7 @@ msgstr "Pridobi programe za usklajevanje datotek" msgid "Show First Run Wizard again" msgstr "Zaženi čarovnika prvega zagona" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Geslo" @@ -424,7 +424,7 @@ msgstr "Novo geslo" msgid "Change password" msgstr "Spremeni geslo" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Prikazano ime" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Ta naslov uporabite za povezavo upravljalnika datotek z oblakom ownCloud." -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Prijavno ime" @@ -464,30 +464,34 @@ msgstr "Prijavno ime" msgid "Create" msgstr "Ustvari" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Privzeta shramba" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Neomejeno" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Drugo" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Shramba" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "spremeni prikazano ime" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "nastavi novo geslo" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Privzeto" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index 3ef07c58ce..a2bf110b8c 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/user_webdavauth.po b/l10n/sl/user_webdavauth.po index dc42b6b156..1d6f802d7e 100644 --- a/l10n/sl/user_webdavauth.po +++ b/l10n/sl/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Matej Urbančič <>, 2013. -# Peter Peroša , 2012-2013. +# mateju <>, 2013 +# Peter Peroša , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index 53b53efb25..f0dbeef076 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files.po b/l10n/sq/files.po index 3cc87f36be..c568a7ea9d 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_encryption.po b/l10n/sq/files_encryption.po index bccdde2ed2..9e60c9f781 100644 --- a/l10n/sq/files_encryption.po +++ b/l10n/sq/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: sq\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po index 40f6851fca..b37e931876 100644 --- a/l10n/sq/files_external.po +++ b/l10n/sq/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index 40e4950386..13bb44e5d8 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_trashbin.po b/l10n/sq/files_trashbin.po index 0c02b9d17a..fe7013717f 100644 --- a/l10n/sq/files_trashbin.po +++ b/l10n/sq/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_versions.po b/l10n/sq/files_versions.po index 4520df0880..3c148e4911 100644 --- a/l10n/sq/files_versions.po +++ b/l10n/sq/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po index ec8afab2c5..7087246f85 100644 --- a/l10n/sq/lib.po +++ b/l10n/sq/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po index f8450cb1d6..2a121b936a 100644 --- a/l10n/sq/settings.po +++ b/l10n/sq/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "anulo" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Elimino" @@ -153,15 +153,15 @@ msgstr "Elimino" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "Merrni app-et për sinkronizimin e skedarëve tuaj" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Kodi" @@ -423,7 +423,7 @@ msgstr "Kodi i ri" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po index 9e225efdf3..c998c3a755 100644 --- a/l10n/sq/user_ldap.po +++ b/l10n/sq/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/user_webdavauth.po b/l10n/sq/user_webdavauth.po index 9449bd231d..2ffc70b6f1 100644 --- a/l10n/sq/user_webdavauth.po +++ b/l10n/sq/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index b1d533cb3e..41a68f296d 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index f9bd1de117..c0c200fe30 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_encryption.po b/l10n/sr/files_encryption.po index 22a63dce30..87c2f4d32a 100644 --- a/l10n/sr/files_encryption.po +++ b/l10n/sr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Шифровање" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ништа" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/sr/files_external.po b/l10n/sr/files_external.po index 5a4ff450a2..727dfea3dc 100644 --- a/l10n/sr/files_external.po +++ b/l10n/sr/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index b129a71228..9ed2c5b704 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index fa2752d7b1..0c8f03dfa5 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_versions.po b/l10n/sr/files_versions.po index 2c8b97da34..74cb70e53d 100644 --- a/l10n/sr/files_versions.po +++ b/l10n/sr/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index 485582b642..ebc7f3d444 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 59a1cb704f..0ec3f4dd53 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "опозови" msgid "Unable to remove user" msgstr "Не могу да уклоним корисника" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Групе" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Управник групе" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Обриши" @@ -153,15 +153,15 @@ msgstr "Обриши" msgid "add group" msgstr "додај групу" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Морате унети исправно корисничко име" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Грешка при прављењу корисника" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Морате унети исправну лозинку" @@ -399,7 +399,7 @@ msgstr "Преузмите апликације ради синхронизов msgid "Show First Run Wizard again" msgstr "Поново прикажи чаробњак за прво покретање" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Лозинка" @@ -423,7 +423,7 @@ msgstr "Нова лозинка" msgid "Change password" msgstr "Измени лозинку" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Име за приказ" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Користите ову адресу да се повежете са ownCloud-ом у управљачу датотекама" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Корисничко име" @@ -463,30 +463,34 @@ msgstr "Корисничко име" msgid "Create" msgstr "Направи" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Подразумевано складиште" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Неограничено" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Друго" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Складиште" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "промени име за приказ" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "постави нову лозинку" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Подразумевано" diff --git a/l10n/sr/user_ldap.po b/l10n/sr/user_ldap.po index d743873a29..d03ebaa856 100644 --- a/l10n/sr/user_ldap.po +++ b/l10n/sr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/user_webdavauth.po b/l10n/sr/user_webdavauth.po index c72a84c03c..30b3f69adc 100644 --- a/l10n/sr/user_webdavauth.po +++ b/l10n/sr/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2013. +# Rancher , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 0fdd177341..d77f9e99bf 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index 3b0df58b92..f8a78e2dc6 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_encryption.po b/l10n/sr@latin/files_encryption.po index 457c34823a..a74b20d15a 100644 --- a/l10n/sr@latin/files_encryption.po +++ b/l10n/sr@latin/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/sr@latin/files_external.po b/l10n/sr@latin/files_external.po index c5525d7bad..d57670789b 100644 --- a/l10n/sr@latin/files_external.po +++ b/l10n/sr@latin/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index 6b3b853248..b4e99a9555 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index 48e196f8f1..f35ead6c73 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_versions.po b/l10n/sr@latin/files_versions.po index 2f888ae0aa..ccd4cfed29 100644 --- a/l10n/sr@latin/files_versions.po +++ b/l10n/sr@latin/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 8b50f9673b..8d5ce2c288 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index 43034f3b49..e2014da2ff 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupe" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Obriši" @@ -153,15 +153,15 @@ msgstr "Obriši" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Lozinka" @@ -423,7 +423,7 @@ msgstr "Nova lozinka" msgid "Change password" msgstr "Izmeni lozinku" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "Napravi" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Drugo" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/sr@latin/user_ldap.po b/l10n/sr@latin/user_ldap.po index f3a97db15e..fa87c1da98 100644 --- a/l10n/sr@latin/user_ldap.po +++ b/l10n/sr@latin/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-05-17 02:03+0200\n" -"PO-Revision-Date: 2013-05-17 00:04+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/user_webdavauth.po b/l10n/sr@latin/user_webdavauth.po index 44c82fe664..8a2eb941c1 100644 --- a/l10n/sr@latin/user_webdavauth.po +++ b/l10n/sr@latin/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 9363336483..55bbdb3181 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 77f7e3f849..de78bc0590 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_encryption.po b/l10n/sv/files_encryption.po index 990e7bf176..2304b076cb 100644 --- a/l10n/sv/files_encryption.po +++ b/l10n/sv/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Kryptering" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Filkryptering är aktiverat." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Följande filtyper kommer inte att krypteras:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Exkludera följande filtyper från kryptering:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Ingen" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/sv/files_external.po b/l10n/sv/files_external.po index 8264e4d067..7187b42757 100644 --- a/l10n/sv/files_external.po +++ b/l10n/sv/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 652c7f84c9..18c691e54c 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index a2f0d01a62..c709d6e6ed 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_versions.po b/l10n/sv/files_versions.po index 7f6c0a26be..0448134617 100644 --- a/l10n/sv/files_versions.po +++ b/l10n/sv/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index a387fe4822..fcaee0db29 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index b2802dad5a..9ad1fa01f7 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "ångra" msgid "Unable to remove user" msgstr "Kan inte ta bort användare" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Grupper" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Gruppadministratör" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Radera" @@ -153,15 +153,15 @@ msgstr "Radera" msgid "add group" msgstr "lägg till grupp" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Ett giltigt användarnamn måste anges" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Fel vid skapande av användare" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Ett giltigt lösenord måste anges" @@ -399,7 +399,7 @@ msgstr "Skaffa appar för att synkronisera dina filer" msgid "Show First Run Wizard again" msgstr "Visa Första uppstarts-guiden igen" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Lösenord" @@ -423,7 +423,7 @@ msgstr "Nytt lösenord" msgid "Change password" msgstr "Ändra lösenord" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Visat namn" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Använd denna adress för att ansluta till ownCloud i din filhanterare" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Inloggningsnamn" @@ -463,30 +463,34 @@ msgstr "Inloggningsnamn" msgid "Create" msgstr "Skapa" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Förvald lagring" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Obegränsad" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Annat" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Lagring" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "ändra visat namn" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "ange nytt lösenord" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Förvald" diff --git a/l10n/sv/user_ldap.po b/l10n/sv/user_ldap.po index 466f22acaf..87214836c2 100644 --- a/l10n/sv/user_ldap.po +++ b/l10n/sv/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/user_webdavauth.po b/l10n/sv/user_webdavauth.po index 0cb54a97da..ec341c5481 100644 --- a/l10n/sv/user_webdavauth.po +++ b/l10n/sv/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Magnus Höglund , 2012-2013. +# Magnus Höglund , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/core.po b/l10n/sw_KE/core.po index 09988ffea2..ee5e620265 100644 --- a/l10n/sw_KE/core.po +++ b/l10n/sw_KE/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-04-30 01:57+0200\n" -"PO-Revision-Date: 2013-04-29 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" @@ -212,26 +212,30 @@ msgstr "" msgid "years ago" msgstr "" -#: js/oc-dialogs.js:117 js/oc-dialogs.js:247 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:121 js/oc-dialogs.js:189 js/oc-dialogs.js:240 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:185 +#: js/oc-dialogs.js:117 msgid "Choose" msgstr "" -#: js/oc-dialogs.js:215 +#: js/oc-dialogs.js:121 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:138 js/oc-dialogs.js:195 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:161 msgid "Yes" msgstr "" -#: js/oc-dialogs.js:222 +#: js/oc-dialogs.js:168 msgid "No" msgstr "" +#: js/oc-dialogs.js:181 +msgid "Ok" +msgstr "" + #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 msgid "The object type is not specified." diff --git a/l10n/sw_KE/files.po b/l10n/sw_KE/files.po index a8b0ef83d0..838ddc4ca6 100644 --- a/l10n/sw_KE/files.po +++ b/l10n/sw_KE/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-05-15 01:59+0200\n" -"PO-Revision-Date: 2013-05-15 00:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/files_encryption.po b/l10n/sw_KE/files_encryption.po index 84ed219358..a161ae8090 100644 --- a/l10n/sw_KE/files_encryption.po +++ b/l10n/sw_KE/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: sw_KE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/sw_KE/files_external.po b/l10n/sw_KE/files_external.po index 9a1b8f84a9..7958c592cf 100644 --- a/l10n/sw_KE/files_external.po +++ b/l10n/sw_KE/files_external.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/files_sharing.po b/l10n/sw_KE/files_sharing.po index 327c56dc2f..486d565277 100644 --- a/l10n/sw_KE/files_sharing.po +++ b/l10n/sw_KE/files_sharing.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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/files_trashbin.po b/l10n/sw_KE/files_trashbin.po index b865f9f8a6..d76092bcb4 100644 --- a/l10n/sw_KE/files_trashbin.po +++ b/l10n/sw_KE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/files_versions.po b/l10n/sw_KE/files_versions.po index 2a223ee7bb..93654e24af 100644 --- a/l10n/sw_KE/files_versions.po +++ b/l10n/sw_KE/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/lib.po b/l10n/sw_KE/lib.po index 88df9e82be..1b46612b1c 100644 --- a/l10n/sw_KE/lib.po +++ b/l10n/sw_KE/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-04-28 01:57+0200\n" -"PO-Revision-Date: 2013-04-27 23:57+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" @@ -17,43 +17,43 @@ msgstr "" "Language: sw_KE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: app.php:349 +#: app.php:357 msgid "Help" msgstr "" -#: app.php:362 +#: app.php:370 msgid "Personal" msgstr "" -#: app.php:373 +#: app.php:381 msgid "Settings" msgstr "" -#: app.php:385 +#: app.php:393 msgid "Users" msgstr "" -#: app.php:398 +#: app.php:406 msgid "Apps" msgstr "" -#: app.php:406 +#: app.php:414 msgid "Admin" msgstr "" -#: files.php:209 +#: files.php:207 msgid "ZIP download is turned off." msgstr "" -#: files.php:210 +#: files.php:208 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:211 files.php:244 +#: files.php:209 files.php:242 msgid "Back to Files" msgstr "" -#: files.php:241 +#: files.php:239 msgid "Selected files too large to generate zip file." msgstr "" @@ -113,72 +113,76 @@ msgstr "" msgid "%s set the database host." msgstr "" -#: setup.php:132 setup.php:325 setup.php:370 +#: setup.php:132 setup.php:329 setup.php:374 msgid "PostgreSQL username and/or password not valid" msgstr "" -#: setup.php:133 setup.php:156 setup.php:234 +#: setup.php:133 setup.php:238 msgid "You need to enter either an existing account or the administrator." msgstr "" -#: setup.php:155 setup.php:458 setup.php:525 -msgid "Oracle username and/or password not valid" +#: setup.php:155 +msgid "Oracle connection could not be established" msgstr "" -#: setup.php:233 +#: setup.php:237 msgid "MySQL username and/or password not valid" msgstr "" -#: setup.php:287 setup.php:391 setup.php:400 setup.php:418 setup.php:428 -#: setup.php:437 setup.php:466 setup.php:532 setup.php:558 setup.php:565 -#: setup.php:576 setup.php:583 setup.php:592 setup.php:600 setup.php:609 -#: setup.php:615 +#: setup.php:291 setup.php:395 setup.php:404 setup.php:422 setup.php:432 +#: setup.php:441 setup.php:474 setup.php:540 setup.php:566 setup.php:573 +#: setup.php:584 setup.php:591 setup.php:600 setup.php:608 setup.php:617 +#: setup.php:623 #, php-format msgid "DB Error: \"%s\"" msgstr "" -#: setup.php:288 setup.php:392 setup.php:401 setup.php:419 setup.php:429 -#: setup.php:438 setup.php:467 setup.php:533 setup.php:559 setup.php:566 -#: setup.php:577 setup.php:593 setup.php:601 setup.php:610 +#: setup.php:292 setup.php:396 setup.php:405 setup.php:423 setup.php:433 +#: setup.php:442 setup.php:475 setup.php:541 setup.php:567 setup.php:574 +#: setup.php:585 setup.php:601 setup.php:609 setup.php:618 #, php-format msgid "Offending command was: \"%s\"" msgstr "" -#: setup.php:304 +#: setup.php:308 #, php-format msgid "MySQL user '%s'@'localhost' exists already." msgstr "" -#: setup.php:305 +#: setup.php:309 msgid "Drop this user from MySQL" msgstr "" -#: setup.php:310 +#: setup.php:314 #, php-format msgid "MySQL user '%s'@'%%' already exists" msgstr "" -#: setup.php:311 +#: setup.php:315 msgid "Drop this user from MySQL." msgstr "" -#: setup.php:584 setup.php:616 +#: setup.php:466 setup.php:533 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup.php:592 setup.php:624 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" msgstr "" -#: setup.php:636 +#: setup.php:644 #, php-format msgid "MS SQL username and/or password not valid: %s" msgstr "" -#: setup.php:858 +#: setup.php:867 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "" -#: setup.php:859 +#: setup.php:868 #, php-format msgid "Please double check the installation guides." msgstr "" diff --git a/l10n/sw_KE/settings.po b/l10n/sw_KE/settings.po index e93dc47057..a8fd5f1a2c 100644 --- a/l10n/sw_KE/settings.po +++ b/l10n/sw_KE/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-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:00+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" @@ -120,52 +120,52 @@ msgstr "" msgid "Updated" msgstr "" -#: js/personal.js:115 +#: js/personal.js:118 msgid "Saving..." msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "deleted" msgstr "" -#: js/users.js:43 +#: js/users.js:47 msgid "undo" msgstr "" -#: js/users.js:75 +#: js/users.js:79 msgid "Unable to remove user" msgstr "" -#: js/users.js:88 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:91 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:111 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" -#: js/users.js:262 +#: js/users.js:269 msgid "add group" msgstr "" -#: js/users.js:414 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:415 js/users.js:421 js/users.js:436 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:420 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" -#: personal.php:29 personal.php:30 +#: personal.php:35 personal.php:36 msgid "__language_name__" msgstr "" @@ -324,11 +324,11 @@ msgstr "" msgid "Less" msgstr "" -#: templates/admin.php:235 templates/personal.php:100 +#: templates/admin.php:235 templates/personal.php:105 msgid "Version" msgstr "" -#: templates/admin.php:238 templates/personal.php:103 +#: templates/admin.php:237 templates/personal.php:108 msgid "" "Developed by the ownCloud community, the \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sw_KE/user_webdavauth.po b/l10n/sw_KE/user_webdavauth.po index 426f5e3072..b41a7fe5ab 100644 --- a/l10n/sw_KE/user_webdavauth.po +++ b/l10n/sw_KE/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/owncloud/language/sw_KE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 695c92e17f..6bf0a9e637 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 544d15e92e..5d45574916 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_encryption.po b/l10n/ta_LK/files_encryption.po index f8019b0d4a..251e10cda5 100644 --- a/l10n/ta_LK/files_encryption.po +++ b/l10n/ta_LK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ta_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "மறைக்குறியீடு" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "ஒன்றுமில்லை" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po index e5905a94a4..5c13f3d48d 100644 --- a/l10n/ta_LK/files_external.po +++ b/l10n/ta_LK/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index 4c9c4ab550..d2822a64b4 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index bb442763f3..64e6357655 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_versions.po b/l10n/ta_LK/files_versions.po index 6125b2b2da..7fbbf568c9 100644 --- a/l10n/ta_LK/files_versions.po +++ b/l10n/ta_LK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index 84fbc746d8..b5723cd97b 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index 22fbcef78d..784a4f7933 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "முன் செயல் நீக்கம் " msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "குழுக்கள்" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "குழு நிர்வாகி" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "நீக்குக" @@ -153,15 +153,15 @@ msgstr "நீக்குக" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "கடவுச்சொல்" @@ -423,7 +423,7 @@ msgstr "புதிய கடவுச்சொல்" msgid "Change password" msgstr "கடவுச்சொல்லை மாற்றுக" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "உருவாக்குக" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "மற்றவை" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po index 2e07179f97..c08c0ad22f 100644 --- a/l10n/ta_LK/user_ldap.po +++ b/l10n/ta_LK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/user_webdavauth.po b/l10n/ta_LK/user_webdavauth.po index e75db9cc3f..fa5d31237c 100644 --- a/l10n/ta_LK/user_webdavauth.po +++ b/l10n/ta_LK/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. +# suganthi , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/core.po b/l10n/te/core.po index 514c0cb50a..1a1814b1a5 100644 --- a/l10n/te/core.po +++ b/l10n/te/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files.po b/l10n/te/files.po index 95fe99e2dd..4a8ff7c303 100644 --- a/l10n/te/files.po +++ b/l10n/te/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_encryption.po b/l10n/te/files_encryption.po index d80b40f452..ef53fa5d98 100644 --- a/l10n/te/files_encryption.po +++ b/l10n/te/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/te/files_external.po b/l10n/te/files_external.po index 4b741282d9..f52067c27b 100644 --- a/l10n/te/files_external.po +++ b/l10n/te/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_sharing.po b/l10n/te/files_sharing.po index 84ca97cc6a..96195fcf7a 100644 --- a/l10n/te/files_sharing.po +++ b/l10n/te/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_trashbin.po b/l10n/te/files_trashbin.po index 726aa934a2..faffde55b4 100644 --- a/l10n/te/files_trashbin.po +++ b/l10n/te/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_versions.po b/l10n/te/files_versions.po index 2a514b335c..b745dfb020 100644 --- a/l10n/te/files_versions.po +++ b/l10n/te/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/lib.po b/l10n/te/lib.po index 4cc91ef1e9..f9c63628e5 100644 --- a/l10n/te/lib.po +++ b/l10n/te/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/settings.po b/l10n/te/settings.po index 0468471645..823a5c03b4 100644 --- a/l10n/te/settings.po +++ b/l10n/te/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "తొలగించు" @@ -153,15 +153,15 @@ msgstr "తొలగించు" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "సంకేతపదం" @@ -423,7 +423,7 @@ msgstr "కొత్త సంకేతపదం" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/te/user_ldap.po b/l10n/te/user_ldap.po index 45077de378..5d5ca929e6 100644 --- a/l10n/te/user_ldap.po +++ b/l10n/te/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/user_webdavauth.po b/l10n/te/user_webdavauth.po index bfa7e06be6..dac5225d96 100644 --- a/l10n/te/user_webdavauth.po +++ b/l10n/te/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index f16aa6c446..7f32c63dc4 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 6b6a9e05aa..b4daa36b3a 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 199e2828b8..e1e2617a28 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,22 +17,77 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index db915a6782..460c1c53c7 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 4b97bd4b71..66079f3e80 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 51720b0f3d..de204ee02f 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index eb2b51e4f7..f97c71f8aa 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index cdf00a0782..cdb616e1de 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index bbf68c3a5a..46a7425442 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" @@ -153,15 +153,15 @@ msgstr "" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "" @@ -423,7 +423,7 @@ msgstr "" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 51427e13fb..4c06e94d5a 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 4783300333..70a4f7ebe3 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index d4d148f2c9..dfed5edab7 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 0ee6248b27..ca56cc9c74 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_encryption.po b/l10n/th_TH/files_encryption.po index f6529f0dc5..5c89237280 100644 --- a/l10n/th_TH/files_encryption.po +++ b/l10n/th_TH/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "การเข้ารหัส" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "ไม่มี" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/th_TH/files_external.po b/l10n/th_TH/files_external.po index d1679d21f4..7f78481e21 100644 --- a/l10n/th_TH/files_external.po +++ b/l10n/th_TH/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index 6e48c1ef81..322abcd87d 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 891b4da11c..11a4930831 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_versions.po b/l10n/th_TH/files_versions.po index 2ed8da96a5..484c5c2cda 100644 --- a/l10n/th_TH/files_versions.po +++ b/l10n/th_TH/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index 4dbdc8be1d..1131fe6de0 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index 4d1ea92e63..3c7d74699d 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "เลิกทำ" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "กลุ่ม" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "ผู้ดูแลกลุ่ม" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "ลบ" @@ -153,15 +153,15 @@ msgstr "ลบ" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "รหัสผ่าน" @@ -423,7 +423,7 @@ msgstr "รหัสผ่านใหม่" msgid "Change password" msgstr "เปลี่ยนรหัสผ่าน" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "ชื่อที่ต้องการแสดง" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "ใช้ที่อยู่นี้เพื่อเชื่อมต่อกับ ownCloud ในโปรแกรมจัดการไฟล์ของคุณ" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "ชื่อที่ใช้สำหรับเข้าสู่ระบบ" @@ -463,30 +463,34 @@ msgstr "ชื่อที่ใช้สำหรับเข้าสู่ร msgid "Create" msgstr "สร้าง" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "พื้นที่จำกัดข้อมูลเริ่มต้น" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "ไม่จำกัดจำนวน" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "อื่นๆ" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "พื้นที่จัดเก็บข้อมูล" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "เปลี่ยนชื่อที่ต้องการให้แสดง" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "ตั้งค่ารหัสผ่านใหม่" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "ค่าเริ่มต้น" diff --git a/l10n/th_TH/user_ldap.po b/l10n/th_TH/user_ldap.po index 57aa79e2fa..ed7bed1d8d 100644 --- a/l10n/th_TH/user_ldap.po +++ b/l10n/th_TH/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/user_webdavauth.po b/l10n/th_TH/user_webdavauth.po index 5c6623a310..af83ef0d00 100644 --- a/l10n/th_TH/user_webdavauth.po +++ b/l10n/th_TH/user_webdavauth.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# AriesAnywhere Anywhere , 2012-2013. +# AriesAnywhere Anywhere , 2012-2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index d006494382..332dd0bd38 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 676603c65a..c8e788730a 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_encryption.po b/l10n/tr/files_encryption.po index e97475fd97..2034370f53 100644 --- a/l10n/tr/files_encryption.po +++ b/l10n/tr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Şifreleme" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Dosya şifreleme aktif." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Belirtilen dosya tipleri şifrelenmeyecek:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Seçilen dosya tiplerini şifreleme:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Hiçbiri" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/tr/files_external.po b/l10n/tr/files_external.po index 089a46d9f6..90df3457fe 100644 --- a/l10n/tr/files_external.po +++ b/l10n/tr/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index 546d65d8d9..2cb763728c 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index f00cf7484c..c9a86cda20 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_versions.po b/l10n/tr/files_versions.po index 191e24b1a3..9f1d643d13 100644 --- a/l10n/tr/files_versions.po +++ b/l10n/tr/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index df47baf932..580824cba7 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 8f5cf140aa..f681c072e0 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: ismail yenigül \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "geri al" msgid "Unable to remove user" msgstr "Kullanıcı kaldırılamıyor" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Gruplar" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Yönetici Grubu " -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Sil" @@ -154,15 +154,15 @@ msgstr "Sil" msgid "add group" msgstr "grup ekle" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Geçerli bir kullanıcı adı mutlaka sağlanmalı" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Kullanıcı oluşturulurken hata" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Geçerli bir parola mutlaka sağlanmalı" @@ -400,7 +400,7 @@ msgstr "Dosyalarınızı senkronize etmek için uygulamayı indirin" msgid "Show First Run Wizard again" msgstr "İlk Çalıştırma Sihirbazını yeniden göster" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Parola" @@ -424,7 +424,7 @@ msgstr "Yeni parola" msgid "Change password" msgstr "Parola değiştir" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Ekran Adı" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Bu adresi kullanarak ownCloud 'unuza dosya yöneticinizde bağlanın" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Giriş Adı" @@ -464,30 +464,34 @@ msgstr "Giriş Adı" msgid "Create" msgstr "Oluştur" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Varsayılan Depolama" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Limitsiz" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Diğer" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Depolama" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "ekran adını değiştir" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "yeni parola belirle" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Varsayılan" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index bfd9ca6593..9c166b28ef 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/user_webdavauth.po b/l10n/tr/user_webdavauth.po index a5b58c7648..03ee4902c8 100644 --- a/l10n/tr/user_webdavauth.po +++ b/l10n/tr/user_webdavauth.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-04-23 01:58+0200\n" -"PO-Revision-Date: 2013-04-22 20:10+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/core.po b/l10n/ug/core.po index 0c10b9e073..5d03ea9787 100644 --- a/l10n/ug/core.po +++ b/l10n/ug/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files.po b/l10n/ug/files.po index f4bce231f7..d8d3444443 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_encryption.po b/l10n/ug/files_encryption.po index ce1f593333..ab0642eaf0 100644 --- a/l10n/ug/files_encryption.po +++ b/l10n/ug/files_encryption.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 12:10+0000\n" -"Last-Translator: Abduqadir Abliz \n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ug\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "شىفىرلاش" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "ھۆججەت شىفىرلاش قوزغىتىلدى." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "تۆۋەندىكى ھۆججەت تىپلىرى شىفىرلانمايدۇ:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "تۆۋەندىكى ھۆججەت تىپلىرى شىفىرلاشنىڭ سىرتىدا:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "يوق" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ug/files_external.po b/l10n/ug/files_external.po index 5c120aea0b..88f10e6962 100644 --- a/l10n/ug/files_external.po +++ b/l10n/ug/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 99599acd88..067eda41c8 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: uqkun \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_trashbin.po b/l10n/ug/files_trashbin.po index 986d49ce3c..af9cf01335 100644 --- a/l10n/ug/files_trashbin.po +++ b/l10n/ug/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_versions.po b/l10n/ug/files_versions.po index bc0751f8d0..6555776820 100644 --- a/l10n/ug/files_versions.po +++ b/l10n/ug/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 11:40+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/lib.po b/l10n/ug/lib.po index 0585574309..3cb94d1009 100644 --- a/l10n/ug/lib.po +++ b/l10n/ug/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/settings.po b/l10n/ug/settings.po index 24ee51def4..a9b7ec7c9b 100644 --- a/l10n/ug/settings.po +++ b/l10n/ug/settings.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: Abduqadir Abliz \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -136,16 +136,16 @@ msgstr "يېنىۋال" msgid "Unable to remove user" msgstr "ئىشلەتكۈچىنى چىقىرىۋېتەلمەيدۇ" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "گۇرۇپپا" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "گۇرۇپپا باشقۇرغۇچى" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "ئۆچۈر" @@ -153,15 +153,15 @@ msgstr "ئۆچۈر" msgid "add group" msgstr "گۇرۇپپا قوش" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "ئىم" @@ -423,7 +423,7 @@ msgstr "يېڭى ئىم" msgid "Change password" msgstr "ئىم ئۆزگەرت" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "كۆرسىتىش ئىسمى" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "تىزىمغا كىرىش ئاتى" @@ -463,30 +463,34 @@ msgstr "تىزىمغا كىرىش ئاتى" msgid "Create" msgstr "قۇر" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "كۆڭۈلدىكى ساقلىغۇچ" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "چەكسىز" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "باشقا" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "ساقلىغۇچ" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "كۆرسىتىدىغان ئىسىمنى ئۆزگەرت" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "يېڭى ئىم تەڭشە" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "كۆڭۈلدىكى" diff --git a/l10n/ug/user_ldap.po b/l10n/ug/user_ldap.po index 79859271ff..f49de9b048 100644 --- a/l10n/ug/user_ldap.po +++ b/l10n/ug/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/user_webdavauth.po b/l10n/ug/user_webdavauth.po index 30ac4d4ad7..544a8b946e 100644 --- a/l10n/ug/user_webdavauth.po +++ b/l10n/ug/user_webdavauth.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-04 11:40+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 60c0ac8968..1db883d2b4 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 15bd0c1dfe..9c62403d52 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_encryption.po b/l10n/uk/files_encryption.po index 2d3d805e58..e2f81845d5 100644 --- a/l10n/uk/files_encryption.po +++ b/l10n/uk/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ 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" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Шифрування" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Увімкнуто шифрування файлів." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Такі типи файлів шифруватись не будуть:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Виключити наступні типи файлів з ​​шифрування:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Жоден" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index 0a8a49f6f9..a01e520df4 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index 7ac8549950..27552d234c 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index fa4cda467f..43cbc76e98 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_versions.po b/l10n/uk/files_versions.po index 9cdb2fdef6..7fb44a00e8 100644 --- a/l10n/uk/files_versions.po +++ b/l10n/uk/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index e9b87cf8c6..8159cfccb7 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index 3fb2467187..732f8e36ea 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "відмінити" msgid "Unable to remove user" msgstr "Неможливо видалити користувача" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Групи" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Адміністратор групи" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Видалити" @@ -153,15 +153,15 @@ msgstr "Видалити" msgid "add group" msgstr "додати групу" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "Потрібно задати вірне ім'я користувача" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "Помилка при створенні користувача" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "Потрібно задати вірний пароль" @@ -399,7 +399,7 @@ msgstr "Отримати додатки для синхронізації ваш msgid "Show First Run Wizard again" msgstr "Показувати Майстер Налаштувань знову" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Пароль" @@ -423,7 +423,7 @@ msgstr "Новий пароль" msgid "Change password" msgstr "Змінити пароль" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Показати Ім'я" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Використовуйте цю адресу для під'єднання до вашого ownCloud у вашому файловому менеджері" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Ім'я Логіну" @@ -463,30 +463,34 @@ msgstr "Ім'я Логіну" msgid "Create" msgstr "Створити" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "сховище за замовчуванням" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Необмежено" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Інше" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Сховище" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "змінити зображене ім'я" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "встановити новий пароль" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "За замовчуванням" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index 98019dfaf4..cc23122583 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/user_webdavauth.po b/l10n/uk/user_webdavauth.po index 0b39465a48..feb00291cb 100644 --- a/l10n/uk/user_webdavauth.po +++ b/l10n/uk/user_webdavauth.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. -# , 2012. -# пан Володимир , 2013. +# skoptev , 2012 +# volodya327 , 2012 +# volodya327 , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/core.po b/l10n/ur_PK/core.po index b9c4d4d054..a60769bb73 100644 --- a/l10n/ur_PK/core.po +++ b/l10n/ur_PK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files.po b/l10n/ur_PK/files.po index 2cedc88260..c886690565 100644 --- a/l10n/ur_PK/files.po +++ b/l10n/ur_PK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_encryption.po b/l10n/ur_PK/files_encryption.po index 155fc654d0..ab35eed13c 100644 --- a/l10n/ur_PK/files_encryption.po +++ b/l10n/ur_PK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:01+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: ur_PK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" msgstr "" diff --git a/l10n/ur_PK/files_external.po b/l10n/ur_PK/files_external.po index c1a5f1dda0..267556951c 100644 --- a/l10n/ur_PK/files_external.po +++ b/l10n/ur_PK/files_external.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_sharing.po b/l10n/ur_PK/files_sharing.po index 3310ed7453..a094fe6a21 100644 --- a/l10n/ur_PK/files_sharing.po +++ b/l10n/ur_PK/files_sharing.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-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:27+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_trashbin.po b/l10n/ur_PK/files_trashbin.po index a767e6d265..0e100ced08 100644 --- a/l10n/ur_PK/files_trashbin.po +++ b/l10n/ur_PK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_versions.po b/l10n/ur_PK/files_versions.po index 3cd19f481f..87f26d3039 100644 --- a/l10n/ur_PK/files_versions.po +++ b/l10n/ur_PK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-26 10:00+0200\n" -"PO-Revision-Date: 2013-04-26 08:02+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/lib.po b/l10n/ur_PK/lib.po index c783af97eb..681c34c81d 100644 --- a/l10n/ur_PK/lib.po +++ b/l10n/ur_PK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 21:52+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/settings.po b/l10n/ur_PK/settings.po index bc06878201..abeb1ee259 100644 --- a/l10n/ur_PK/settings.po +++ b/l10n/ur_PK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "" @@ -153,15 +153,15 @@ msgstr "" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "پاسورڈ" @@ -423,7 +423,7 @@ msgstr "نیا پاسورڈ" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/ur_PK/user_ldap.po b/l10n/ur_PK/user_ldap.po index 0f8cb26a3d..813f2b92f5 100644 --- a/l10n/ur_PK/user_ldap.po +++ b/l10n/ur_PK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/user_webdavauth.po b/l10n/ur_PK/user_webdavauth.po index 874b058a64..3082e6561f 100644 --- a/l10n/ur_PK/user_webdavauth.po +++ b/l10n/ur_PK/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index e5093a94fd..0a3b6e14af 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 2cca8bcaa0..da01e4c963 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_encryption.po b/l10n/vi/files_encryption.po index 378186a7fc..fea18d335d 100644 --- a/l10n/vi/files_encryption.po +++ b/l10n/vi/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "Mã hóa" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "Mã hóa file đã mở" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "Loại file sau sẽ không được mã hóa" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "Việc mã hóa không bao gồm loại file sau" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "Không gì cả" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index c9777d959a..ea12a9f6ee 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index 3421e01a4e..103ec6485a 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 3a638c39e2..6b4bea2008 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_versions.po b/l10n/vi/files_versions.po index f65e940269..ddb86932e1 100644 --- a/l10n/vi/files_versions.po +++ b/l10n/vi/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 9cf90a1574..1dbcbfd512 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index 645bd7baf8..cfa7dc11ef 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "lùi lại" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "Nhóm" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "Nhóm quản trị" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "Xóa" @@ -153,15 +153,15 @@ msgstr "Xóa" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "Nhận ứng dụng để đồng bộ file của bạn" msgid "Show First Run Wizard again" msgstr "Hiện lại việc chạy đồ thuật khởi đầu" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "Mật khẩu" @@ -423,7 +423,7 @@ msgstr "Mật khẩu mới" msgid "Change password" msgstr "Đổi mật khẩu" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "Tên hiển thị" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "Sử dụng địa chỉ này để kết nối ownCloud của bạn trong trình quản lý file của bạn" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "Tên đăng nhập" @@ -463,30 +463,34 @@ msgstr "Tên đăng nhập" msgid "Create" msgstr "Tạo" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "Bộ nhớ mặc định" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "Không giới hạn" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "Khác" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "Bộ nhớ" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "Thay đổi tên hiển thị" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "đặt mật khẩu mới" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "Mặc định" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index 2a8995440e..bd352de505 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/user_webdavauth.po b/l10n/vi/user_webdavauth.po index 9f0e00a50a..e3cb6494d1 100644 --- a/l10n/vi/user_webdavauth.po +++ b/l10n/vi/user_webdavauth.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# sao sang , 2013. -# Sơn Nguyễn , 2012. +# saosangm , 2013 +# Sơn Nguyễn , 2012 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 0388186c3c..c72e1d1217 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 87d234de37..a678bd83fd 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_encryption.po b/l10n/zh_CN.GB2312/files_encryption.po index 172dbb740f..1ef2cfcb7f 100644 --- a/l10n/zh_CN.GB2312/files_encryption.po +++ b/l10n/zh_CN.GB2312/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: zh_CN.GB2312\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "加密" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "无" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/zh_CN.GB2312/files_external.po b/l10n/zh_CN.GB2312/files_external.po index f65232c72a..b902f19431 100644 --- a/l10n/zh_CN.GB2312/files_external.po +++ b/l10n/zh_CN.GB2312/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_sharing.po b/l10n/zh_CN.GB2312/files_sharing.po index 2b091b8d3e..d1d72a03e5 100644 --- a/l10n/zh_CN.GB2312/files_sharing.po +++ b/l10n/zh_CN.GB2312/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index fb84ff6561..650d11b4c5 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_versions.po b/l10n/zh_CN.GB2312/files_versions.po index 036989e088..c1ffcfb75c 100644 --- a/l10n/zh_CN.GB2312/files_versions.po +++ b/l10n/zh_CN.GB2312/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index 65e690b4fe..475ec6317b 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 61d98359d0..b1d21c46d3 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "撤销" msgid "Unable to remove user" msgstr "无法移除用户" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "群组" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "群组管理员" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "删除" @@ -153,15 +153,15 @@ msgstr "删除" msgid "add group" msgstr "添加群组" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "请填写有效用户名" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "新增用户时出现错误" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "请填写有效密码" @@ -399,7 +399,7 @@ msgstr "获取应用并同步您的文件" msgid "Show First Run Wizard again" msgstr "再次显示首次运行向导" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "密码" @@ -423,7 +423,7 @@ msgstr "新密码" msgid "Change password" msgstr "改变密码" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "显示名称" @@ -455,7 +455,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "使用此地址来在您的文件管理器中连接您的ownCloud" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "登录名" @@ -463,30 +463,34 @@ msgstr "登录名" msgid "Create" msgstr "新建" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "默认容量" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "无限制" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "其他" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "容量" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "更改显示名称" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "设置新的密码" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "默认" diff --git a/l10n/zh_CN.GB2312/user_ldap.po b/l10n/zh_CN.GB2312/user_ldap.po index 80b5a7195f..6822f2a096 100644 --- a/l10n/zh_CN.GB2312/user_ldap.po +++ b/l10n/zh_CN.GB2312/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/user_webdavauth.po b/l10n/zh_CN.GB2312/user_webdavauth.po index 672fbad82e..60e0c7b044 100644 --- a/l10n/zh_CN.GB2312/user_webdavauth.po +++ b/l10n/zh_CN.GB2312/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 73520d3ac5..0be2e9fed4 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 00903854a0..9d17fe97ca 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_encryption.po b/l10n/zh_CN/files_encryption.po index 9ececa5149..a1441c26e0 100644 --- a/l10n/zh_CN/files_encryption.po +++ b/l10n/zh_CN/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "加密" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "文件加密已启用." +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "如下的文件类型将不会被加密:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "从加密中排除如下的文件类型:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "无" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index 6e798b3bc3..c61ffd4438 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 77a25d1939..59049f512d 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index 52c54bcbee..cfe8509cf7 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_versions.po b/l10n/zh_CN/files_versions.po index a01c8b41aa..cc566f1c46 100644 --- a/l10n/zh_CN/files_versions.po +++ b/l10n/zh_CN/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index bad9755133..7a1e0aedf6 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index 6056eafbef..4f7b161acd 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: zhangmin \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "撤销" msgid "Unable to remove user" msgstr "无法移除用户" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "组" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "组管理员" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "删除" @@ -154,15 +154,15 @@ msgstr "删除" msgid "add group" msgstr "添加组" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "必须提供合法的用户名" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "创建用户出错" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "必须提供合法的密码" @@ -400,7 +400,7 @@ msgstr "安装应用进行文件同步" msgid "Show First Run Wizard again" msgstr "再次显示首次运行向导" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "密码" @@ -424,7 +424,7 @@ msgstr "新密码" msgid "Change password" msgstr "修改密码" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "显示名称" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "用该地址来连接文件管理器中的 ownCloud" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "登录名称" @@ -464,30 +464,34 @@ msgstr "登录名称" msgid "Create" msgstr "创建" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "默认存储" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "无限" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "其它" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "存储" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "修改显示名称" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "设置新密码" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "默认" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index d4dd9b9928..5087046767 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/user_webdavauth.po b/l10n/zh_CN/user_webdavauth.po index 7c8b3ea542..82c49c2fbc 100644 --- a/l10n/zh_CN/user_webdavauth.po +++ b/l10n/zh_CN/user_webdavauth.po @@ -3,16 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# , 2012. -# Dianjin Wang <1132321739qq@gmail.com>, 2012. -# marguerite su , 2013. -# , 2013. +# hanfeng , 2012 +# Dianjin Wang <1132321739qq@gmail.com>, 2012 +# marguerite su , 2013 +# Xuetian Weng , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index 62dcdad63a..fcda9e3830 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index beaef109c9..470235c8ce 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_encryption.po b/l10n/zh_HK/files_encryption.po index 2cc250c386..2e428e4d49 100644 --- a/l10n/zh_HK/files_encryption.po +++ b/l10n/zh_HK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: zh_HK\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "加密" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "檔案加密已開啟" - -#: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "以下文件類別將不會被加密" - -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "空" +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" + +#: templates/settings-personal.php:11 +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" + +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" + +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po index 3d43486723..e2c108e1e4 100644 --- a/l10n/zh_HK/files_external.po +++ b/l10n/zh_HK/files_external.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index 0e52725e03..f0d8ba37ac 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 0ad3c39ccd..64af91a243 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_versions.po b/l10n/zh_HK/files_versions.po index a26316004a..dd78492845 100644 --- a/l10n/zh_HK/files_versions.po +++ b/l10n/zh_HK/files_versions.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:30+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index 412d69a73d..1ba7e60a91 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index 9957cf25e6..ff300e8c64 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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -136,16 +136,16 @@ msgstr "" msgid "Unable to remove user" msgstr "" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "群組" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "刪除" @@ -153,15 +153,15 @@ msgstr "刪除" msgid "add group" msgstr "" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "" @@ -399,7 +399,7 @@ msgstr "" msgid "Show First Run Wizard again" msgstr "" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "密碼" @@ -423,7 +423,7 @@ msgstr "新密碼" msgid "Change password" msgstr "" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "" @@ -455,7 +455,7 @@ msgstr "" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "" @@ -463,30 +463,34 @@ msgstr "" msgid "Create" msgstr "" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po index 8950dc88a4..211f3bf416 100644 --- a/l10n/zh_HK/user_ldap.po +++ b/l10n/zh_HK/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/user_webdavauth.po b/l10n/zh_HK/user_webdavauth.po index 861fd6ab98..944ff2142a 100644 --- a/l10n/zh_HK/user_webdavauth.po +++ b/l10n/zh_HK/user_webdavauth.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-04-17 02:20+0200\n" -"PO-Revision-Date: 2013-04-17 00:23+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 75282bcc70..5c94351de7 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 6e4b9226e9..5042bd4bd1 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_encryption.po b/l10n/zh_TW/files_encryption.po index c9a6bba11a..b897dc975b 100644 --- a/l10n/zh_TW/files_encryption.po +++ b/l10n/zh_TW/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-04-27 02:16+0200\n" -"PO-Revision-Date: 2013-04-26 08:29+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -17,22 +17,77 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: templates/settings-personal.php:4 templates/settings.php:5 +#: ajax/adminrecovery.php:40 +msgid "Recovery key successfully " +msgstr "" + +#: ajax/adminrecovery.php:42 +msgid "Could not " +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" msgstr "加密" -#: templates/settings-personal.php:7 -msgid "File encryption is enabled." -msgstr "檔案加密已被啟用" +#: templates/settings-admin.php:9 +msgid "" +"Enable encryption passwords recovery key (allow sharing to recovery key):" +msgstr "" + +#: templates/settings-admin.php:13 +msgid "Recovery account password" +msgstr "" + +#: templates/settings-admin.php:20 templates/settings-personal.php:18 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:28 templates/settings-personal.php:26 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:32 +msgid "Change encryption passwords recovery key:" +msgstr "" + +#: templates/settings-admin.php:39 +msgid "Old Recovery account password" +msgstr "" + +#: templates/settings-admin.php:46 +msgid "New Recovery account password" +msgstr "" + +#: templates/settings-admin.php:51 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Enable password recovery by sharing all files with your administrator:" +msgstr "" #: templates/settings-personal.php:11 -msgid "The following file types will not be encrypted:" -msgstr "以下的文件類型不會被加密:" +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files if your password is lost" +msgstr "" -#: templates/settings.php:7 -msgid "Exclude the following file types from encryption:" -msgstr "從加密中排除的檔案類型:" +#: templates/settings-personal.php:27 +msgid "File recovery settings updated" +msgstr "" -#: templates/settings.php:12 -msgid "None" -msgstr "無" +#: templates/settings-personal.php:28 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index 4d01dbe44f..d7d095a2b2 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 8da3c5805c..9d542c9d80 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:25+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index e98bbee141..55262a66e9 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_versions.po b/l10n/zh_TW/files_versions.po index ceb0cbe053..dbe4ec462d 100644 --- a/l10n/zh_TW/files_versions.po +++ b/l10n/zh_TW/files_versions.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 07:10+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:28+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index f4ee7ce21d..dab8cf41e5 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index cad92c61bf..ed343a6f38 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:15+0000\n" -"Last-Translator: pellaeon \n" +"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -137,16 +137,16 @@ msgstr "復原" msgid "Unable to remove user" msgstr "無法刪除用戶" -#: js/users.js:92 templates/users.php:26 templates/users.php:78 -#: templates/users.php:103 +#: js/users.js:92 templates/users.php:26 templates/users.php:83 +#: templates/users.php:108 msgid "Groups" msgstr "群組" -#: js/users.js:95 templates/users.php:80 templates/users.php:115 +#: js/users.js:95 templates/users.php:85 templates/users.php:120 msgid "Group Admin" msgstr "群組 管理員" -#: js/users.js:115 templates/users.php:155 +#: js/users.js:115 templates/users.php:160 msgid "Delete" msgstr "刪除" @@ -154,15 +154,15 @@ msgstr "刪除" msgid "add group" msgstr "新增群組" -#: js/users.js:420 +#: js/users.js:428 msgid "A valid username must be provided" msgstr "一定要提供一個有效的用戶名" -#: js/users.js:421 js/users.js:427 js/users.js:442 +#: js/users.js:429 js/users.js:435 js/users.js:450 msgid "Error creating user" msgstr "創建用戶時出現錯誤" -#: js/users.js:426 +#: js/users.js:434 msgid "A valid password must be provided" msgstr "一定要提供一個有效的密碼" @@ -400,7 +400,7 @@ msgstr "下載應用程式來同步您的檔案" msgid "Show First Run Wizard again" msgstr "再次顯示首次使用精靈" -#: templates/personal.php:37 templates/users.php:23 templates/users.php:77 +#: templates/personal.php:37 templates/users.php:23 templates/users.php:82 msgid "Password" msgstr "密碼" @@ -424,7 +424,7 @@ msgstr "新密碼" msgid "Change password" msgstr "變更密碼" -#: templates/personal.php:56 templates/users.php:76 +#: templates/personal.php:56 templates/users.php:81 msgid "Display Name" msgstr "顯示名稱" @@ -456,7 +456,7 @@ msgstr "WebDAV" msgid "Use this address to connect to your ownCloud in your file manager" msgstr "在您的檔案管理員中使用這個地址來連線到 ownCloud" -#: templates/users.php:21 templates/users.php:75 +#: templates/users.php:21 templates/users.php:80 msgid "Login Name" msgstr "登入名稱" @@ -464,30 +464,34 @@ msgstr "登入名稱" msgid "Create" msgstr "建立" -#: templates/users.php:33 +#: templates/users.php:34 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:38 msgid "Default Storage" msgstr "預設儲存區" -#: templates/users.php:39 templates/users.php:133 +#: templates/users.php:44 templates/users.php:138 msgid "Unlimited" msgstr "無限制" -#: templates/users.php:57 templates/users.php:148 +#: templates/users.php:62 templates/users.php:153 msgid "Other" msgstr "其他" -#: templates/users.php:82 +#: templates/users.php:87 msgid "Storage" msgstr "儲存區" -#: templates/users.php:93 +#: templates/users.php:98 msgid "change display name" msgstr "修改顯示名稱" -#: templates/users.php:97 +#: templates/users.php:102 msgid "set new password" msgstr "設定新密碼" -#: templates/users.php:128 +#: templates/users.php:133 msgid "Default" msgstr "預設" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index b6739a2934..30c56abebd 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/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-05-24 01:57+0200\n" -"PO-Revision-Date: 2013-05-23 23:16+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 23:26+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/user_webdavauth.po b/l10n/zh_TW/user_webdavauth.po index 4dd48e2ce3..bfb582efc9 100644 --- a/l10n/zh_TW/user_webdavauth.po +++ b/l10n/zh_TW/user_webdavauth.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-05-12 02:01+0200\n" -"PO-Revision-Date: 2013-05-06 07:10+0000\n" +"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"PO-Revision-Date: 2013-05-24 13:26+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/l10n/es.php b/lib/l10n/es.php index fa95089a61..3b32036d3a 100644 --- a/lib/l10n/es.php +++ b/lib/l10n/es.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s ingresar el host de la base de datos.", "PostgreSQL username and/or password not valid" => "Usuario y/o contraseña de PostgreSQL no válidos", "You need to enter either an existing account or the administrator." => "Tiene que ingresar una cuenta existente o la del administrador.", +"Oracle connection could not be established" => "No se pudo establecer la conexión a Oracle", "MySQL username and/or password not valid" => "Usuario y/o contraseña de MySQL no válidos", "DB Error: \"%s\"" => "Error BD: \"%s\"", "Offending command was: \"%s\"" => "Comando infractor: \"%s\"", diff --git a/lib/l10n/et_EE.php b/lib/l10n/et_EE.php index 2e25f1aa71..24fc98bde6 100644 --- a/lib/l10n/et_EE.php +++ b/lib/l10n/et_EE.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s määra andmebaasi server.", "PostgreSQL username and/or password not valid" => "PostgreSQL kasutajatunnus ja/või parool pole õiged", "You need to enter either an existing account or the administrator." => "Sisesta kas juba olemasolev konto või administrator.", +"Oracle connection could not be established" => "Ei suuda luua ühendust Oracle baasiga", "MySQL username and/or password not valid" => "MySQL kasutajatunnus ja/või parool pole õiged", "DB Error: \"%s\"" => "Andmebaasi viga: \"%s\"", "Offending command was: \"%s\"" => "Tõrkuv käsk oli: \"%s\"", diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php index 96b083821d..1b4db4b30a 100644 --- a/lib/l10n/gl.php +++ b/lib/l10n/gl.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s estabeleza o servidor da base de datos", "PostgreSQL username and/or password not valid" => "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto", "You need to enter either an existing account or the administrator." => "Deberá introducir unha conta existente ou o administrador.", +"Oracle connection could not be established" => "Non foi posíbel estabelecer a conexión con Oracle", "MySQL username and/or password not valid" => "Nome de usuario e/ou contrasinal de MySQL incorrecto", "DB Error: \"%s\"" => "Produciuse un erro na base de datos: «%s»", "Offending command was: \"%s\"" => "A orde ofensiva foi: «%s»", diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php index de15964b13..53a9290785 100644 --- a/lib/l10n/pl.php +++ b/lib/l10n/pl.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s ustaw hosta bazy danych.", "PostgreSQL username and/or password not valid" => "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "You need to enter either an existing account or the administrator." => "Należy wprowadzić istniejące konto użytkownika lub administratora.", +"Oracle connection could not be established" => "Nie można ustanowić połączenia z bazą Oracle", "MySQL username and/or password not valid" => "MySQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "DB Error: \"%s\"" => "Błąd DB: \"%s\"", "Offending command was: \"%s\"" => "Niepoprawna komenda: \"%s\"", From f314eb8f722b78a4d27d7591521f014d74cac180 Mon Sep 17 00:00:00 2001 From: zafi Date: Sat, 25 May 2013 09:03:07 +0200 Subject: [PATCH 328/575] The "lost password" field depends on OC_USER_BACKEND_SET_PASSWORD so it should only be visible for users with a supporting backend. --- settings/templates/personal.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/settings/templates/personal.php b/settings/templates/personal.php index da812e8ed9..f0002c505c 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -63,6 +63,9 @@ if($_['displayNameChangeSupported']) { } ?> +
          t('Email'));?> @@ -71,6 +74,9 @@ if($_['displayNameChangeSupported']) { t('Fill in an email address to enable password recovery'));?>
          +
          From bfa715768a22430273db956a14ed1a3cb964c743 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Sat, 25 May 2013 11:02:51 +0200 Subject: [PATCH 329/575] LDAP: fix handling when LDAP Host is offline --- apps/user_ldap/lib/connection.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index ba4de13534..8a61775a6f 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -601,14 +601,13 @@ class Connection { $error = null; } - $error = null; //if LDAP server is not reachable, try the Backup (Replica!) Server - if((!$bindStatus && ($error === -1)) + if((!$bindStatus && ($error !== 0)) || $this->config['ldapOverrideMainServer'] || $this->getFromCache('overrideMainServer')) { $this->doConnect($this->config['ldapBackupHost'], $this->config['ldapBackupPort']); $bindStatus = $this->bind(); - if($bindStatus && $error === -1) { + if(!$bindStatus && $error === -1) { //when bind to backup server succeeded and failed to main server, //skip contacting him until next cache refresh $this->writeToCache('overrideMainServer', true); From 86d72b9a61f5e8a9b57c6f0bb431eb6722aa12a3 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Sat, 25 May 2013 11:03:58 +0200 Subject: [PATCH 330/575] LDAP: fix possible recursion --- apps/user_ldap/lib/connection.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 8a61775a6f..409f375879 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -635,10 +635,17 @@ class Connection { * Binds to LDAP */ public function bind() { + static $getConnectionResourceAttempt = false; if(!$this->config['ldapConfigurationActive']) { return false; } + if($getConnectionResourceAttempt) { + $getConnectionResourceAttempt = false; + return false; + } + $getConnectionResourceAttempt = true; $cr = $this->getConnectionResource(); + $getConnectionResourceAttempt = false; if(!is_resource($cr)) { return false; } From 29c8cbf4d1ec2c2c731c4b0ee15102c5beda72b1 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 25 May 2013 12:08:18 +0200 Subject: [PATCH 331/575] increase version and add warning --- apps/files_encryption/appinfo/info.xml | 2 +- apps/files_encryption/appinfo/version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/appinfo/info.xml b/apps/files_encryption/appinfo/info.xml index 9de2798dd7..ea8f6cf6f3 100644 --- a/apps/files_encryption/appinfo/info.xml +++ b/apps/files_encryption/appinfo/info.xml @@ -2,7 +2,7 @@ files_encryption Encryption - Server side encryption of files. Warning: You will lose your data if you enable this App and forget your password. Encryption is not yet compatible with LDAP. + WARNING: This is a preview release of the new ownCloud 5 encryption system. Testing and feedback is very welcome but don't use this in production yet. Encryption is not yet compatible with LDAP. AGPL Sam Tuke, Bjoern Schiessle, Florin Peter 4 diff --git a/apps/files_encryption/appinfo/version b/apps/files_encryption/appinfo/version index 1d71ef9744..bd73f47072 100644 --- a/apps/files_encryption/appinfo/version +++ b/apps/files_encryption/appinfo/version @@ -1 +1 @@ -0.3 \ No newline at end of file +0.4 From f6bf9de6def749b26d44a6f8d8ef85d0561cfaf9 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 14:54:36 +0200 Subject: [PATCH 332/575] prevent for returning while false normalize string --- lib/util.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index 224ed32061..1c5a044be8 100755 --- a/lib/util.php +++ b/lib/util.php @@ -833,7 +833,12 @@ class OC_Util { */ public static function normalizeUnicode($value) { if(class_exists('Patchwork\PHP\Shim\Normalizer')) { - $value = \Patchwork\PHP\Shim\Normalizer::normalize($value); + $normalizedValue = \Patchwork\PHP\Shim\Normalizer::normalize($value); + if($normalizedValue === false) { + \OC_Log::write( 'core', 'normalizing failed for "' . $value . '"', \OC_Log::WARN); + } else { + $value = $normalizedValue; + } } return $value; From c245f5a99fcd0c273de8e86d5496e86d61151d6c Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 14:56:00 +0200 Subject: [PATCH 333/575] added more places where normalization is needed --- lib/files/cache/cache.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 2c34fb7792..dc5e3e20fc 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -343,6 +343,10 @@ class Cache { * @param string $target */ public function move($source, $target) { + // normalize source and target + $source = $this->normalize($source); + $target = $this->normalize($target); + $sourceData = $this->get($source); $sourceId = $sourceData['fileid']; $newParentId = $this->getParentId($target); @@ -383,6 +387,9 @@ class Cache { * @return int, Cache::NOT_FOUND, Cache::PARTIAL, Cache::SHALLOW or Cache::COMPLETE */ public function getStatus($file) { + // normalize file + $file = $this->normalize($file); + $pathHash = md5($file); $query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?'); $result = $query->execute(array($this->getNumericStorageId(), $pathHash)); From 2893bb9543908b82289eb0dd1355f7df19d376d5 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Sat, 25 May 2013 11:42:28 -0400 Subject: [PATCH 334/575] Bump version for files_encryption changes --- lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index 01e2df7bfc..ce68568183 100755 --- a/lib/util.php +++ b/lib/util.php @@ -77,7 +77,7 @@ class OC_Util { public static function getVersion() { // hint: We only can count up. Reset minor/patchlevel when // updating major/minor version number. - return array(5, 80, 03); + return array(5, 80, 04); } /** From 505a300776a958f4076f923b0966ab13eee3c4b5 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 20:35:12 +0200 Subject: [PATCH 335/575] we should also normalize on update and search because the database layer will not do this for us --- lib/files/cache/cache.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index dc5e3e20fc..1e93cc59c6 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -226,6 +226,17 @@ class Cache { * @param array $data */ public function update($id, array $data) { + + if(isset($data['path'])) { + // normalize path + $data['path'] = $this->normalize($data['path']); + } + + if(isset($data['name'])) { + // normalize path + $data['name'] = $this->normalize($data['name']); + } + list($queryParts, $params) = $this->buildParts($data); $params[] = $id; @@ -418,6 +429,10 @@ class Cache { * @return array of file data */ public function search($pattern) { + + // normalize pattern + $pattern = $this->normalize($pattern); + $query = \OC_DB::prepare(' SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag` FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `storage` = ?' From 4eddef1556ac7ee7fc0c7e82279672c52d9b6db9 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 20:36:51 +0200 Subject: [PATCH 336/575] improved tests to check if database layer normalize folder names --- tests/lib/files/cache/cache.php | 40 ++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index e693fb892c..7b0453edb0 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -243,10 +243,10 @@ class Cache extends \PHPUnit_Framework_TestCase { * @brief this test show the bug resulting if we have no normalizer installed */ public function testWithoutNormalizer() { - // create folder Schön with U+00F6 + // folder name "Schön" with U+00F6 (normalized) $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; - // create folder Schön with U+0308 + // folder name "Schön" with U+0308 (un-normalized) $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; /** @@ -260,15 +260,24 @@ class Cache extends \PHPUnit_Framework_TestCase { $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + // put root folder $this->assertFalse($cacheMock->get('folder')); $this->assertGreaterThan(0, $cacheMock->put('folder', $data)); - $this->assertFalse($cacheMock->get('folder/' . $folderWith00F6)); - $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith00F6, $data)); - + // put un-normalized folder $this->assertFalse($cacheMock->get('folder/' .$folderWith0308)); $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith0308, $data)); + // get un-normalized folder by name + $unNormalizedFolderName = $cacheMock->get('folder/' .$folderWith0308); + + // check if database layer normalized the folder name (this should not happen) + $this->assertEquals($folderWith0308, $unNormalizedFolderName['name']); + + // put normalized folder + $this->assertFalse($cacheMock->get('folder/' . $folderWith00F6)); + $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith00F6, $data)); + // this is our bug, we have two different hashes with the same name (Schön) $this->assertEquals(2, count($cacheMock->getFolderContents('folder'))); } @@ -283,23 +292,32 @@ class Cache extends \PHPUnit_Framework_TestCase { return; } - // folder name Schön with U+00F6 + // folder name "Schön" with U+00F6 (normalized) $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; - // folder name Schön with U+0308 + // folder name "Schön" with U+0308 (un-normalized) $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + // put root folder $this->assertFalse($this->cache->get('folder')); $this->assertGreaterThan(0, $this->cache->put('folder', $data)); - $this->assertFalse($this->cache->get('folder/' . $folderWith00F6)); - $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith00F6, $data)); - - $this->assertTrue(is_array($this->cache->get('folder/' .$folderWith0308))); + // put un-normalized folder + $this->assertFalse($this->cache->get('folder/' .$folderWith0308)); $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith0308, $data)); + // get un-normalized folder by name + $unNormalizedFolderName = $this->cache->get('folder/' .$folderWith0308); + + // check if folder name was normalized + $this->assertEquals($folderWith00F6, $unNormalizedFolderName['name']); + + // put normalized folder + $this->assertTrue(is_array($this->cache->get('folder/' . $folderWith00F6))); + $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith00F6, $data)); + // at this point we should have only one folder named "Schön" $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); } From 9a6cd89a69783d35726e6963eabe51e34ce2e878 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 21:33:05 +0200 Subject: [PATCH 337/575] added OC_DB::isError and logging --- apps/files_encryption/lib/util.php | 38 ++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2980aa94e0..9259f521d1 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -291,6 +291,10 @@ class Util $recoveryEnabled = array(); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + while ( $row = $result->fetchRow() ) { $recoveryEnabled[] = $row['recovery_enabled']; @@ -820,6 +824,10 @@ class Util $result = $query->execute( array( $fileId ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return substr( $row['path'], 5 ); @@ -1086,6 +1094,10 @@ class Util $migrationStatus = array(); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); if($row) { $migrationStatus[] = $row['migration_status']; @@ -1221,6 +1233,10 @@ class Util $result = $query->execute( array( $id ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return $row; @@ -1240,6 +1256,10 @@ class Util $result = $query->execute( array( $id ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return $row; @@ -1255,7 +1275,14 @@ class Util public function getOwnerFromSharedFile( $id ) { $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $source = $query->execute( array( $id ) )->fetchRow(); + + $result = $query->execute( array( $id ) ); + + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + + $source = $result->fetchRow(); $fileOwner = false; @@ -1266,7 +1293,14 @@ class Util while ( isset( $parent ) ) { $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $item = $query->execute( array( $parent ) )->fetchRow(); + + $result = $query->execute( array( $parent ) ); + + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + + $item = $result->fetchRow(); if ( isset( $item['parent'] ) ) { From 788c5940f08c5380b695c4bf9b69b53af1cd2d59 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 23:07:19 +0200 Subject: [PATCH 338/575] fixed error rising from fetchRow --- apps/files_encryption/lib/util.php | 49 ++++++++++++++++-------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9259f521d1..70fcd955be 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -293,12 +293,11 @@ class Util if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } - - while ( $row = $result->fetchRow() ) { - - $recoveryEnabled[] = $row['recovery_enabled']; - + } else { + $row = $result->fetchRow(); + if( isset( $row['recovery_enabled'] ) ) { + $recoveryEnabled[] = $row['recovery_enabled']; + } } // If no record is found @@ -824,13 +823,15 @@ class Util $result = $query->execute( array( $fileId ) ); + $path = false; if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); + $path = substr( $row['path'], strlen('files') ); } - $row = $result->fetchRow(); - - return substr( $row['path'], 5 ); + return $path; } @@ -1096,11 +1097,11 @@ class Util if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } - - $row = $result->fetchRow(); - if($row) { - $migrationStatus[] = $row['migration_status']; + } else { + $row = $result->fetchRow(); + if( isset( $row['migration_status'] ) ) { + $migrationStatus[] = $row['migration_status']; + } } // If no record is found @@ -1233,12 +1234,13 @@ class Util $result = $query->execute( array( $id ) ); + $row = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); } - $row = $result->fetchRow(); - return $row; } @@ -1256,12 +1258,13 @@ class Util $result = $query->execute( array( $id ) ); + $row = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); } - $row = $result->fetchRow(); - return $row; } @@ -1278,12 +1281,13 @@ class Util $result = $query->execute( array( $id ) ); + $source = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $source = $result->fetchRow(); } - $source = $result->fetchRow(); - $fileOwner = false; if ( isset( $source['parent'] ) ) { @@ -1296,12 +1300,13 @@ class Util $result = $query->execute( array( $parent ) ); + $item = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $item = $result->fetchRow(); } - $item = $result->fetchRow(); - if ( isset( $item['parent'] ) ) { $parent = $item['parent']; From 0c621ff6a93fe1b34c77257d83fd344489f59bab Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sun, 26 May 2013 02:03:54 +0200 Subject: [PATCH 339/575] [tx-robot] updated from transifex --- apps/files/l10n/hu_HU.php | 1 + apps/files_encryption/l10n/ar.php | 1 + apps/files_encryption/l10n/bg_BG.php | 1 + apps/files_encryption/l10n/bn_BD.php | 1 + apps/files_encryption/l10n/ca.php | 1 + apps/files_encryption/l10n/cs_CZ.php | 1 + apps/files_encryption/l10n/cy_GB.php | 1 + apps/files_encryption/l10n/da.php | 1 + apps/files_encryption/l10n/de.php | 1 + apps/files_encryption/l10n/de_DE.php | 8 +++- apps/files_encryption/l10n/el.php | 1 + apps/files_encryption/l10n/eo.php | 1 + apps/files_encryption/l10n/es.php | 1 + apps/files_encryption/l10n/es_AR.php | 1 + apps/files_encryption/l10n/et_EE.php | 1 + apps/files_encryption/l10n/eu.php | 1 + apps/files_encryption/l10n/fa.php | 1 + apps/files_encryption/l10n/fi_FI.php | 8 +++- apps/files_encryption/l10n/fr.php | 1 + apps/files_encryption/l10n/gl.php | 13 ++++++- apps/files_encryption/l10n/he.php | 1 + apps/files_encryption/l10n/hr.php | 3 ++ apps/files_encryption/l10n/hu_HU.php | 1 + apps/files_encryption/l10n/id.php | 1 + apps/files_encryption/l10n/is.php | 1 + apps/files_encryption/l10n/it.php | 19 +++++++++- apps/files_encryption/l10n/ja_JP.php | 18 ++++++++- apps/files_encryption/l10n/ka_GE.php | 1 + apps/files_encryption/l10n/ko.php | 1 + apps/files_encryption/l10n/ku_IQ.php | 1 + apps/files_encryption/l10n/lb.php | 3 ++ apps/files_encryption/l10n/lt_LT.php | 1 + apps/files_encryption/l10n/lv.php | 1 + apps/files_encryption/l10n/mk.php | 1 + apps/files_encryption/l10n/ms_MY.php | 3 ++ apps/files_encryption/l10n/nb_NO.php | 1 + apps/files_encryption/l10n/nl.php | 19 +++++++++- apps/files_encryption/l10n/nn_NO.php | 3 ++ apps/files_encryption/l10n/oc.php | 3 ++ apps/files_encryption/l10n/pl.php | 19 +++++++++- apps/files_encryption/l10n/pt_BR.php | 1 + apps/files_encryption/l10n/pt_PT.php | 1 + apps/files_encryption/l10n/ro.php | 1 + apps/files_encryption/l10n/ru.php | 1 + apps/files_encryption/l10n/ru_RU.php | 3 +- apps/files_encryption/l10n/si_LK.php | 1 + apps/files_encryption/l10n/sk_SK.php | 1 + apps/files_encryption/l10n/sl.php | 1 + apps/files_encryption/l10n/sr.php | 1 + apps/files_encryption/l10n/sv.php | 1 + apps/files_encryption/l10n/ta_LK.php | 1 + apps/files_encryption/l10n/th_TH.php | 1 + apps/files_encryption/l10n/tr.php | 1 + apps/files_encryption/l10n/ug.php | 1 + apps/files_encryption/l10n/uk.php | 1 + apps/files_encryption/l10n/vi.php | 1 + apps/files_encryption/l10n/zh_CN.GB2312.php | 1 + apps/files_encryption/l10n/zh_CN.php | 1 + apps/files_encryption/l10n/zh_TW.php | 1 + apps/user_ldap/l10n/hu_HU.php | 4 ++ core/l10n/de_DE.php | 1 + core/l10n/hu_HU.php | 1 + core/l10n/nl.php | 1 + core/l10n/zh_CN.php | 1 + l10n/ar/core.po | 4 +- l10n/ar/files.po | 4 +- l10n/ar/files_encryption.po | 6 +-- l10n/ar/files_external.po | 4 +- l10n/ar/files_sharing.po | 4 +- l10n/ar/files_trashbin.po | 4 +- l10n/ar/lib.po | 4 +- l10n/ar/settings.po | 4 +- l10n/ar/user_ldap.po | 4 +- l10n/bg_BG/core.po | 4 +- l10n/bg_BG/files.po | 4 +- l10n/bg_BG/files_encryption.po | 6 +-- l10n/bg_BG/files_external.po | 4 +- l10n/bg_BG/files_sharing.po | 4 +- l10n/bg_BG/files_trashbin.po | 4 +- l10n/bg_BG/lib.po | 4 +- l10n/bg_BG/settings.po | 4 +- l10n/bg_BG/user_ldap.po | 4 +- l10n/bn_BD/core.po | 4 +- l10n/bn_BD/files.po | 4 +- l10n/bn_BD/files_encryption.po | 6 +-- l10n/bn_BD/files_external.po | 4 +- l10n/bn_BD/files_sharing.po | 4 +- l10n/bn_BD/files_trashbin.po | 4 +- l10n/bn_BD/lib.po | 4 +- l10n/bn_BD/settings.po | 4 +- l10n/bn_BD/user_ldap.po | 4 +- l10n/ca/core.po | 4 +- l10n/ca/files.po | 4 +- l10n/ca/files_encryption.po | 6 +-- l10n/ca/files_external.po | 4 +- l10n/ca/files_sharing.po | 4 +- l10n/ca/files_trashbin.po | 4 +- l10n/ca/lib.po | 9 +++-- l10n/ca/settings.po | 9 +++-- l10n/ca/user_ldap.po | 4 +- l10n/cs_CZ/core.po | 4 +- l10n/cs_CZ/files.po | 4 +- l10n/cs_CZ/files_encryption.po | 6 +-- l10n/cs_CZ/files_external.po | 4 +- l10n/cs_CZ/files_sharing.po | 4 +- l10n/cs_CZ/files_trashbin.po | 4 +- l10n/cs_CZ/lib.po | 4 +- l10n/cs_CZ/settings.po | 4 +- l10n/cs_CZ/user_ldap.po | 4 +- l10n/cy_GB/core.po | 4 +- l10n/cy_GB/files.po | 4 +- l10n/cy_GB/files_encryption.po | 6 +-- l10n/cy_GB/files_external.po | 4 +- l10n/cy_GB/files_sharing.po | 4 +- l10n/cy_GB/files_trashbin.po | 4 +- l10n/cy_GB/lib.po | 4 +- l10n/cy_GB/settings.po | 4 +- l10n/cy_GB/user_ldap.po | 4 +- l10n/da/core.po | 4 +- l10n/da/files.po | 4 +- l10n/da/files_encryption.po | 6 +-- l10n/da/files_external.po | 4 +- l10n/da/files_sharing.po | 4 +- l10n/da/files_trashbin.po | 4 +- l10n/da/lib.po | 4 +- l10n/da/settings.po | 4 +- l10n/da/user_ldap.po | 4 +- l10n/de/core.po | 4 +- l10n/de/files.po | 4 +- l10n/de/files_encryption.po | 6 +-- l10n/de/files_external.po | 4 +- l10n/de/files_sharing.po | 4 +- l10n/de/files_trashbin.po | 4 +- l10n/de/lib.po | 4 +- l10n/de/settings.po | 4 +- l10n/de/user_ldap.po | 4 +- l10n/de_DE/core.po | 8 ++-- l10n/de_DE/files.po | 4 +- l10n/de_DE/files_encryption.po | 19 +++++----- l10n/de_DE/files_external.po | 4 +- l10n/de_DE/files_sharing.po | 4 +- l10n/de_DE/files_trashbin.po | 4 +- l10n/de_DE/lib.po | 9 +++-- l10n/de_DE/settings.po | 9 +++-- l10n/de_DE/user_ldap.po | 4 +- l10n/el/core.po | 4 +- l10n/el/files.po | 4 +- l10n/el/files_encryption.po | 6 +-- l10n/el/files_external.po | 4 +- l10n/el/files_sharing.po | 4 +- l10n/el/files_trashbin.po | 4 +- l10n/el/lib.po | 4 +- l10n/el/settings.po | 4 +- l10n/el/user_ldap.po | 4 +- l10n/en@pirate/files.po | 4 +- l10n/en@pirate/files_sharing.po | 4 +- l10n/eo/core.po | 4 +- l10n/eo/files.po | 4 +- l10n/eo/files_encryption.po | 6 +-- l10n/eo/files_external.po | 4 +- l10n/eo/files_sharing.po | 4 +- l10n/eo/files_trashbin.po | 4 +- l10n/eo/lib.po | 4 +- l10n/eo/settings.po | 4 +- l10n/eo/user_ldap.po | 4 +- l10n/es/core.po | 4 +- l10n/es/files.po | 4 +- l10n/es/files_encryption.po | 6 +-- l10n/es/files_external.po | 4 +- l10n/es/files_sharing.po | 4 +- l10n/es/files_trashbin.po | 4 +- l10n/es/lib.po | 4 +- l10n/es/settings.po | 4 +- l10n/es/user_ldap.po | 4 +- l10n/es_AR/core.po | 4 +- l10n/es_AR/files.po | 4 +- l10n/es_AR/files_encryption.po | 6 +-- l10n/es_AR/files_external.po | 4 +- l10n/es_AR/files_sharing.po | 4 +- l10n/es_AR/files_trashbin.po | 4 +- l10n/es_AR/lib.po | 4 +- l10n/es_AR/settings.po | 4 +- l10n/es_AR/user_ldap.po | 4 +- l10n/et_EE/core.po | 4 +- l10n/et_EE/files.po | 4 +- l10n/et_EE/files_encryption.po | 6 +-- l10n/et_EE/files_external.po | 4 +- l10n/et_EE/files_sharing.po | 4 +- l10n/et_EE/files_trashbin.po | 4 +- l10n/et_EE/lib.po | 4 +- l10n/et_EE/settings.po | 4 +- l10n/et_EE/user_ldap.po | 4 +- l10n/eu/core.po | 4 +- l10n/eu/files.po | 4 +- l10n/eu/files_encryption.po | 6 +-- l10n/eu/files_external.po | 4 +- l10n/eu/files_sharing.po | 4 +- l10n/eu/files_trashbin.po | 4 +- l10n/eu/lib.po | 4 +- l10n/eu/settings.po | 4 +- l10n/eu/user_ldap.po | 4 +- l10n/fa/core.po | 4 +- l10n/fa/files.po | 4 +- l10n/fa/files_encryption.po | 6 +-- l10n/fa/files_external.po | 4 +- l10n/fa/files_sharing.po | 4 +- l10n/fa/files_trashbin.po | 4 +- l10n/fa/lib.po | 4 +- l10n/fa/settings.po | 4 +- l10n/fa/user_ldap.po | 4 +- l10n/fi/files.po | 4 +- l10n/fi_FI/core.po | 4 +- l10n/fi_FI/files.po | 4 +- l10n/fi_FI/files_encryption.po | 19 +++++----- l10n/fi_FI/files_external.po | 4 +- l10n/fi_FI/files_sharing.po | 4 +- l10n/fi_FI/files_trashbin.po | 4 +- l10n/fi_FI/lib.po | 4 +- l10n/fi_FI/settings.po | 4 +- l10n/fi_FI/user_ldap.po | 4 +- l10n/fr/core.po | 4 +- l10n/fr/files.po | 4 +- l10n/fr/files_encryption.po | 6 +-- l10n/fr/files_external.po | 4 +- l10n/fr/files_sharing.po | 4 +- l10n/fr/files_trashbin.po | 4 +- l10n/fr/lib.po | 4 +- l10n/fr/settings.po | 4 +- l10n/fr/user_ldap.po | 4 +- l10n/gl/core.po | 4 +- l10n/gl/files.po | 4 +- l10n/gl/files_encryption.po | 29 ++++++++------- l10n/gl/files_external.po | 4 +- l10n/gl/files_sharing.po | 4 +- l10n/gl/files_trashbin.po | 4 +- l10n/gl/lib.po | 4 +- l10n/gl/settings.po | 8 ++-- l10n/gl/user_ldap.po | 4 +- l10n/he/core.po | 4 +- l10n/he/files.po | 4 +- l10n/he/files_encryption.po | 6 +-- l10n/he/files_external.po | 4 +- l10n/he/files_sharing.po | 4 +- l10n/he/files_trashbin.po | 4 +- l10n/he/lib.po | 4 +- l10n/he/settings.po | 4 +- l10n/he/user_ldap.po | 4 +- l10n/hr/core.po | 4 +- l10n/hr/files.po | 4 +- l10n/hr/files_encryption.po | 6 +-- l10n/hr/files_external.po | 4 +- l10n/hr/files_sharing.po | 4 +- l10n/hr/files_trashbin.po | 4 +- l10n/hr/lib.po | 4 +- l10n/hr/settings.po | 4 +- l10n/hr/user_ldap.po | 4 +- l10n/hu_HU/core.po | 6 +-- l10n/hu_HU/files.po | 9 +++-- l10n/hu_HU/files_encryption.po | 6 +-- l10n/hu_HU/files_external.po | 4 +- l10n/hu_HU/files_sharing.po | 4 +- l10n/hu_HU/files_trashbin.po | 4 +- l10n/hu_HU/lib.po | 9 +++-- l10n/hu_HU/settings.po | 8 ++-- l10n/hu_HU/user_ldap.po | 15 ++++---- l10n/hy/files.po | 4 +- l10n/hy/files_external.po | 2 +- l10n/hy/files_sharing.po | 2 +- l10n/hy/files_trashbin.po | 2 +- l10n/hy/settings.po | 4 +- l10n/ia/core.po | 4 +- l10n/ia/files.po | 4 +- l10n/ia/files_external.po | 4 +- l10n/ia/files_sharing.po | 4 +- l10n/ia/files_trashbin.po | 4 +- l10n/ia/lib.po | 4 +- l10n/ia/settings.po | 4 +- l10n/ia/user_ldap.po | 4 +- l10n/id/core.po | 4 +- l10n/id/files.po | 4 +- l10n/id/files_encryption.po | 6 +-- l10n/id/files_external.po | 4 +- l10n/id/files_sharing.po | 4 +- l10n/id/files_trashbin.po | 4 +- l10n/id/lib.po | 4 +- l10n/id/settings.po | 4 +- l10n/id/user_ldap.po | 4 +- l10n/is/core.po | 4 +- l10n/is/files.po | 4 +- l10n/is/files_encryption.po | 6 +-- l10n/is/files_external.po | 4 +- l10n/is/files_sharing.po | 4 +- l10n/is/files_trashbin.po | 4 +- l10n/is/lib.po | 4 +- l10n/is/settings.po | 4 +- l10n/is/user_ldap.po | 4 +- l10n/it/core.po | 4 +- l10n/it/files.po | 4 +- l10n/it/files_encryption.po | 41 +++++++++++---------- l10n/it/files_external.po | 4 +- l10n/it/files_sharing.po | 4 +- l10n/it/files_trashbin.po | 4 +- l10n/it/lib.po | 4 +- l10n/it/settings.po | 8 ++-- l10n/it/user_ldap.po | 4 +- l10n/ja_JP/core.po | 4 +- l10n/ja_JP/files.po | 4 +- l10n/ja_JP/files_encryption.po | 39 ++++++++++---------- l10n/ja_JP/files_external.po | 4 +- l10n/ja_JP/files_sharing.po | 4 +- l10n/ja_JP/files_trashbin.po | 4 +- l10n/ja_JP/lib.po | 4 +- l10n/ja_JP/settings.po | 4 +- l10n/ja_JP/user_ldap.po | 4 +- l10n/ka/files.po | 4 +- l10n/ka/files_sharing.po | 4 +- l10n/ka_GE/core.po | 4 +- l10n/ka_GE/files.po | 4 +- l10n/ka_GE/files_encryption.po | 6 +-- l10n/ka_GE/files_external.po | 4 +- l10n/ka_GE/files_sharing.po | 4 +- l10n/ka_GE/files_trashbin.po | 4 +- l10n/ka_GE/lib.po | 4 +- l10n/ka_GE/settings.po | 4 +- l10n/ka_GE/user_ldap.po | 4 +- l10n/ko/core.po | 4 +- l10n/ko/files.po | 4 +- l10n/ko/files_encryption.po | 6 +-- l10n/ko/files_external.po | 4 +- l10n/ko/files_sharing.po | 4 +- l10n/ko/files_trashbin.po | 4 +- l10n/ko/lib.po | 4 +- l10n/ko/settings.po | 4 +- l10n/ko/user_ldap.po | 4 +- l10n/ku_IQ/core.po | 4 +- l10n/ku_IQ/files.po | 4 +- l10n/ku_IQ/files_encryption.po | 6 +-- l10n/ku_IQ/files_sharing.po | 4 +- l10n/ku_IQ/files_trashbin.po | 4 +- l10n/ku_IQ/settings.po | 4 +- l10n/ku_IQ/user_ldap.po | 4 +- l10n/lb/core.po | 4 +- l10n/lb/files.po | 4 +- l10n/lb/files_encryption.po | 6 +-- l10n/lb/files_external.po | 4 +- l10n/lb/files_sharing.po | 4 +- l10n/lb/files_trashbin.po | 4 +- l10n/lb/lib.po | 4 +- l10n/lb/settings.po | 4 +- l10n/lb/user_ldap.po | 4 +- l10n/lt_LT/core.po | 4 +- l10n/lt_LT/files.po | 4 +- l10n/lt_LT/files_encryption.po | 6 +-- l10n/lt_LT/files_external.po | 4 +- l10n/lt_LT/files_sharing.po | 4 +- l10n/lt_LT/files_trashbin.po | 4 +- l10n/lt_LT/lib.po | 4 +- l10n/lt_LT/settings.po | 4 +- l10n/lt_LT/user_ldap.po | 4 +- l10n/lv/core.po | 4 +- l10n/lv/files.po | 4 +- l10n/lv/files_encryption.po | 6 +-- l10n/lv/files_external.po | 4 +- l10n/lv/files_sharing.po | 4 +- l10n/lv/files_trashbin.po | 4 +- l10n/lv/lib.po | 4 +- l10n/lv/settings.po | 4 +- l10n/lv/user_ldap.po | 4 +- l10n/mk/core.po | 4 +- l10n/mk/files.po | 4 +- l10n/mk/files_encryption.po | 6 +-- l10n/mk/files_external.po | 4 +- l10n/mk/files_sharing.po | 4 +- l10n/mk/files_trashbin.po | 4 +- l10n/mk/lib.po | 4 +- l10n/mk/settings.po | 4 +- l10n/mk/user_ldap.po | 4 +- l10n/ms_MY/core.po | 4 +- l10n/ms_MY/files.po | 4 +- l10n/ms_MY/files_encryption.po | 6 +-- l10n/ms_MY/files_external.po | 4 +- l10n/ms_MY/files_sharing.po | 4 +- l10n/ms_MY/files_trashbin.po | 4 +- l10n/ms_MY/lib.po | 4 +- l10n/ms_MY/settings.po | 4 +- l10n/ms_MY/user_ldap.po | 4 +- l10n/my_MM/core.po | 4 +- l10n/my_MM/files.po | 4 +- l10n/my_MM/files_sharing.po | 4 +- l10n/my_MM/lib.po | 4 +- l10n/nb_NO/core.po | 4 +- l10n/nb_NO/files.po | 4 +- l10n/nb_NO/files_encryption.po | 6 +-- l10n/nb_NO/files_external.po | 4 +- l10n/nb_NO/files_sharing.po | 4 +- l10n/nb_NO/files_trashbin.po | 4 +- l10n/nb_NO/lib.po | 4 +- l10n/nb_NO/settings.po | 4 +- l10n/nb_NO/user_ldap.po | 4 +- l10n/nl/core.po | 6 +-- l10n/nl/files.po | 4 +- l10n/nl/files_encryption.po | 41 +++++++++++---------- l10n/nl/files_external.po | 4 +- l10n/nl/files_sharing.po | 4 +- l10n/nl/files_trashbin.po | 4 +- l10n/nl/lib.po | 9 +++-- l10n/nl/settings.po | 8 ++-- l10n/nl/user_ldap.po | 4 +- l10n/nn_NO/core.po | 4 +- l10n/nn_NO/files.po | 4 +- l10n/nn_NO/files_encryption.po | 6 +-- l10n/nn_NO/files_external.po | 4 +- l10n/nn_NO/files_sharing.po | 4 +- l10n/nn_NO/files_trashbin.po | 4 +- l10n/nn_NO/lib.po | 4 +- l10n/nn_NO/settings.po | 4 +- l10n/nn_NO/user_ldap.po | 4 +- l10n/oc/core.po | 4 +- l10n/oc/files.po | 4 +- l10n/oc/files_encryption.po | 6 +-- l10n/oc/files_external.po | 4 +- l10n/oc/files_sharing.po | 4 +- l10n/oc/files_trashbin.po | 4 +- l10n/oc/settings.po | 4 +- l10n/oc/user_ldap.po | 4 +- l10n/pl/core.po | 4 +- l10n/pl/files.po | 4 +- l10n/pl/files_encryption.po | 41 +++++++++++---------- l10n/pl/files_external.po | 4 +- l10n/pl/files_sharing.po | 4 +- l10n/pl/files_trashbin.po | 4 +- l10n/pl/lib.po | 4 +- l10n/pl/settings.po | 9 +++-- l10n/pl/user_ldap.po | 4 +- l10n/pl_PL/files.po | 4 +- l10n/pl_PL/settings.po | 4 +- l10n/pt_BR/core.po | 4 +- l10n/pt_BR/files.po | 4 +- l10n/pt_BR/files_encryption.po | 6 +-- l10n/pt_BR/files_external.po | 4 +- l10n/pt_BR/files_sharing.po | 4 +- l10n/pt_BR/files_trashbin.po | 4 +- l10n/pt_BR/lib.po | 4 +- l10n/pt_BR/settings.po | 4 +- l10n/pt_BR/user_ldap.po | 4 +- l10n/pt_PT/core.po | 4 +- l10n/pt_PT/files.po | 4 +- l10n/pt_PT/files_encryption.po | 6 +-- l10n/pt_PT/files_external.po | 4 +- l10n/pt_PT/files_sharing.po | 4 +- l10n/pt_PT/files_trashbin.po | 4 +- l10n/pt_PT/lib.po | 4 +- l10n/pt_PT/settings.po | 4 +- l10n/pt_PT/user_ldap.po | 4 +- l10n/ro/core.po | 4 +- l10n/ro/files.po | 4 +- l10n/ro/files_encryption.po | 6 +-- l10n/ro/files_external.po | 4 +- l10n/ro/files_sharing.po | 4 +- l10n/ro/files_trashbin.po | 4 +- l10n/ro/lib.po | 4 +- l10n/ro/settings.po | 4 +- l10n/ro/user_ldap.po | 4 +- l10n/ru/core.po | 4 +- l10n/ru/files.po | 4 +- l10n/ru/files_encryption.po | 6 +-- l10n/ru/files_external.po | 4 +- l10n/ru/files_sharing.po | 4 +- l10n/ru/files_trashbin.po | 4 +- l10n/ru/lib.po | 4 +- l10n/ru/settings.po | 4 +- l10n/ru/user_ldap.po | 4 +- l10n/ru_RU/core.po | 4 +- l10n/ru_RU/files.po | 2 +- l10n/ru_RU/files_encryption.po | 6 +-- l10n/ru_RU/files_external.po | 2 +- l10n/ru_RU/files_sharing.po | 2 +- l10n/ru_RU/files_trashbin.po | 2 +- l10n/ru_RU/lib.po | 4 +- l10n/ru_RU/settings.po | 6 +-- l10n/ru_RU/user_ldap.po | 2 +- l10n/si_LK/core.po | 4 +- l10n/si_LK/files.po | 4 +- l10n/si_LK/files_encryption.po | 6 +-- l10n/si_LK/files_external.po | 4 +- l10n/si_LK/files_sharing.po | 4 +- l10n/si_LK/files_trashbin.po | 4 +- l10n/si_LK/lib.po | 4 +- l10n/si_LK/settings.po | 4 +- l10n/si_LK/user_ldap.po | 4 +- l10n/sk_SK/core.po | 4 +- l10n/sk_SK/files.po | 4 +- l10n/sk_SK/files_encryption.po | 6 +-- l10n/sk_SK/files_external.po | 4 +- l10n/sk_SK/files_sharing.po | 4 +- l10n/sk_SK/files_trashbin.po | 4 +- l10n/sk_SK/lib.po | 4 +- l10n/sk_SK/settings.po | 4 +- l10n/sk_SK/user_ldap.po | 4 +- l10n/sl/core.po | 4 +- l10n/sl/files.po | 4 +- l10n/sl/files_encryption.po | 6 +-- l10n/sl/files_external.po | 4 +- l10n/sl/files_sharing.po | 4 +- l10n/sl/files_trashbin.po | 4 +- l10n/sl/lib.po | 4 +- l10n/sl/settings.po | 4 +- l10n/sl/user_ldap.po | 4 +- l10n/sq/core.po | 4 +- l10n/sq/files.po | 4 +- l10n/sq/files_external.po | 4 +- l10n/sq/files_sharing.po | 4 +- l10n/sq/files_trashbin.po | 4 +- l10n/sq/lib.po | 4 +- l10n/sq/settings.po | 4 +- l10n/sq/user_ldap.po | 4 +- l10n/sr/core.po | 4 +- l10n/sr/files.po | 4 +- l10n/sr/files_encryption.po | 6 +-- l10n/sr/files_external.po | 4 +- l10n/sr/files_sharing.po | 4 +- l10n/sr/files_trashbin.po | 4 +- l10n/sr/lib.po | 4 +- l10n/sr/settings.po | 4 +- l10n/sr/user_ldap.po | 4 +- l10n/sr@latin/core.po | 4 +- l10n/sr@latin/files.po | 4 +- l10n/sr@latin/files_external.po | 4 +- l10n/sr@latin/files_sharing.po | 4 +- l10n/sr@latin/files_trashbin.po | 4 +- l10n/sr@latin/lib.po | 4 +- l10n/sr@latin/settings.po | 4 +- l10n/sv/core.po | 4 +- l10n/sv/files.po | 4 +- l10n/sv/files_encryption.po | 6 +-- l10n/sv/files_external.po | 4 +- l10n/sv/files_sharing.po | 4 +- l10n/sv/files_trashbin.po | 4 +- l10n/sv/lib.po | 4 +- l10n/sv/settings.po | 4 +- l10n/sv/user_ldap.po | 4 +- l10n/ta_LK/core.po | 4 +- l10n/ta_LK/files.po | 4 +- l10n/ta_LK/files_encryption.po | 6 +-- l10n/ta_LK/files_external.po | 4 +- l10n/ta_LK/files_sharing.po | 4 +- l10n/ta_LK/files_trashbin.po | 4 +- l10n/ta_LK/lib.po | 4 +- l10n/ta_LK/settings.po | 4 +- l10n/ta_LK/user_ldap.po | 4 +- l10n/te/core.po | 4 +- l10n/te/files.po | 4 +- l10n/te/files_external.po | 4 +- l10n/te/files_trashbin.po | 4 +- l10n/te/settings.po | 4 +- l10n/te/user_ldap.po | 4 +- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 4 +- l10n/th_TH/files.po | 4 +- l10n/th_TH/files_encryption.po | 6 +-- l10n/th_TH/files_external.po | 4 +- l10n/th_TH/files_sharing.po | 4 +- l10n/th_TH/files_trashbin.po | 4 +- l10n/th_TH/lib.po | 4 +- l10n/th_TH/settings.po | 4 +- l10n/th_TH/user_ldap.po | 4 +- l10n/tr/core.po | 4 +- l10n/tr/files.po | 4 +- l10n/tr/files_encryption.po | 6 +-- l10n/tr/files_external.po | 4 +- l10n/tr/files_sharing.po | 4 +- l10n/tr/files_trashbin.po | 4 +- l10n/tr/lib.po | 4 +- l10n/tr/settings.po | 4 +- l10n/tr/user_ldap.po | 4 +- l10n/ug/core.po | 4 +- l10n/ug/files.po | 4 +- l10n/ug/files_encryption.po | 6 +-- l10n/ug/files_external.po | 4 +- l10n/ug/files_sharing.po | 4 +- l10n/ug/files_trashbin.po | 4 +- l10n/ug/lib.po | 4 +- l10n/ug/settings.po | 4 +- l10n/ug/user_ldap.po | 4 +- l10n/uk/core.po | 4 +- l10n/uk/files.po | 4 +- l10n/uk/files_encryption.po | 6 +-- l10n/uk/files_external.po | 4 +- l10n/uk/files_sharing.po | 4 +- l10n/uk/files_trashbin.po | 4 +- l10n/uk/lib.po | 4 +- l10n/uk/settings.po | 4 +- l10n/uk/user_ldap.po | 4 +- l10n/ur_PK/core.po | 4 +- l10n/ur_PK/files.po | 4 +- l10n/ur_PK/files_trashbin.po | 4 +- l10n/ur_PK/settings.po | 4 +- l10n/ur_PK/user_ldap.po | 4 +- l10n/vi/core.po | 4 +- l10n/vi/files.po | 4 +- l10n/vi/files_encryption.po | 6 +-- l10n/vi/files_external.po | 4 +- l10n/vi/files_sharing.po | 4 +- l10n/vi/files_trashbin.po | 4 +- l10n/vi/lib.po | 4 +- l10n/vi/settings.po | 4 +- l10n/vi/user_ldap.po | 4 +- l10n/zh_CN.GB2312/core.po | 4 +- l10n/zh_CN.GB2312/files.po | 4 +- l10n/zh_CN.GB2312/files_encryption.po | 6 +-- l10n/zh_CN.GB2312/files_external.po | 4 +- l10n/zh_CN.GB2312/files_sharing.po | 4 +- l10n/zh_CN.GB2312/files_trashbin.po | 4 +- l10n/zh_CN.GB2312/lib.po | 4 +- l10n/zh_CN.GB2312/settings.po | 4 +- l10n/zh_CN.GB2312/user_ldap.po | 4 +- l10n/zh_CN/core.po | 6 +-- l10n/zh_CN/files.po | 4 +- l10n/zh_CN/files_encryption.po | 6 +-- l10n/zh_CN/files_external.po | 4 +- l10n/zh_CN/files_sharing.po | 4 +- l10n/zh_CN/files_trashbin.po | 4 +- l10n/zh_CN/lib.po | 4 +- l10n/zh_CN/settings.po | 4 +- l10n/zh_CN/user_ldap.po | 4 +- l10n/zh_HK/core.po | 4 +- l10n/zh_HK/files.po | 4 +- l10n/zh_HK/files_external.po | 4 +- l10n/zh_HK/files_sharing.po | 4 +- l10n/zh_HK/files_trashbin.po | 4 +- l10n/zh_HK/lib.po | 4 +- l10n/zh_HK/settings.po | 4 +- l10n/zh_HK/user_ldap.po | 4 +- l10n/zh_TW/core.po | 4 +- l10n/zh_TW/files.po | 4 +- l10n/zh_TW/files_encryption.po | 6 +-- l10n/zh_TW/files_external.po | 4 +- l10n/zh_TW/files_sharing.po | 4 +- l10n/zh_TW/files_trashbin.po | 4 +- l10n/zh_TW/lib.po | 4 +- l10n/zh_TW/settings.po | 4 +- l10n/zh_TW/user_ldap.po | 4 +- lib/l10n/ca.php | 1 + lib/l10n/de_DE.php | 1 + lib/l10n/hu_HU.php | 1 + lib/l10n/nl.php | 1 + settings/l10n/ca.php | 1 + settings/l10n/de_DE.php | 1 + settings/l10n/gl.php | 1 + settings/l10n/hu_HU.php | 1 + settings/l10n/it.php | 1 + settings/l10n/nl.php | 1 + settings/l10n/pl.php | 1 + settings/l10n/ru_RU.php | 1 + 664 files changed, 1535 insertions(+), 1349 deletions(-) create mode 100644 apps/files_encryption/l10n/hr.php create mode 100644 apps/files_encryption/l10n/lb.php create mode 100644 apps/files_encryption/l10n/ms_MY.php create mode 100644 apps/files_encryption/l10n/nn_NO.php create mode 100644 apps/files_encryption/l10n/oc.php diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 4520bfdd08..76b8bd420d 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -46,6 +46,7 @@ "{count} folders" => "{count} mappa", "1 file" => "1 fájl", "{count} files" => "{count} fájl", +"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Érvénytelen mappanév. A 'Shared' az ownCloud számára fenntartott elnevezés", "Unable to rename file" => "Nem lehet átnevezni a fájlt", "Upload" => "Feltöltés", "File handling" => "Fájlkezelés", diff --git a/apps/files_encryption/l10n/ar.php b/apps/files_encryption/l10n/ar.php index 43a81d1ef8..1adc158c6b 100644 --- a/apps/files_encryption/l10n/ar.php +++ b/apps/files_encryption/l10n/ar.php @@ -1,3 +1,4 @@ "جاري الحفظ...", "Encryption" => "التشفير" ); diff --git a/apps/files_encryption/l10n/bg_BG.php b/apps/files_encryption/l10n/bg_BG.php index 7087a04269..f21f7641c1 100644 --- a/apps/files_encryption/l10n/bg_BG.php +++ b/apps/files_encryption/l10n/bg_BG.php @@ -1,3 +1,4 @@ "Записване...", "Encryption" => "Криптиране" ); diff --git a/apps/files_encryption/l10n/bn_BD.php b/apps/files_encryption/l10n/bn_BD.php index b8241b5bbd..068de46e7a 100644 --- a/apps/files_encryption/l10n/bn_BD.php +++ b/apps/files_encryption/l10n/bn_BD.php @@ -1,3 +1,4 @@ "সংরক্ষণ করা হচ্ছে..", "Encryption" => "সংকেতায়ন" ); diff --git a/apps/files_encryption/l10n/ca.php b/apps/files_encryption/l10n/ca.php index 57a5897a3d..46e91d1f07 100644 --- a/apps/files_encryption/l10n/ca.php +++ b/apps/files_encryption/l10n/ca.php @@ -1,3 +1,4 @@ "Desant...", "Encryption" => "Xifrat" ); diff --git a/apps/files_encryption/l10n/cs_CZ.php b/apps/files_encryption/l10n/cs_CZ.php index 27ab9d0464..f9b2dd06b6 100644 --- a/apps/files_encryption/l10n/cs_CZ.php +++ b/apps/files_encryption/l10n/cs_CZ.php @@ -1,3 +1,4 @@ "Ukládám...", "Encryption" => "Šifrování" ); diff --git a/apps/files_encryption/l10n/cy_GB.php b/apps/files_encryption/l10n/cy_GB.php index 98571bf943..6e18a7913c 100644 --- a/apps/files_encryption/l10n/cy_GB.php +++ b/apps/files_encryption/l10n/cy_GB.php @@ -1,3 +1,4 @@ "Yn cadw...", "Encryption" => "Amgryptiad" ); diff --git a/apps/files_encryption/l10n/da.php b/apps/files_encryption/l10n/da.php index b008f7884f..1cd43390aa 100644 --- a/apps/files_encryption/l10n/da.php +++ b/apps/files_encryption/l10n/da.php @@ -1,3 +1,4 @@ "Gemmer...", "Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php index e62f244539..2ab77f480c 100644 --- a/apps/files_encryption/l10n/de.php +++ b/apps/files_encryption/l10n/de.php @@ -1,3 +1,4 @@ "Speichern...", "Encryption" => "Verschlüsselung" ); diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php index e62f244539..5ab283ccab 100644 --- a/apps/files_encryption/l10n/de_DE.php +++ b/apps/files_encryption/l10n/de_DE.php @@ -1,3 +1,9 @@ "Verschlüsselung" +"Password successfully changed." => "Das Passwort wurde erfolgreich geändert.", +"Could not change the password. Maybe the old password was not correct." => "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", +"Saving..." => "Speichern...", +"Encryption" => "Verschlüsselung", +"Enabled" => "Aktiviert", +"Disabled" => "Deaktiviert", +"Change Password" => "Passwort ändern" ); diff --git a/apps/files_encryption/l10n/el.php b/apps/files_encryption/l10n/el.php index aa439d40f0..7067799cd2 100644 --- a/apps/files_encryption/l10n/el.php +++ b/apps/files_encryption/l10n/el.php @@ -1,3 +1,4 @@ "Γίνεται αποθήκευση...", "Encryption" => "Κρυπτογράφηση" ); diff --git a/apps/files_encryption/l10n/eo.php b/apps/files_encryption/l10n/eo.php index 41880005c5..ea405fda1a 100644 --- a/apps/files_encryption/l10n/eo.php +++ b/apps/files_encryption/l10n/eo.php @@ -1,3 +1,4 @@ "Konservante...", "Encryption" => "Ĉifrado" ); diff --git a/apps/files_encryption/l10n/es.php b/apps/files_encryption/l10n/es.php index 26ace24e33..7311a78f09 100644 --- a/apps/files_encryption/l10n/es.php +++ b/apps/files_encryption/l10n/es.php @@ -1,3 +1,4 @@ "Guardando...", "Encryption" => "Cifrado" ); diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php index 2a6360beb6..857186a55f 100644 --- a/apps/files_encryption/l10n/es_AR.php +++ b/apps/files_encryption/l10n/es_AR.php @@ -1,3 +1,4 @@ "Guardando...", "Encryption" => "Encriptación" ); diff --git a/apps/files_encryption/l10n/et_EE.php b/apps/files_encryption/l10n/et_EE.php index 07540ed8c3..c8d5361c08 100644 --- a/apps/files_encryption/l10n/et_EE.php +++ b/apps/files_encryption/l10n/et_EE.php @@ -1,3 +1,4 @@ "Salvestamine...", "Encryption" => "Krüpteerimine" ); diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php index f443a61d8a..253953e5c5 100644 --- a/apps/files_encryption/l10n/eu.php +++ b/apps/files_encryption/l10n/eu.php @@ -1,3 +1,4 @@ "Gordetzen...", "Encryption" => "Enkriptazioa" ); diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 615e4b920e..af2e36b2a8 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,3 +1,4 @@ "در حال ذخیره سازی...", "Encryption" => "رمزگذاری" ); diff --git a/apps/files_encryption/l10n/fi_FI.php b/apps/files_encryption/l10n/fi_FI.php index bc67b9d858..a00cc8ab96 100644 --- a/apps/files_encryption/l10n/fi_FI.php +++ b/apps/files_encryption/l10n/fi_FI.php @@ -1,3 +1,9 @@ "Salaus" +"Password successfully changed." => "Salasana vaihdettiin onnistuneesti.", +"Could not change the password. Maybe the old password was not correct." => "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.", +"Saving..." => "Tallennetaan...", +"Encryption" => "Salaus", +"Enabled" => "Käytössä", +"Disabled" => "Ei käytössä", +"Change Password" => "Vaihda salasana" ); diff --git a/apps/files_encryption/l10n/fr.php b/apps/files_encryption/l10n/fr.php index 20952995c4..98fb70691d 100644 --- a/apps/files_encryption/l10n/fr.php +++ b/apps/files_encryption/l10n/fr.php @@ -1,3 +1,4 @@ "Enregistrement...", "Encryption" => "Chiffrement" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index 26ace24e33..a3384174d7 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -1,3 +1,14 @@ "Cifrado" +"Recovery key successfully " => "O contrasinal foi recuperado satisfactoriamente", +"Could not " => "Non foi posíbel", +"Password successfully changed." => "O contrasinal foi cambiado satisfactoriamente", +"Could not change the password. Maybe the old password was not correct." => "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.", +"Saving..." => "Gardando...", +"Encryption" => "Cifrado", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activar a chave de recuperación do cifrado de contrasinais (permite compartir a chave de recuperación):", +"Recovery account password" => "Recuperación do contrasinal da conta", +"Enabled" => "Activado", +"Disabled" => "Desactivado", +"Change encryption passwords recovery key:" => "Cambiar a chave de la recuperación do cifrado de contrasinais:", +"Change Password" => "Cambiar o contrasinal" ); diff --git a/apps/files_encryption/l10n/he.php b/apps/files_encryption/l10n/he.php index 54d56c5fc0..7a80cfa2f9 100644 --- a/apps/files_encryption/l10n/he.php +++ b/apps/files_encryption/l10n/he.php @@ -1,3 +1,4 @@ "שמירה…", "Encryption" => "הצפנה" ); diff --git a/apps/files_encryption/l10n/hr.php b/apps/files_encryption/l10n/hr.php new file mode 100644 index 0000000000..9b9284ddc5 --- /dev/null +++ b/apps/files_encryption/l10n/hr.php @@ -0,0 +1,3 @@ + "Spremanje..." +); diff --git a/apps/files_encryption/l10n/hu_HU.php b/apps/files_encryption/l10n/hu_HU.php index a80613ec0f..bf95c31f2c 100644 --- a/apps/files_encryption/l10n/hu_HU.php +++ b/apps/files_encryption/l10n/hu_HU.php @@ -1,3 +1,4 @@ "Mentés...", "Encryption" => "Titkosítás" ); diff --git a/apps/files_encryption/l10n/id.php b/apps/files_encryption/l10n/id.php index e8778d4b4a..ad827b5379 100644 --- a/apps/files_encryption/l10n/id.php +++ b/apps/files_encryption/l10n/id.php @@ -1,3 +1,4 @@ "Menyimpan...", "Encryption" => "Enkripsi" ); diff --git a/apps/files_encryption/l10n/is.php b/apps/files_encryption/l10n/is.php index 6ca1b6ef7b..0f98c6bd3b 100644 --- a/apps/files_encryption/l10n/is.php +++ b/apps/files_encryption/l10n/is.php @@ -1,3 +1,4 @@ "Er að vista ...", "Encryption" => "Dulkóðun" ); diff --git a/apps/files_encryption/l10n/it.php b/apps/files_encryption/l10n/it.php index 129e5c1da1..8f7a4023b6 100644 --- a/apps/files_encryption/l10n/it.php +++ b/apps/files_encryption/l10n/it.php @@ -1,3 +1,20 @@ "Cifratura" +"Recovery key successfully " => "Chiave ripristinata correttamente", +"Could not " => "Impossibile", +"Password successfully changed." => "Password modificata correttamente.", +"Could not change the password. Maybe the old password was not correct." => "Impossibile cambiare la password. Forse la vecchia password non era corretta.", +"Saving..." => "Salvataggio in corso...", +"Encryption" => "Cifratura", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Abilita la chiave di ripristino delle password di cifratura (consente di condividere la chiave di ripristino):", +"Recovery account password" => "Password di ripristino dell'account", +"Enabled" => "Abilitata", +"Disabled" => "Disabilitata", +"Change encryption passwords recovery key:" => "Cambia la chiave di ripristino delle password di cifratura:", +"Old Recovery account password" => "Vecchia password di ripristino dell'account", +"New Recovery account password" => "Nuova password di ripristino dell'account", +"Change Password" => "Modifica password", +"Enable password recovery by sharing all files with your administrator:" => "Abilita il ripristino della password condividendo tutti i file con l'amministratore:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "L'abilitazione di questa opzione ti consentirà di ottenere nuovamente accesso ai tuoi file cifrati in caso di smarrimento della password", +"File recovery settings updated" => "Impostazioni di ripristino dei file aggiornate", +"Could not update file recovery" => "Impossibile aggiornare il ripristino dei file" ); diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 767c9642f6..99fd3ec3ab 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -1,3 +1,19 @@ "暗号化" +"Recovery key successfully " => "鍵を復旧することができました。", +"Could not " => "できませんでした。", +"Password successfully changed." => "パスワードを変更できました。", +"Could not change the password. Maybe the old password was not correct." => "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", +"Saving..." => "保存中...", +"Encryption" => "暗号化", +"Recovery account password" => "復旧アカウントのパスワード", +"Enabled" => "有効", +"Disabled" => "無効", +"Change encryption passwords recovery key:" => "復旧キーの暗号化パスワードを変更:", +"Old Recovery account password" => "古い復旧アカウントのパスワード", +"New Recovery account password" => "新しい復旧アカウントのパスワード", +"Change Password" => "パスワードを変更", +"Enable password recovery by sharing all files with your administrator:" => "管理者が全ての共有ファイルに対してパスワードによる復旧を有効にする:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "このオプションを有効にすると、もしパスワードが分からなくなったとしても、暗号化されたファイルに再度アクセスすることが出来るようになります。", +"File recovery settings updated" => "ファイル復旧設定が更新されました", +"Could not update file recovery" => "ファイル復旧を更新できませんでした" ); diff --git a/apps/files_encryption/l10n/ka_GE.php b/apps/files_encryption/l10n/ka_GE.php index 36b07bd386..55a59f4434 100644 --- a/apps/files_encryption/l10n/ka_GE.php +++ b/apps/files_encryption/l10n/ka_GE.php @@ -1,3 +1,4 @@ "შენახვა...", "Encryption" => "ენკრიპცია" ); diff --git a/apps/files_encryption/l10n/ko.php b/apps/files_encryption/l10n/ko.php index 5935811bf2..cf8149da3a 100644 --- a/apps/files_encryption/l10n/ko.php +++ b/apps/files_encryption/l10n/ko.php @@ -1,3 +1,4 @@ "저장 중...", "Encryption" => "암호화" ); diff --git a/apps/files_encryption/l10n/ku_IQ.php b/apps/files_encryption/l10n/ku_IQ.php index ff6c34b71d..61b720372e 100644 --- a/apps/files_encryption/l10n/ku_IQ.php +++ b/apps/files_encryption/l10n/ku_IQ.php @@ -1,3 +1,4 @@ "پاشکه‌وتده‌کات...", "Encryption" => "نهێنیکردن" ); diff --git a/apps/files_encryption/l10n/lb.php b/apps/files_encryption/l10n/lb.php new file mode 100644 index 0000000000..77bad68173 --- /dev/null +++ b/apps/files_encryption/l10n/lb.php @@ -0,0 +1,3 @@ + "Speicheren..." +); diff --git a/apps/files_encryption/l10n/lt_LT.php b/apps/files_encryption/l10n/lt_LT.php index 7ec3a32e02..6bc80ff44a 100644 --- a/apps/files_encryption/l10n/lt_LT.php +++ b/apps/files_encryption/l10n/lt_LT.php @@ -1,3 +1,4 @@ "Saugoma...", "Encryption" => "Šifravimas" ); diff --git a/apps/files_encryption/l10n/lv.php b/apps/files_encryption/l10n/lv.php index abcc0305c1..04922854ce 100644 --- a/apps/files_encryption/l10n/lv.php +++ b/apps/files_encryption/l10n/lv.php @@ -1,3 +1,4 @@ "Saglabā...", "Encryption" => "Šifrēšana" ); diff --git a/apps/files_encryption/l10n/mk.php b/apps/files_encryption/l10n/mk.php index a355a8433a..a7216f205a 100644 --- a/apps/files_encryption/l10n/mk.php +++ b/apps/files_encryption/l10n/mk.php @@ -1,3 +1,4 @@ "Снимам...", "Encryption" => "Енкрипција" ); diff --git a/apps/files_encryption/l10n/ms_MY.php b/apps/files_encryption/l10n/ms_MY.php new file mode 100644 index 0000000000..bb963cb72d --- /dev/null +++ b/apps/files_encryption/l10n/ms_MY.php @@ -0,0 +1,3 @@ + "Simpan..." +); diff --git a/apps/files_encryption/l10n/nb_NO.php b/apps/files_encryption/l10n/nb_NO.php index b008f7884f..d4e2b1ffb5 100644 --- a/apps/files_encryption/l10n/nb_NO.php +++ b/apps/files_encryption/l10n/nb_NO.php @@ -1,3 +1,4 @@ "Lagrer...", "Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/nl.php b/apps/files_encryption/l10n/nl.php index 11cdc1e7a6..e2f22b4d92 100644 --- a/apps/files_encryption/l10n/nl.php +++ b/apps/files_encryption/l10n/nl.php @@ -1,3 +1,20 @@ "Versleuteling" +"Recovery key successfully " => "Sleutelherstel succesvol", +"Could not " => "Kon niet", +"Password successfully changed." => "Wachtwoord succesvol gewijzigd.", +"Could not change the password. Maybe the old password was not correct." => "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.", +"Saving..." => "Opslaan", +"Encryption" => "Versleuteling", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activeer versleuteling van wachtwoorden herstelsleutel (maak delen met herstel sleutel mogelijk):", +"Recovery account password" => "Herstel account wachtwoord", +"Enabled" => "Geactiveerd", +"Disabled" => "Gedeactiveerd", +"Change encryption passwords recovery key:" => "Wijzig versleuteling wachtwoord herstelsleutel", +"Old Recovery account password" => "Oude herstel account wachtwoord", +"New Recovery account password" => "Nieuwe herstel account wachtwoord", +"Change Password" => "Wijzigen wachtwoord", +"Enable password recovery by sharing all files with your administrator:" => "Activeer wachtwoordherstel door alle bestanden met uw beheerder te delen:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Door deze optie te activeren kunt u toegang tot uw versleutelde bestanden krijgen als u uw wachtwoord kwijt bent", +"File recovery settings updated" => "Bestandsherstel instellingen bijgewerkt", +"Could not update file recovery" => "Kon bestandsherstel niet bijwerken" ); diff --git a/apps/files_encryption/l10n/nn_NO.php b/apps/files_encryption/l10n/nn_NO.php new file mode 100644 index 0000000000..97b3a27a9d --- /dev/null +++ b/apps/files_encryption/l10n/nn_NO.php @@ -0,0 +1,3 @@ + "Lagrar …" +); diff --git a/apps/files_encryption/l10n/oc.php b/apps/files_encryption/l10n/oc.php new file mode 100644 index 0000000000..0a34c4cda1 --- /dev/null +++ b/apps/files_encryption/l10n/oc.php @@ -0,0 +1,3 @@ + "Enregistra..." +); diff --git a/apps/files_encryption/l10n/pl.php b/apps/files_encryption/l10n/pl.php index 02f827f8d5..313d27b70c 100644 --- a/apps/files_encryption/l10n/pl.php +++ b/apps/files_encryption/l10n/pl.php @@ -1,3 +1,20 @@ "Szyfrowanie" +"Recovery key successfully " => "Odzyskanie klucza udane", +"Could not " => "Nie można", +"Password successfully changed." => "Zmiana hasła udana.", +"Could not change the password. Maybe the old password was not correct." => "Nie można zmienić hasła. Może stare hasło nie było poprawne.", +"Saving..." => "Zapisywanie...", +"Encryption" => "Szyfrowanie", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Włącz szyfrowanie odzyskiwanych haseł klucza (zezwalaj na odzyskiwanie klucza):", +"Recovery account password" => "Odzyskiwanie hasła konta", +"Enabled" => "Włączone", +"Disabled" => "Wyłączone", +"Change encryption passwords recovery key:" => "Zmiana klucza szyfrowania haseł odzyskiwania:", +"Old Recovery account password" => "Stare hasło odzyskiwania", +"New Recovery account password" => "Nowe hasło odzyskiwania", +"Change Password" => "Zmień hasło", +"Enable password recovery by sharing all files with your administrator:" => "Włączyć hasło odzyskiwania przez udostępnianie wszystkich plików z administratorem:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła", +"File recovery settings updated" => "Ustawienia odzyskiwania plików zmienione", +"Could not update file recovery" => "Nie można zmienić pliku odzyskiwania" ); diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 4da459593a..73d7b57b87 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,3 +1,4 @@ "Salvando...", "Encryption" => "Criptografia" ); diff --git a/apps/files_encryption/l10n/pt_PT.php b/apps/files_encryption/l10n/pt_PT.php index eda3e275b2..be75c0b768 100644 --- a/apps/files_encryption/l10n/pt_PT.php +++ b/apps/files_encryption/l10n/pt_PT.php @@ -1,3 +1,4 @@ "A guardar...", "Encryption" => "Encriptação" ); diff --git a/apps/files_encryption/l10n/ro.php b/apps/files_encryption/l10n/ro.php index d24f3cf5dc..9e04b627c4 100644 --- a/apps/files_encryption/l10n/ro.php +++ b/apps/files_encryption/l10n/ro.php @@ -1,3 +1,4 @@ "Se salvează...", "Encryption" => "Încriptare" ); diff --git a/apps/files_encryption/l10n/ru.php b/apps/files_encryption/l10n/ru.php index 870557d835..fac785730a 100644 --- a/apps/files_encryption/l10n/ru.php +++ b/apps/files_encryption/l10n/ru.php @@ -1,3 +1,4 @@ "Сохранение...", "Encryption" => "Шифрование" ); diff --git a/apps/files_encryption/l10n/ru_RU.php b/apps/files_encryption/l10n/ru_RU.php index 7222235485..1351f63f89 100644 --- a/apps/files_encryption/l10n/ru_RU.php +++ b/apps/files_encryption/l10n/ru_RU.php @@ -1,4 +1,3 @@ "Шифрование", -"None" => "Ни один" +"Saving..." => "Сохранение" ); diff --git a/apps/files_encryption/l10n/si_LK.php b/apps/files_encryption/l10n/si_LK.php index c55d5609a8..6c678bb3a4 100644 --- a/apps/files_encryption/l10n/si_LK.php +++ b/apps/files_encryption/l10n/si_LK.php @@ -1,3 +1,4 @@ "සුරැකෙමින් පවතී...", "Encryption" => "ගුප්ත කේතනය" ); diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php index bf15777fc1..fd77bb7e91 100644 --- a/apps/files_encryption/l10n/sk_SK.php +++ b/apps/files_encryption/l10n/sk_SK.php @@ -1,3 +1,4 @@ "Ukladám...", "Encryption" => "Šifrovanie" ); diff --git a/apps/files_encryption/l10n/sl.php b/apps/files_encryption/l10n/sl.php index 272c6e1bb3..a420fe161d 100644 --- a/apps/files_encryption/l10n/sl.php +++ b/apps/files_encryption/l10n/sl.php @@ -1,3 +1,4 @@ "Poteka shranjevanje ...", "Encryption" => "Šifriranje" ); diff --git a/apps/files_encryption/l10n/sr.php b/apps/files_encryption/l10n/sr.php index 2e3698918f..a36e37c179 100644 --- a/apps/files_encryption/l10n/sr.php +++ b/apps/files_encryption/l10n/sr.php @@ -1,3 +1,4 @@ "Чување у току...", "Encryption" => "Шифровање" ); diff --git a/apps/files_encryption/l10n/sv.php b/apps/files_encryption/l10n/sv.php index b008f7884f..966963b554 100644 --- a/apps/files_encryption/l10n/sv.php +++ b/apps/files_encryption/l10n/sv.php @@ -1,3 +1,4 @@ "Sparar...", "Encryption" => "Kryptering" ); diff --git a/apps/files_encryption/l10n/ta_LK.php b/apps/files_encryption/l10n/ta_LK.php index adc5a69a1b..63fe9ecde8 100644 --- a/apps/files_encryption/l10n/ta_LK.php +++ b/apps/files_encryption/l10n/ta_LK.php @@ -1,3 +1,4 @@ "சேமிக்கப்படுகிறது...", "Encryption" => "மறைக்குறியீடு" ); diff --git a/apps/files_encryption/l10n/th_TH.php b/apps/files_encryption/l10n/th_TH.php index 881e1d834b..6cab4370cc 100644 --- a/apps/files_encryption/l10n/th_TH.php +++ b/apps/files_encryption/l10n/th_TH.php @@ -1,3 +1,4 @@ "กำลังบันทึกข้อมูล...", "Encryption" => "การเข้ารหัส" ); diff --git a/apps/files_encryption/l10n/tr.php b/apps/files_encryption/l10n/tr.php index e7481153b1..917ff0a0ea 100644 --- a/apps/files_encryption/l10n/tr.php +++ b/apps/files_encryption/l10n/tr.php @@ -1,3 +1,4 @@ "Kaydediliyor...", "Encryption" => "Şifreleme" ); diff --git a/apps/files_encryption/l10n/ug.php b/apps/files_encryption/l10n/ug.php index 278fdc2ce8..954d95b413 100644 --- a/apps/files_encryption/l10n/ug.php +++ b/apps/files_encryption/l10n/ug.php @@ -1,3 +1,4 @@ "ساقلاۋاتىدۇ…", "Encryption" => "شىفىرلاش" ); diff --git a/apps/files_encryption/l10n/uk.php b/apps/files_encryption/l10n/uk.php index cdbbd8801a..1c176a3914 100644 --- a/apps/files_encryption/l10n/uk.php +++ b/apps/files_encryption/l10n/uk.php @@ -1,3 +1,4 @@ "Зберігаю...", "Encryption" => "Шифрування" ); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index 34ab60796d..0af5bdc9a6 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,3 +1,4 @@ "Đang lưu...", "Encryption" => "Mã hóa" ); diff --git a/apps/files_encryption/l10n/zh_CN.GB2312.php b/apps/files_encryption/l10n/zh_CN.GB2312.php index 0a38a2ddf8..3c405a81ac 100644 --- a/apps/files_encryption/l10n/zh_CN.GB2312.php +++ b/apps/files_encryption/l10n/zh_CN.GB2312.php @@ -1,3 +1,4 @@ "保存中...", "Encryption" => "加密" ); diff --git a/apps/files_encryption/l10n/zh_CN.php b/apps/files_encryption/l10n/zh_CN.php index 0a38a2ddf8..e565fce801 100644 --- a/apps/files_encryption/l10n/zh_CN.php +++ b/apps/files_encryption/l10n/zh_CN.php @@ -1,3 +1,4 @@ "保存中", "Encryption" => "加密" ); diff --git a/apps/files_encryption/l10n/zh_TW.php b/apps/files_encryption/l10n/zh_TW.php index 0a38a2ddf8..2bfadce855 100644 --- a/apps/files_encryption/l10n/zh_TW.php +++ b/apps/files_encryption/l10n/zh_TW.php @@ -1,3 +1,4 @@ "儲存中...", "Encryption" => "加密" ); diff --git a/apps/user_ldap/l10n/hu_HU.php b/apps/user_ldap/l10n/hu_HU.php index cbbcc69ede..a06d0bd535 100644 --- a/apps/user_ldap/l10n/hu_HU.php +++ b/apps/user_ldap/l10n/hu_HU.php @@ -1,4 +1,5 @@ "Nem sikerült törölni a hozzárendeléseket.", "Failed to delete the server configuration" => "Nem sikerült törölni a kiszolgáló konfigurációját", "The configuration is valid and the connection could be established!" => "A konfiguráció érvényes, és a kapcsolat létrehozható!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "A konfiguráció érvényes, de a kapcsolat nem hozható létre. Kérem ellenőrizze a kiszolgáló beállításait, és az elérési adatokat.", @@ -7,6 +8,8 @@ "Take over settings from recent server configuration?" => "Vegyük át a beállításokat az előző konfigurációból?", "Keep settings?" => "Tartsuk meg a beállításokat?", "Cannot add server configuration" => "Az új kiszolgáló konfigurációja nem hozható létre", +"mappings cleared" => "Töröltük a hozzárendeléseket", +"Success" => "Sikeres végrehajtás", "Error" => "Hiba", "Connection test succeeded" => "A kapcsolatellenőrzés eredménye: sikerült", "Connection test failed" => "A kapcsolatellenőrzés eredménye: nem sikerült", @@ -71,6 +74,7 @@ "Email Field" => "Email mező", "User Home Folder Naming Rule" => "A home könyvtár elérési útvonala", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Hagyja üresen, ha a felhasználónevet kívánja használni. Ellenkező esetben adjon meg egy LDAP/AD attribútumot!", +"Internal Username" => "Belső felhasználónév", "Test Configuration" => "A beállítások tesztelése", "Help" => "Súgó" ); diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index f395c192bd..ea8a4e5adc 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -46,6 +46,7 @@ "years ago" => "Vor Jahren", "Choose" => "Auswählen", "Cancel" => "Abbrechen", +"Error loading file picker template" => "Es ist ein Fehler in der Vorlage des Datei-Auswählers aufgetreten.", "Yes" => "Ja", "No" => "Nein", "Ok" => "OK", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 6b477746f2..766e1bfc7e 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -46,6 +46,7 @@ "years ago" => "több éve", "Choose" => "Válasszon", "Cancel" => "Mégsem", +"Error loading file picker template" => "Nem sikerült betölteni a fájlkiválasztó sablont", "Yes" => "Igen", "No" => "Nem", "Ok" => "Ok", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index a39f34fb90..0f30a2f49a 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -46,6 +46,7 @@ "years ago" => "jaar geleden", "Choose" => "Kies", "Cancel" => "Annuleer", +"Error loading file picker template" => "Fout bij laden van bestandsselectie sjabloon", "Yes" => "Ja", "No" => "Nee", "Ok" => "Ok", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 59dd4d2b86..016a136256 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -46,6 +46,7 @@ "years ago" => "年前", "Choose" => "选择(&C)...", "Cancel" => "取消", +"Error loading file picker template" => "加载文件选择器模板出错", "Yes" => "是", "No" => "否", "Ok" => "好", diff --git a/l10n/ar/core.po b/l10n/ar/core.po index d06b5bff99..c4823768ae 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index d45bfe2245..1dfdf7ab31 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_encryption.po b/l10n/ar/files_encryption.po index 7c86c6d247..d4a70adcbb 100644 --- a/l10n/ar/files_encryption.po +++ b/l10n/ar/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "جاري الحفظ..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ar/files_external.po b/l10n/ar/files_external.po index 73ac33ef6f..0d71b2a032 100644 --- a/l10n/ar/files_external.po +++ b/l10n/ar/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 8b8c2471a5..046ef73941 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index 70e2c9c9ff..b429c2998c 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index cdd85e6e09..9cf50deda4 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index a415162350..a8f9277cda 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/user_ldap.po b/l10n/ar/user_ldap.po index 2e595ac641..f0f0c087c1 100644 --- a/l10n/ar/user_ldap.po +++ b/l10n/ar/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index 21545c799d..ce6aead990 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index cc86637f91..4849873751 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_encryption.po b/l10n/bg_BG/files_encryption.po index fe26f583d1..f7c82228bc 100644 --- a/l10n/bg_BG/files_encryption.po +++ b/l10n/bg_BG/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Записване..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index 68c2ba58ed..b0378410bf 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index 28d6ed9c19..94f67e35c1 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index 95abefdf71..8cd444f0a9 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index b59ef966a8..b7287ca9f6 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index bec96510ec..3a7b4588fb 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/user_ldap.po b/l10n/bg_BG/user_ldap.po index 38caf68df4..7a34aa28cb 100644 --- a/l10n/bg_BG/user_ldap.po +++ b/l10n/bg_BG/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index 31b5995fa8..c6b1fb4942 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index 53e2fd039b..feef935788 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_encryption.po b/l10n/bn_BD/files_encryption.po index 08c97a096b..81b4baa4d6 100644 --- a/l10n/bn_BD/files_encryption.po +++ b/l10n/bn_BD/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "সংরক্ষণ করা হচ্ছে.." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/bn_BD/files_external.po b/l10n/bn_BD/files_external.po index ac48988b3d..cccfbf9cbe 100644 --- a/l10n/bn_BD/files_external.po +++ b/l10n/bn_BD/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index b934234300..4abb4f55e5 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index 2e9364c8c3..b28d89542a 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index 6977a5cd3f..26ceefa744 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index a2167f9e17..83c2fdef23 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/user_ldap.po b/l10n/bn_BD/user_ldap.po index 06e69066c0..9d4ae2b9fb 100644 --- a/l10n/bn_BD/user_ldap.po +++ b/l10n/bn_BD/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index cc8ad021d0..dbc11dea11 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 7335f12d18..f362b228ba 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_encryption.po b/l10n/ca/files_encryption.po index b2b602fcda..724196b295 100644 --- a/l10n/ca/files_encryption.po +++ b/l10n/ca/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -36,7 +36,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Desant..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ca/files_external.po b/l10n/ca/files_external.po index 57707cb496..4206b79a48 100644 --- a/l10n/ca/files_external.po +++ b/l10n/ca/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index dbae0e9248..5cbb2f22fc 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index 36d1753b85..e5533dd580 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 74675cf556..4d784df7f1 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# rogerc, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +124,7 @@ msgstr "Heu d'escriure un compte existent o el d'administrador." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "No s'ha pogut establir la connexió Oracle" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 64eb8eea68..ba7e888754 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -4,13 +4,14 @@ # # Translators: # rogerc, 2013 +# rogerc, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +467,7 @@ msgstr "Crea" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Recuperació de contrasenya d'administrador" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/ca/user_ldap.po b/l10n/ca/user_ldap.po index 8acfede6fd..3d43f0d600 100644 --- a/l10n/ca/user_ldap.po +++ b/l10n/ca/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index ab49706a17..b780396b8e 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 757ea02759..a8e9fd4366 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_encryption.po b/l10n/cs_CZ/files_encryption.po index ab7ce4acce..de78ff90aa 100644 --- a/l10n/cs_CZ/files_encryption.po +++ b/l10n/cs_CZ/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Ukládám..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index acc653dc36..7bb1729e6b 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index 3e13acd54c..298ae8e165 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index 29df8f8843..9d0e9ed97d 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index 89c5471f48..d59cb5367f 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index 83ef8d81f5..ee6633ad0b 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/user_ldap.po b/l10n/cs_CZ/user_ldap.po index 165b5faf3e..0a23be1493 100644 --- a/l10n/cs_CZ/user_ldap.po +++ b/l10n/cs_CZ/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/core.po b/l10n/cy_GB/core.po index d179fe43c4..cef633c7e8 100644 --- a/l10n/cy_GB/core.po +++ b/l10n/cy_GB/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index 5c57b58b14..b45b7c7bec 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_encryption.po b/l10n/cy_GB/files_encryption.po index abca22ad96..2c719f8fe8 100644 --- a/l10n/cy_GB/files_encryption.po +++ b/l10n/cy_GB/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" @@ -36,7 +36,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Yn cadw..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/cy_GB/files_external.po b/l10n/cy_GB/files_external.po index c948d12813..d3e3ec1870 100644 --- a/l10n/cy_GB/files_external.po +++ b/l10n/cy_GB/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index 2072c20c29..546afb5e9c 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_trashbin.po b/l10n/cy_GB/files_trashbin.po index 79ae4020be..55222d01b2 100644 --- a/l10n/cy_GB/files_trashbin.po +++ b/l10n/cy_GB/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/lib.po b/l10n/cy_GB/lib.po index b79791a04f..47522b763f 100644 --- a/l10n/cy_GB/lib.po +++ b/l10n/cy_GB/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/settings.po b/l10n/cy_GB/settings.po index 77867e9ddb..95d7f45b3c 100644 --- a/l10n/cy_GB/settings.po +++ b/l10n/cy_GB/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/user_ldap.po b/l10n/cy_GB/user_ldap.po index 540e4a8bda..b7897fd6bd 100644 --- a/l10n/cy_GB/user_ldap.po +++ b/l10n/cy_GB/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/core.po b/l10n/da/core.po index 783b792b27..ab48232ecd 100644 --- a/l10n/da/core.po +++ b/l10n/da/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files.po b/l10n/da/files.po index 3c842f56da..e32f965a33 100644 --- a/l10n/da/files.po +++ b/l10n/da/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_encryption.po b/l10n/da/files_encryption.po index 8f86ac81bf..1ff6f7dcd0 100644 --- a/l10n/da/files_encryption.po +++ b/l10n/da/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Gemmer..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/da/files_external.po b/l10n/da/files_external.po index ae8fd2d4df..c28602cc34 100644 --- a/l10n/da/files_external.po +++ b/l10n/da/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index 0c457353d8..34ee9db15f 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index d288474c11..d32638a904 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index 420454de10..b935e3c21c 100644 --- a/l10n/da/lib.po +++ b/l10n/da/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index c9d5248fae..7b15721791 100644 --- a/l10n/da/settings.po +++ b/l10n/da/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 542012b668..03de07a6d2 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/core.po b/l10n/de/core.po index 247b8373db..538d60348f 100644 --- a/l10n/de/core.po +++ b/l10n/de/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Marcel Kühlhorn \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files.po b/l10n/de/files.po index 4765111c00..260f0526eb 100644 --- a/l10n/de/files.po +++ b/l10n/de/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_encryption.po b/l10n/de/files_encryption.po index 6fed59d267..02688dad03 100644 --- a/l10n/de/files_encryption.po +++ b/l10n/de/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Speichern..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/de/files_external.po b/l10n/de/files_external.po index 6476179fc2..425c30c571 100644 --- a/l10n/de/files_external.po +++ b/l10n/de/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 134980ed79..90fee14e48 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index a620790ecd..5b82513634 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index deb1107b94..53d4a2a49f 100644 --- a/l10n/de/lib.po +++ b/l10n/de/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index 1cad13645b..087555bbc6 100644 --- a/l10n/de/settings.po +++ b/l10n/de/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index cd224bb20e..58b7568345 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index 38b4ca3853..baec6c4b99 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: a.tangemann \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -226,7 +226,7 @@ msgstr "Abbrechen" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Es ist ein Fehler in der Vorlage des Datei-Auswählers aufgetreten." #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index ad5b6855bc..b551450b82 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_encryption.po b/l10n/de_DE/files_encryption.po index 0073db8696..5e078c6abf 100644 --- a/l10n/de_DE/files_encryption.po +++ b/l10n/de_DE/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# traductor , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 17:40+0000\n" +"Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,15 +28,15 @@ msgstr "" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Das Passwort wurde erfolgreich geändert." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Speichern..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -52,11 +53,11 @@ msgstr "" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Aktiviert" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Deaktiviert" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" @@ -72,7 +73,7 @@ msgstr "" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Passwort ändern" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po index aec6594f2e..c0c3205e8a 100644 --- a/l10n/de_DE/files_external.po +++ b/l10n/de_DE/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index 157ccf0de9..d4da6a4830 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index b9a9e24c81..71c5b7e976 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index badd06466f..2e83590524 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# traductor , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: Mirodin \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +124,7 @@ msgstr "Sie müssen entweder ein existierendes Benutzerkonto oder das Administra #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Die Oracle-Verbindung konnte nicht aufgebaut werden." #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index a7b92f7eeb..c162ae7d78 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/settings.po @@ -5,14 +5,15 @@ # Translators: # a.tangemann , 2013 # arkascha , 2013 +# traductor , 2013 # Mirodin , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -468,7 +469,7 @@ msgstr "Erstellen" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Admin-Paswort-Wiederherstellung" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index 263a36393e..9c307e3c5b 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/el/core.po b/l10n/el/core.po index 6f93f9fc42..caf5c8c21f 100644 --- a/l10n/el/core.po +++ b/l10n/el/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files.po b/l10n/el/files.po index cb98be6195..8abc9aea99 100644 --- a/l10n/el/files.po +++ b/l10n/el/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_encryption.po b/l10n/el/files_encryption.po index e0ad9229a4..c870e7df4a 100644 --- a/l10n/el/files_encryption.po +++ b/l10n/el/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Γίνεται αποθήκευση..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index 6d82b8d167..a153fc4a2c 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index 009eb5a811..dd823d3199 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index 658ee7bd3c..f86b45deea 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 329bed83b0..0b177a298b 100644 --- a/l10n/el/lib.po +++ b/l10n/el/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index f073289261..64281b740a 100644 --- a/l10n/el/settings.po +++ b/l10n/el/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/user_ldap.po b/l10n/el/user_ldap.po index 50a8f739da..7113f5e51e 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files.po b/l10n/en@pirate/files.po index b4d090e23a..a743fe7eab 100644 --- a/l10n/en@pirate/files.po +++ b/l10n/en@pirate/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_sharing.po b/l10n/en@pirate/files_sharing.po index 524b1b909a..3b3b50c416 100644 --- a/l10n/en@pirate/files_sharing.po +++ b/l10n/en@pirate/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 7e9696f698..87d72403e4 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index 27aa6ec0b5..f29626fba6 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_encryption.po b/l10n/eo/files_encryption.po index 244d63f3b0..5cbb16e526 100644 --- a/l10n/eo/files_encryption.po +++ b/l10n/eo/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Konservante..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index bc3498cba6..a765664a0e 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index b42b5a067f..ab53d42da6 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index 1c6009954f..d989ae73f4 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index 6c9aa9d71e..ee7d551922 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index 8d4c3eddd7..f13af8d5ee 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index 7c9235b4e1..41ea1fc284 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/core.po b/l10n/es/core.po index 61828126fd..55dc7cf895 100644 --- a/l10n/es/core.po +++ b/l10n/es/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files.po b/l10n/es/files.po index b959c11dfa..070b1bc725 100644 --- a/l10n/es/files.po +++ b/l10n/es/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_encryption.po b/l10n/es/files_encryption.po index d6c76e9dba..dbacc267fa 100644 --- a/l10n/es/files_encryption.po +++ b/l10n/es/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Guardando..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/es/files_external.po b/l10n/es/files_external.po index 61bc450c87..ecb13e5f06 100644 --- a/l10n/es/files_external.po +++ b/l10n/es/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index a371882b62..399b2c6ba4 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index 6d0aaf7696..8fc536faef 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index 3dcdad6129..e04ac472f2 100644 --- a/l10n/es/lib.po +++ b/l10n/es/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index 34b0d4d380..faae86fdbb 100644 --- a/l10n/es/settings.po +++ b/l10n/es/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/user_ldap.po b/l10n/es/user_ldap.po index 9f85de4c0d..de3b653886 100644 --- a/l10n/es/user_ldap.po +++ b/l10n/es/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index 11a4e5dcb9..bde15389c6 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 9ac2ead527..486139ce9f 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_encryption.po b/l10n/es_AR/files_encryption.po index 8dccd67247..bb14738da2 100644 --- a/l10n/es_AR/files_encryption.po +++ b/l10n/es_AR/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Guardando..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/es_AR/files_external.po b/l10n/es_AR/files_external.po index 922592fcfd..10c0aa85fb 100644 --- a/l10n/es_AR/files_external.po +++ b/l10n/es_AR/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index 09cbf34968..b693e9b643 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 0090b05bfd..0970ef5ce0 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 6607a5c37b..8ff8e3fc8b 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index e5949fdc99..0aaaf8bcd8 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 3e7f15f0e2..85fa9ab4bc 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index c2fc834e59..ea4c90ad7b 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 832fe2132e..5251a5bda4 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_encryption.po b/l10n/et_EE/files_encryption.po index f6d7f0ebaa..f919e81d13 100644 --- a/l10n/et_EE/files_encryption.po +++ b/l10n/et_EE/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Salvestamine..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index ccc0445389..d9dc6d3b79 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index e78843e5d9..22b9d80a68 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 3cfda325dd..0bae4217d9 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index 752eb631e1..4840f78986 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index ad01c7a3f1..7f4fcfd489 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index 194455c637..05d708d5c1 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 918df02676..ab599b7a67 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index edbc4c3d35..12b26307da 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_encryption.po b/l10n/eu/files_encryption.po index d329a7d7a2..5fa61f344b 100644 --- a/l10n/eu/files_encryption.po +++ b/l10n/eu/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Gordetzen..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/eu/files_external.po b/l10n/eu/files_external.po index 6b33e53c9f..478b2bf21f 100644 --- a/l10n/eu/files_external.po +++ b/l10n/eu/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index d060b0a940..5f01d70e31 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index 56efcb5590..35a8f305f3 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 3e161e5af7..70dad3fb6f 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index de7d09fb66..ae2f893589 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/user_ldap.po b/l10n/eu/user_ldap.po index 63d357b112..946f19ac12 100644 --- a/l10n/eu/user_ldap.po +++ b/l10n/eu/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index b65d129533..07fc7d608b 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index 10a3bb10e4..f1b20c2dd4 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_encryption.po b/l10n/fa/files_encryption.po index bd0e9ee416..b1c8cd05af 100644 --- a/l10n/fa/files_encryption.po +++ b/l10n/fa/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "در حال ذخیره سازی..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/fa/files_external.po b/l10n/fa/files_external.po index 2e5205fde2..33d459e808 100644 --- a/l10n/fa/files_external.po +++ b/l10n/fa/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index 6921b1cfc3..6f4123f694 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index 64e654b7e8..fc22ab8d6f 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 4d1be2c3f6..28b4c3e883 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 9f85ece592..4349f0aae2 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/user_ldap.po b/l10n/fa/user_ldap.po index 291214be8b..ad3d9d441b 100644 --- a/l10n/fa/user_ldap.po +++ b/l10n/fa/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/files.po b/l10n/fi/files.po index 67ef673fa9..890d4d3463 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 8e75917810..0ca2b1aa75 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index b203078f77..4cf1e87210 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_encryption.po b/l10n/fi_FI/files_encryption.po index 2895592bdc..033ce76b54 100644 --- a/l10n/fi_FI/files_encryption.po +++ b/l10n/fi_FI/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Jiri Grönroos , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 09:10+0000\n" +"Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,15 +28,15 @@ msgstr "" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Salasana vaihdettiin onnistuneesti." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Tallennetaan..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -52,11 +53,11 @@ msgstr "" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Käytössä" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Ei käytössä" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" @@ -72,7 +73,7 @@ msgstr "" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Vaihda salasana" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" diff --git a/l10n/fi_FI/files_external.po b/l10n/fi_FI/files_external.po index 03be39502c..2f400bf940 100644 --- a/l10n/fi_FI/files_external.po +++ b/l10n/fi_FI/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 1e669de89d..0509701f95 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index 3b9804b01c..a055b21c70 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 8a83621a29..3885df649a 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index 283aa23af9..f1f210e8ae 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/user_ldap.po b/l10n/fi_FI/user_ldap.po index 546ad400ad..fc2c9b922f 100644 --- a/l10n/fi_FI/user_ldap.po +++ b/l10n/fi_FI/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index f33e69d38f..e2807a4e27 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: msoko \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 043584249e..5a210b069f 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_encryption.po b/l10n/fr/files_encryption.po index ca51aab0f6..a9f000c4fa 100644 --- a/l10n/fr/files_encryption.po +++ b/l10n/fr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Enregistrement..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/fr/files_external.po b/l10n/fr/files_external.po index a014ba452c..4de73cb7b3 100644 --- a/l10n/fr/files_external.po +++ b/l10n/fr/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index 8b1f088ee7..4b9be75902 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index 5f9fde21ee..f0c54cf1da 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index 912f2f2869..aaf4929bd2 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index 47d36ce754..a1a52f52f6 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index 842ea4ffd9..38f0b27ee0 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: plachance \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index 50c6e6c5f6..c82e920afc 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index 32363f8b96..f0ff411edf 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index 53d8a1f9b1..98d1d55438 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# mbouzada , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 07:00+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,23 +20,23 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "O contrasinal foi recuperado satisfactoriamente" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Non foi posíbel" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "O contrasinal foi cambiado satisfactoriamente" #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Gardando..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -44,23 +45,23 @@ msgstr "Cifrado" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Activar a chave de recuperación do cifrado de contrasinais (permite compartir a chave de recuperación):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Recuperación do contrasinal da conta" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Activado" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Desactivado" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Cambiar a chave de la recuperación do cifrado de contrasinais:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" @@ -72,7 +73,7 @@ msgstr "" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Cambiar o contrasinal" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index 38f4ed5da9..d0b3351437 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index dd3de23a2e..93f5c8287d 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index dd65678ec6..e90c277743 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index 50078ca2db..ab04cf10a2 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 97102e6ae9..3e30c88b54 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +466,7 @@ msgstr "Crear" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Recuperación do contrasinal do administrador" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index ff7219da90..5162e7bc58 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/core.po b/l10n/he/core.po index ccc4290d4e..572e2fc69b 100644 --- a/l10n/he/core.po +++ b/l10n/he/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files.po b/l10n/he/files.po index 79e992c88f..87ab55469c 100644 --- a/l10n/he/files.po +++ b/l10n/he/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_encryption.po b/l10n/he/files_encryption.po index 23f92e54c1..e69fc167c9 100644 --- a/l10n/he/files_encryption.po +++ b/l10n/he/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "שמירה…" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index ac4482459c..aa8693d741 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index 265ce1360e..39f0aac065 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index 31008260ab..8c49c90ba1 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index 090576d578..b6a84a1275 100644 --- a/l10n/he/lib.po +++ b/l10n/he/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index 94c0c927b0..9a99b8d7ce 100644 --- a/l10n/he/settings.po +++ b/l10n/he/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po index ceab275c3f..2e8cf82019 100644 --- a/l10n/he/user_ldap.po +++ b/l10n/he/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index 7a6dae0c2d..f3ebca8398 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 5170e22c07..132d497bcf 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_encryption.po b/l10n/hr/files_encryption.po index bb0d55ddf2..bdc3053e56 100644 --- a/l10n/hr/files_encryption.po +++ b/l10n/hr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Spremanje..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/hr/files_external.po b/l10n/hr/files_external.po index b4d561b5be..fad820592e 100644 --- a/l10n/hr/files_external.po +++ b/l10n/hr/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index 7f50527558..c886967f9f 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index e0317ae8d3..5c18e6ec0e 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index e64e4a8d3d..0ba2f5836b 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index dbbaaba717..30272b5bd5 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/user_ldap.po b/l10n/hr/user_ldap.po index b6b20e974e..ecd821ed0a 100644 --- a/l10n/hr/user_ldap.po +++ b/l10n/hr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index ee92d52364..6d69d246da 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "Mégsem" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Nem sikerült betölteni a fájlkiválasztó sablont" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 79cb7eabaa..1db9617549 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Laszlo Tornoci , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: Laszlo Tornoci \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" @@ -217,7 +218,7 @@ msgstr "{count} fájl" #: lib/app.php:53 msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" -msgstr "" +msgstr "Érvénytelen mappanév. A 'Shared' az ownCloud számára fenntartott elnevezés" #: lib/app.php:73 msgid "Unable to rename file" diff --git a/l10n/hu_HU/files_encryption.po b/l10n/hu_HU/files_encryption.po index 5df77c3458..a7f597ae66 100644 --- a/l10n/hu_HU/files_encryption.po +++ b/l10n/hu_HU/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Mentés..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/hu_HU/files_external.po b/l10n/hu_HU/files_external.po index 91d88fed96..ffff744008 100644 --- a/l10n/hu_HU/files_external.po +++ b/l10n/hu_HU/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index 411f8ee770..2d692f6a00 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index 4975db5ce2..99b725c3ac 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index bd672de992..9d65a5f032 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Laszlo Tornoci , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: Laszlo Tornoci \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" @@ -123,7 +124,7 @@ msgstr "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Az Oracle kapcsolat nem hozható létre" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 608dcabc06..5c0e3e282f 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: Laszlo Tornoci \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" @@ -466,7 +466,7 @@ msgstr "Létrehozás" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "A jelszóvisszaállítás adminisztrációja" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/hu_HU/user_ldap.po b/l10n/hu_HU/user_ldap.po index eaa8597a0d..fc4df4b045 100644 --- a/l10n/hu_HU/user_ldap.po +++ b/l10n/hu_HU/user_ldap.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Laszlo Tornoci , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"Last-Translator: Laszlo Tornoci \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 "" #: ajax/clearMappings.php:34 msgid "Failed to clear the mappings." -msgstr "" +msgstr "Nem sikerült törölni a hozzárendeléseket." #: ajax/deleteConfiguration.php:34 msgid "Failed to delete the server configuration" @@ -59,11 +60,11 @@ msgstr "Az új kiszolgáló konfigurációja nem hozható létre" #: js/settings.js:111 msgid "mappings cleared" -msgstr "" +msgstr "Töröltük a hozzárendeléseket" #: js/settings.js:112 msgid "Success" -msgstr "" +msgstr "Sikeres végrehajtás" #: js/settings.js:117 msgid "Error" @@ -342,7 +343,7 @@ msgstr "Hagyja üresen, ha a felhasználónevet kívánja használni. Ellenkező #: templates/settings.php:101 msgid "Internal Username" -msgstr "" +msgstr "Belső felhasználónév" #: templates/settings.php:102 msgid "" diff --git a/l10n/hy/files.po b/l10n/hy/files.po index ba7c214a9c..3019b47b5f 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files_external.po b/l10n/hy/files_external.po index aed614ea01..8902a6865f 100644 --- a/l10n/hy/files_external.po +++ b/l10n/hy/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_sharing.po b/l10n/hy/files_sharing.po index a581a2284b..036350e901 100644 --- a/l10n/hy/files_sharing.po +++ b/l10n/hy/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_trashbin.po b/l10n/hy/files_trashbin.po index 6b027b829f..8468b1f82d 100644 --- a/l10n/hy/files_trashbin.po +++ b/l10n/hy/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/settings.po b/l10n/hy/settings.po index aa40a478e9..76043b4ca0 100644 --- a/l10n/hy/settings.po +++ b/l10n/hy/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index 42e7435110..ee678a38a6 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 8fc773b81b..0c974b4dab 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_external.po b/l10n/ia/files_external.po index c5f0d75a41..9fc7ed8896 100644 --- a/l10n/ia/files_external.po +++ b/l10n/ia/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index 42d31cb4af..ba39382665 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index 100d1a507a..d4b53ae1e1 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index 414afc80d5..a1edc04173 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 1ff9a6a4ac..1b7a939d26 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/user_ldap.po b/l10n/ia/user_ldap.po index f9c33cc351..4cf6d5c9bb 100644 --- a/l10n/ia/user_ldap.po +++ b/l10n/ia/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index f2de19bb1f..9c6b02757a 100644 --- a/l10n/id/core.po +++ b/l10n/id/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files.po b/l10n/id/files.po index 1c40126513..a13cde2247 100644 --- a/l10n/id/files.po +++ b/l10n/id/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_encryption.po b/l10n/id/files_encryption.po index 0266196aaf..6edf937a6d 100644 --- a/l10n/id/files_encryption.po +++ b/l10n/id/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Menyimpan..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index e8f9d9991e..757b8074c4 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index b6afa49959..507030fcea 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index 2d6c5c1bc6..1e2dfe0d86 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index ba9d5f8ab3..7e9d04c749 100644 --- a/l10n/id/lib.po +++ b/l10n/id/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index a59e270c34..db81cfc465 100644 --- a/l10n/id/settings.po +++ b/l10n/id/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 6cc8ef52c7..3e0c3227ce 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/core.po b/l10n/is/core.po index 40621a8f14..a6c989cd88 100644 --- a/l10n/is/core.po +++ b/l10n/is/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files.po b/l10n/is/files.po index d74a3b4bd4..ab228c23c7 100644 --- a/l10n/is/files.po +++ b/l10n/is/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_encryption.po b/l10n/is/files_encryption.po index db1c0d6ba6..67dd11fafd 100644 --- a/l10n/is/files_encryption.po +++ b/l10n/is/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Er að vista ..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/is/files_external.po b/l10n/is/files_external.po index 52a88992db..ab58d02421 100644 --- a/l10n/is/files_external.po +++ b/l10n/is/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index 352d5e80ee..a6ed046dad 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index 5392fa777b..bf84b0232b 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index 38d90ff0c9..86ac4aef5a 100644 --- a/l10n/is/lib.po +++ b/l10n/is/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/settings.po b/l10n/is/settings.po index fb877debb8..bed94e21b7 100644 --- a/l10n/is/settings.po +++ b/l10n/is/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/user_ldap.po b/l10n/is/user_ldap.po index a0b043fa98..fb63014028 100644 --- a/l10n/is/user_ldap.po +++ b/l10n/is/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/core.po b/l10n/it/core.po index afb024ad7f..7421775949 100644 --- a/l10n/it/core.po +++ b/l10n/it/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:50+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files.po b/l10n/it/files.po index 33bc6bca21..98eacd6d3e 100644 --- a/l10n/it/files.po +++ b/l10n/it/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_encryption.po b/l10n/it/files_encryption.po index 89b718b4e7..9cac47a2be 100644 --- a/l10n/it/files_encryption.po +++ b/l10n/it/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Vincenzo Reale , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 08:00+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,23 +20,23 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "Chiave ripristinata correttamente" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Impossibile" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Password modificata correttamente." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Impossibile cambiare la password. Forse la vecchia password non era corretta." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Salvataggio in corso..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -44,50 +45,50 @@ msgstr "Cifratura" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Abilita la chiave di ripristino delle password di cifratura (consente di condividere la chiave di ripristino):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Password di ripristino dell'account" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Abilitata" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Disabilitata" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Cambia la chiave di ripristino delle password di cifratura:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Vecchia password di ripristino dell'account" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Nuova password di ripristino dell'account" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Modifica password" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Abilita il ripristino della password condividendo tutti i file con l'amministratore:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "L'abilitazione di questa opzione ti consentirà di ottenere nuovamente accesso ai tuoi file cifrati in caso di smarrimento della password" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Impostazioni di ripristino dei file aggiornate" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Impossibile aggiornare il ripristino dei file" diff --git a/l10n/it/files_external.po b/l10n/it/files_external.po index 8421dcb6da..ee87d670f4 100644 --- a/l10n/it/files_external.po +++ b/l10n/it/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 7ffbbe6cbc..38cbaf14ef 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 5122590d44..81742e492a 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index 960c17220c..312194b5a5 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-24 23:50+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index 160cf8e116..f47b825a75 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +466,7 @@ msgstr "Crea" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Password di ripristino amministrativa" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/it/user_ldap.po b/l10n/it/user_ldap.po index 93a262334a..ea82f8b570 100644 --- a/l10n/it/user_ldap.po +++ b/l10n/it/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index 3a48be5f08..d0351725ff 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 14404a2b63..3c7dedab0b 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 9f859bdcdc..7f1370c710 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# tt yn , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:58+0000\n" +"Last-Translator: tt yn \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,23 +20,23 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "鍵を復旧することができました。" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "できませんでした。" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "パスワードを変更できました。" #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "保存中..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -48,46 +49,46 @@ msgstr "" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "復旧アカウントのパスワード" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "有効" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "無効" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "復旧キーの暗号化パスワードを変更:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "古い復旧アカウントのパスワード" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "新しい復旧アカウントのパスワード" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "パスワードを変更" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "管理者が全ての共有ファイルに対してパスワードによる復旧を有効にする:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "このオプションを有効にすると、もしパスワードが分からなくなったとしても、暗号化されたファイルに再度アクセスすることが出来るようになります。" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "ファイル復旧設定が更新されました" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "ファイル復旧を更新できませんでした" diff --git a/l10n/ja_JP/files_external.po b/l10n/ja_JP/files_external.po index b356a404ef..d1ae250d75 100644 --- a/l10n/ja_JP/files_external.po +++ b/l10n/ja_JP/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index b8185a8c78..d175faddb1 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index 5275c832c9..7ef98025d9 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index f9f380b0fd..c60b0e169c 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 84ce823a72..17ee8d489b 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/user_ldap.po b/l10n/ja_JP/user_ldap.po index dab3083511..f09879f137 100644 --- a/l10n/ja_JP/user_ldap.po +++ b/l10n/ja_JP/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files.po b/l10n/ka/files.po index d7db600b41..5352751513 100644 --- a/l10n/ka/files.po +++ b/l10n/ka/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_sharing.po b/l10n/ka/files_sharing.po index 6cc4821858..bdb2af3e9a 100644 --- a/l10n/ka/files_sharing.po +++ b/l10n/ka/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index 64fc196b18..45a9dff0ee 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index c9057aaded..5296144c27 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_encryption.po b/l10n/ka_GE/files_encryption.po index 291706c0f4..5e0787826d 100644 --- a/l10n/ka_GE/files_encryption.po +++ b/l10n/ka_GE/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "შენახვა..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po index 8322a11954..c620c0c44c 100644 --- a/l10n/ka_GE/files_external.po +++ b/l10n/ka_GE/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index 09f606f010..083b22241b 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index 4bcb5f61e3..b534413a34 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index 86e1a23451..29d64d5905 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index a2dfe9c2d9..fcbea62883 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po index c025752907..f46aecd36a 100644 --- a/l10n/ka_GE/user_ldap.po +++ b/l10n/ka_GE/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 1994193459..306bc14e94 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index db4d64d7d5..b29aa4a8c3 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_encryption.po b/l10n/ko/files_encryption.po index 36a52c5cbe..a509e34446 100644 --- a/l10n/ko/files_encryption.po +++ b/l10n/ko/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "저장 중..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index b34d6965bf..9787d7b23e 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index b81e97c4cb..d1af09d315 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index af0fe1a970..0ce2a2a5ee 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index 84d6019ebb..52920ee751 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 8d07c23891..9d7550f9a0 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index d2b97308ba..4c7a97e3b2 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index 413035b869..e66f0850f8 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index d23f1d864c..6b6edda66a 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_encryption.po b/l10n/ku_IQ/files_encryption.po index 5af0949e5c..7f23d3b4e2 100644 --- a/l10n/ku_IQ/files_encryption.po +++ b/l10n/ku_IQ/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "پاشکه‌وتده‌کات..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 2c2621c77f..71be77277b 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index be4563630c..c1433026f5 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index 88e46580f1..daae7a43ff 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/user_ldap.po b/l10n/ku_IQ/user_ldap.po index 2c76951bed..e776615344 100644 --- a/l10n/ku_IQ/user_ldap.po +++ b/l10n/ku_IQ/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 7ded0d5205..2e13c0e7db 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 42bbb7db49..5ffd6e96c6 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_encryption.po b/l10n/lb/files_encryption.po index 4bce576ce6..6b8269f29a 100644 --- a/l10n/lb/files_encryption.po +++ b/l10n/lb/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Speicheren..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/lb/files_external.po b/l10n/lb/files_external.po index 6926dd0cc8..fdef516ec6 100644 --- a/l10n/lb/files_external.po +++ b/l10n/lb/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index e071f795bd..7abad7bced 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index fa572f9d22..2835ab77ff 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 3ac5b1843d..70cc6975fe 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 2b874094f5..248587c499 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index c03e8c3552..6d881588f0 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index 2045ec04d5..b49fc6fb11 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Roman Deniobe \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index 1eebbacea9..b0b960b741 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_encryption.po b/l10n/lt_LT/files_encryption.po index d58c738c69..2b7995207d 100644 --- a/l10n/lt_LT/files_encryption.po +++ b/l10n/lt_LT/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Saugoma..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index a99fd6418e..33459e1ce0 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 0e5e166ecd..5669635914 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index 44da9a6a0b..703568acb7 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index eea8492bfc..bc3bd17246 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index 4103ebe057..3c934ade01 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index 006804c9ed..f2b10fa005 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index a681f3b100..dce31d5ff1 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 6f6fa26e2b..8ea56c0d77 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_encryption.po b/l10n/lv/files_encryption.po index e18c05ba14..7db00d8fad 100644 --- a/l10n/lv/files_encryption.po +++ b/l10n/lv/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Saglabā..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/lv/files_external.po b/l10n/lv/files_external.po index 03718850f3..312a5f3ed5 100644 --- a/l10n/lv/files_external.po +++ b/l10n/lv/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index dfc7467507..3589bb8760 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index b6619dcfcb..41dd280db4 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index 9fdb84580a..397917c695 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index e6076c2ef4..8c4699c494 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/user_ldap.po b/l10n/lv/user_ldap.po index 13372d4da4..3c49fc3c58 100644 --- a/l10n/lv/user_ldap.po +++ b/l10n/lv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index d59d840a52..0ae92528b4 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 02958a44b6..53d4465f5c 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_encryption.po b/l10n/mk/files_encryption.po index 86a89dc8c5..e8f27333e5 100644 --- a/l10n/mk/files_encryption.po +++ b/l10n/mk/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Снимам..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/mk/files_external.po b/l10n/mk/files_external.po index f2fb362c44..4d25c25c23 100644 --- a/l10n/mk/files_external.po +++ b/l10n/mk/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index 988ee369f9..8f5350a5ed 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index 3a4424dbbe..04db2a54bd 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index bf04616b5b..497fee8fe4 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 2e1f5bfe49..20478b1ba7 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/user_ldap.po b/l10n/mk/user_ldap.po index db60851b09..f1aa42b944 100644 --- a/l10n/mk/user_ldap.po +++ b/l10n/mk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index ba209641f8..dbe7892825 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index c7a4735cf3..049514d04f 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_encryption.po b/l10n/ms_MY/files_encryption.po index 6bde24151b..baa6e428d2 100644 --- a/l10n/ms_MY/files_encryption.po +++ b/l10n/ms_MY/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Simpan..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ms_MY/files_external.po b/l10n/ms_MY/files_external.po index e47d90c476..0e330ef955 100644 --- a/l10n/ms_MY/files_external.po +++ b/l10n/ms_MY/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index 1bd8517254..bcba5b4476 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index eea348554b..b784d3df6d 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 34be508aac..723b88d7ff 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index eade3e3980..8d06e29501 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/user_ldap.po b/l10n/ms_MY/user_ldap.po index 094fc785d6..63ed8a148f 100644 --- a/l10n/ms_MY/user_ldap.po +++ b/l10n/ms_MY/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po index 5ded37e594..383b27975b 100644 --- a/l10n/my_MM/core.po +++ b/l10n/my_MM/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files.po b/l10n/my_MM/files.po index 96e24035fc..8d70b87716 100644 --- a/l10n/my_MM/files.po +++ b/l10n/my_MM/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po index 5b883066e1..b989c6f8fe 100644 --- a/l10n/my_MM/files_sharing.po +++ b/l10n/my_MM/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po index 9f36f1a333..9b55512891 100644 --- a/l10n/my_MM/lib.po +++ b/l10n/my_MM/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index e52d7c445e..71aea61913 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index 9f856e2f2c..a46cbd7814 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_encryption.po b/l10n/nb_NO/files_encryption.po index c1e9969292..a04caa639b 100644 --- a/l10n/nb_NO/files_encryption.po +++ b/l10n/nb_NO/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Lagrer..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/nb_NO/files_external.po b/l10n/nb_NO/files_external.po index 67bb014219..d5e1cbfa31 100644 --- a/l10n/nb_NO/files_external.po +++ b/l10n/nb_NO/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index c113ac9ba7..ad80b4b284 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index 3153e434c6..c49f21bcb7 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 406555f3f3..09916d998b 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index defddd01c2..fad235b923 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index d77902c25c..ba95d21248 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index c0e1e5b3a2..d1339ef19e 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "Annuleer" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "Fout bij laden van bestandsselectie sjabloon" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 7b0422f385..271d73810f 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_encryption.po b/l10n/nl/files_encryption.po index 26b54b72d7..eef239c4e0 100644 --- a/l10n/nl/files_encryption.po +++ b/l10n/nl/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 09:20+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,23 +20,23 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "Sleutelherstel succesvol" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Kon niet" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Wachtwoord succesvol gewijzigd." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Opslaan" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -44,50 +45,50 @@ msgstr "Versleuteling" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Activeer versleuteling van wachtwoorden herstelsleutel (maak delen met herstel sleutel mogelijk):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Herstel account wachtwoord" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Geactiveerd" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Gedeactiveerd" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Wijzig versleuteling wachtwoord herstelsleutel" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Oude herstel account wachtwoord" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Nieuwe herstel account wachtwoord" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Wijzigen wachtwoord" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Activeer wachtwoordherstel door alle bestanden met uw beheerder te delen:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Door deze optie te activeren kunt u toegang tot uw versleutelde bestanden krijgen als u uw wachtwoord kwijt bent" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Bestandsherstel instellingen bijgewerkt" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Kon bestandsherstel niet bijwerken" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index fa61feb513..507d6c68f1 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index d7b53f40fc..1ab80fbbfc 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index ee4343a7ab..e842ab2f79 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index a5ffe9bf68..9ab110c002 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# André Koot , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +124,7 @@ msgstr "Geef of een bestaand account op of het beheerdersaccount." #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Er kon geen verbinding met Oracle worden bereikt" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 2cea7358ed..0d1a96aba5 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +466,7 @@ msgstr "Creëer" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Beheer herstel wachtwoord" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index 5def276210..ae4971b415 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index f3fc449d67..a31ee08289 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index e508384dac..2e8734faab 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_encryption.po b/l10n/nn_NO/files_encryption.po index 7aced3d3d2..58f97c79b8 100644 --- a/l10n/nn_NO/files_encryption.po +++ b/l10n/nn_NO/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Lagrar …" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/nn_NO/files_external.po b/l10n/nn_NO/files_external.po index 71a854578f..084df4b746 100644 --- a/l10n/nn_NO/files_external.po +++ b/l10n/nn_NO/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index 7733d865d7..e846c9d1a2 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index c1c2af9a53..e56617d69f 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index a63a6bb231..dcb52e0e40 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index 3730eba1ef..d53e2a117e 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/user_ldap.po b/l10n/nn_NO/user_ldap.po index 214b5151d1..76f343d91c 100644 --- a/l10n/nn_NO/user_ldap.po +++ b/l10n/nn_NO/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index 2d38312773..8085c54f8d 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index b37b98e77b..ca59ea12e4 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_encryption.po b/l10n/oc/files_encryption.po index 0ad7cd968e..41e47db998 100644 --- a/l10n/oc/files_encryption.po +++ b/l10n/oc/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Enregistra..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/oc/files_external.po b/l10n/oc/files_external.po index d581045b36..0111481a9e 100644 --- a/l10n/oc/files_external.po +++ b/l10n/oc/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index 355080977a..cc93541803 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 457ddae4ba..8e5b8f353d 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index e5799e25ea..b6537963a0 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/user_ldap.po b/l10n/oc/user_ldap.po index c3e6148098..95aad8d0ad 100644 --- a/l10n/oc/user_ldap.po +++ b/l10n/oc/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 9d403274a9..0a6334b71e 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 422cdc66d6..1e47d2345d 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_encryption.po b/l10n/pl/files_encryption.po index faa26a3998..97b2749dab 100644 --- a/l10n/pl/files_encryption.po +++ b/l10n/pl/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 12:40+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -19,23 +20,23 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "Odzyskanie klucza udane" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Nie można" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Zmiana hasła udana." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Nie można zmienić hasła. Może stare hasło nie było poprawne." #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Zapisywanie..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -44,50 +45,50 @@ msgstr "Szyfrowanie" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Włącz szyfrowanie odzyskiwanych haseł klucza (zezwalaj na odzyskiwanie klucza):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Odzyskiwanie hasła konta" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Włączone" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Wyłączone" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Zmiana klucza szyfrowania haseł odzyskiwania:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Stare hasło odzyskiwania" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Nowe hasło odzyskiwania" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Zmień hasło" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Włączyć hasło odzyskiwania przez udostępnianie wszystkich plików z administratorem:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Ustawienia odzyskiwania plików zmienione" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Nie można zmienić pliku odzyskiwania" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index 925bef414e..6fa27193fe 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index 8baac1c876..7f83ad4ccf 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index 20141b5ca9..c0c0f60e8a 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index bf51a156f1..03ea126cdb 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index d0043002b6..cd0ffd5900 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/settings.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyryl Sochacki , 2013 # adbrand , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"Last-Translator: Cyryl Sochacki \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" @@ -466,7 +467,7 @@ msgstr "Utwórz" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Odzyskiwanie hasła administratora" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/pl/user_ldap.po b/l10n/pl/user_ldap.po index 60970a2135..4cea4c05d5 100644 --- a/l10n/pl/user_ldap.po +++ b/l10n/pl/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index bff30ed4d8..ae728a7a74 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 7cc05ae1cf..9830ab282f 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index 4b451b5a43..dcb91632e4 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Flávio Veras \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/files.po b/l10n/pt_BR/files.po index 3d8b33bb27..2537f6da5c 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Flávio Veras \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/files_encryption.po b/l10n/pt_BR/files_encryption.po index aaf88b3f80..5d944e56f8 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Salvando..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index a792ac29b9..4e7d6488f1 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Flávio Veras \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/files_sharing.po b/l10n/pt_BR/files_sharing.po index 7eedb66963..2acfafb986 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index ec03bb5f74..23baf48bc6 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index 68ce889af1..1c7f19f926 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Flávio Veras \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/settings.po b/l10n/pt_BR/settings.po index d7c412cf55..7042ac948a 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/user_ldap.po b/l10n/pt_BR/user_ldap.po index 58d5046ce4..f7cd5c2ab7 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Flávio Veras \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_PT/core.po b/l10n/pt_PT/core.po index f542bd33cd..8555fa8ca0 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 4a4f2840d2..b9f5360d31 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_encryption.po b/l10n/pt_PT/files_encryption.po index c618d2ad5f..f2c8d8dd58 100644 --- a/l10n/pt_PT/files_encryption.po +++ b/l10n/pt_PT/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "A guardar..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/pt_PT/files_external.po b/l10n/pt_PT/files_external.po index 810188abef..88ed87dcf7 100644 --- a/l10n/pt_PT/files_external.po +++ b/l10n/pt_PT/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index ba5c23b6a1..3865982174 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 8a5bc4df46..7012e81098 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index d9abe16e6e..a8d9810d04 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 739cdc7752..2d860d801f 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index e22a9e8085..7157a06aea 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index 75c699cffb..c9e70d59f5 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index ded190fc42..595e5a2070 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_encryption.po b/l10n/ro/files_encryption.po index 55c40bdf76..bd84119a43 100644 --- a/l10n/ro/files_encryption.po +++ b/l10n/ro/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Se salvează..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index 5321d0919a..8448c74b21 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index 3feeea158c..f516156380 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index 88d58700c4..d0de269cdf 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index 4f3eabe62c..b8df5112bb 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 025c891439..7e227065e9 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index eff75c4862..6d5ee0f47c 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index 82c9486364..e5c500a81f 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: foool \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 76134c946a..9c18f195a5 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_encryption.po b/l10n/ru/files_encryption.po index b57c5b6fa7..8bb2c179d5 100644 --- a/l10n/ru/files_encryption.po +++ b/l10n/ru/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Сохранение..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index d514f51a78..35aa28c4c4 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index aa42b19d98..1f0f91910a 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index 77e0b0331a..d7fc79b3ac 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index 228e23807e..1bc33f5604 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index 72822fbc9e..c19a198aee 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/user_ldap.po b/l10n/ru/user_ldap.po index 94f6b62a91..c1ff77930e 100644 --- a/l10n/ru/user_ldap.po +++ b/l10n/ru/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 9549e1c7be..911e33bd8c 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index a60fb5b883..0b49c128dc 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_encryption.po b/l10n/ru_RU/files_encryption.po index 1ef909b3f5..30ad511625 100644 --- a/l10n/ru_RU/files_encryption.po +++ b/l10n/ru_RU/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:30+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Сохранение" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ru_RU/files_external.po b/l10n/ru_RU/files_external.po index 6b81e43f06..90c9026276 100644 --- a/l10n/ru_RU/files_external.po +++ b/l10n/ru_RU/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_sharing.po b/l10n/ru_RU/files_sharing.po index 94dbca97a5..397ef1679e 100644 --- a/l10n/ru_RU/files_sharing.po +++ b/l10n/ru_RU/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index c01ff4dfd6..77b6be968e 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 143e9b5498..00831d6a1d 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index 8fe4ec687f..bd7808ecb7 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" @@ -122,7 +122,7 @@ msgstr "" #: js/personal.js:118 msgid "Saving..." -msgstr "" +msgstr "Сохранение" #: js/users.js:47 msgid "deleted" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index febe3cdaea..21c93b52cc 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: 2013-04-26 08:02+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index f4623415ee..62527ad648 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index cbd18eba80..7b57291fdc 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_encryption.po b/l10n/si_LK/files_encryption.po index 23b0eaf780..62e99d00ef 100644 --- a/l10n/si_LK/files_encryption.po +++ b/l10n/si_LK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "සුරැකෙමින් පවතී..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po index 9c280da04a..2eba16213a 100644 --- a/l10n/si_LK/files_external.po +++ b/l10n/si_LK/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index 17e00511be..ab09a0b344 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index 2aa02bca50..af245b2943 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 407a6a1ee9..45540e62ef 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index c787880b28..de7ada2261 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po index 69ab01c359..acf0e6c8b1 100644 --- a/l10n/si_LK/user_ldap.po +++ b/l10n/si_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index a5ad8b667d..de24fcf99d 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index f5b5bb4b99..d45f80245d 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_encryption.po b/l10n/sk_SK/files_encryption.po index 7986558531..b4ca188428 100644 --- a/l10n/sk_SK/files_encryption.po +++ b/l10n/sk_SK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Ukladám..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index 6d51e1e990..a86aab7f35 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index e082720a9c..737975cda2 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index 1765328e96..a3d6905179 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index b4c5868fbd..93d5698235 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 2933b88074..4510469b46 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 1df70434af..7676749ed7 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index 2218dd2444..d8a4b3092e 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 27ed585646..043e6d6292 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_encryption.po b/l10n/sl/files_encryption.po index 547f21c77e..00706df23f 100644 --- a/l10n/sl/files_encryption.po +++ b/l10n/sl/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Poteka shranjevanje ..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index 73de395130..1a7650d903 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index ce360b38b2..e0c59f422d 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index 2737fb4833..ca45e58075 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index 021c2f0651..1515c5a00f 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 4f0ec81dfb..9c0a46f0ac 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index a2bf110b8c..1f345364e8 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index f0dbeef076..95403baf0d 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files.po b/l10n/sq/files.po index c568a7ea9d..76ca91268f 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po index b37e931876..45a09733bc 100644 --- a/l10n/sq/files_external.po +++ b/l10n/sq/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index 13bb44e5d8..34f73661f8 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_trashbin.po b/l10n/sq/files_trashbin.po index fe7013717f..2556f948cb 100644 --- a/l10n/sq/files_trashbin.po +++ b/l10n/sq/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po index 7087246f85..8730f07cec 100644 --- a/l10n/sq/lib.po +++ b/l10n/sq/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po index 2a121b936a..795bf6379f 100644 --- a/l10n/sq/settings.po +++ b/l10n/sq/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po index c998c3a755..d215f6371a 100644 --- a/l10n/sq/user_ldap.po +++ b/l10n/sq/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index 41a68f296d..2bb63a99cc 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index c0c200fe30..d21c00b9ba 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_encryption.po b/l10n/sr/files_encryption.po index 87c2f4d32a..77d694cb27 100644 --- a/l10n/sr/files_encryption.po +++ b/l10n/sr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Чување у току..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/sr/files_external.po b/l10n/sr/files_external.po index 727dfea3dc..daa0a3ffb9 100644 --- a/l10n/sr/files_external.po +++ b/l10n/sr/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index 9ed2c5b704..b42bbe03ab 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index 0c8f03dfa5..add0b415fa 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index ebc7f3d444..4e989fc80a 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 0ec3f4dd53..8ce18c39b9 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/user_ldap.po b/l10n/sr/user_ldap.po index d03ebaa856..1522f7d8f0 100644 --- a/l10n/sr/user_ldap.po +++ b/l10n/sr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index d77f9e99bf..0eaee08d18 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index f8a78e2dc6..970ef961c9 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_external.po b/l10n/sr@latin/files_external.po index d57670789b..790b9879ea 100644 --- a/l10n/sr@latin/files_external.po +++ b/l10n/sr@latin/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index b4e99a9555..ab71d76c2a 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index f35ead6c73..c436bf6f5b 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 8d5ce2c288..20cf9c706c 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index e2014da2ff..5ae3a2fce7 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 55bbdb3181..9db4120e1a 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index de78bc0590..6ca51eb51e 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_encryption.po b/l10n/sv/files_encryption.po index 2304b076cb..791e0a7967 100644 --- a/l10n/sv/files_encryption.po +++ b/l10n/sv/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Sparar..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/sv/files_external.po b/l10n/sv/files_external.po index 7187b42757..2801ad22bc 100644 --- a/l10n/sv/files_external.po +++ b/l10n/sv/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 18c691e54c..81a75dd6e9 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index c709d6e6ed..12e368d65b 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index fcaee0db29..35334f375f 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index 9ad1fa01f7..3b7986d8dd 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/user_ldap.po b/l10n/sv/user_ldap.po index 87214836c2..13f07b07a1 100644 --- a/l10n/sv/user_ldap.po +++ b/l10n/sv/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 6bf0a9e637..579acd34e4 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 5d45574916..131bd3c945 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_encryption.po b/l10n/ta_LK/files_encryption.po index 251e10cda5..87ff9285c1 100644 --- a/l10n/ta_LK/files_encryption.po +++ b/l10n/ta_LK/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "சேமிக்கப்படுகிறது..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po index 5c13f3d48d..07f69bbecb 100644 --- a/l10n/ta_LK/files_external.po +++ b/l10n/ta_LK/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index d2822a64b4..8e81ade154 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index 64e6357655..5d3c99577b 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index b5723cd97b..e2806a3afd 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index 784a4f7933..cfef54c73b 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po index c08c0ad22f..f7a6cd8b78 100644 --- a/l10n/ta_LK/user_ldap.po +++ b/l10n/ta_LK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/core.po b/l10n/te/core.po index 1a1814b1a5..64a4970d76 100644 --- a/l10n/te/core.po +++ b/l10n/te/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files.po b/l10n/te/files.po index 4a8ff7c303..1df2ca8560 100644 --- a/l10n/te/files.po +++ b/l10n/te/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_external.po b/l10n/te/files_external.po index f52067c27b..56aaedb657 100644 --- a/l10n/te/files_external.po +++ b/l10n/te/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_trashbin.po b/l10n/te/files_trashbin.po index faffde55b4..1e81cdb777 100644 --- a/l10n/te/files_trashbin.po +++ b/l10n/te/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/settings.po b/l10n/te/settings.po index 823a5c03b4..049bbcf892 100644 --- a/l10n/te/settings.po +++ b/l10n/te/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/user_ldap.po b/l10n/te/user_ldap.po index 5d5ca929e6..a7103446d6 100644 --- a/l10n/te/user_ldap.po +++ b/l10n/te/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 7f32c63dc4..1504a6467a 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index b4daa36b3a..2b70448c55 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index e1e2617a28..12d6c39b7b 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 460c1c53c7..792d5b17f6 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 66079f3e80..af8c2dcdb5 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index de204ee02f..ab55823307 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index f97c71f8aa..1297a9683d 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index cdb616e1de..c9d0b98051 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 46a7425442..19c802e8c3 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 4c06e94d5a..3be6bcc928 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 70a4f7ebe3..fffcf96014 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index dfed5edab7..7f8f94f5e2 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index ca56cc9c74..994ed1a04f 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_encryption.po b/l10n/th_TH/files_encryption.po index 5c89237280..e7019e9831 100644 --- a/l10n/th_TH/files_encryption.po +++ b/l10n/th_TH/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "กำลังบันทึกข้อมูล..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/th_TH/files_external.po b/l10n/th_TH/files_external.po index 7f78481e21..85619f8a93 100644 --- a/l10n/th_TH/files_external.po +++ b/l10n/th_TH/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index 322abcd87d..4ae34acc27 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 11a4930831..6712022a10 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index 1131fe6de0..49591aa68c 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index 3c7d74699d..cef1e0560d 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/user_ldap.po b/l10n/th_TH/user_ldap.po index ed7bed1d8d..0f6d695b38 100644 --- a/l10n/th_TH/user_ldap.po +++ b/l10n/th_TH/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index 332dd0bd38..c287d0323a 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index c8e788730a..4afc23c1a9 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_encryption.po b/l10n/tr/files_encryption.po index 2034370f53..db9b97668d 100644 --- a/l10n/tr/files_encryption.po +++ b/l10n/tr/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Kaydediliyor..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/tr/files_external.po b/l10n/tr/files_external.po index 90df3457fe..4357038ece 100644 --- a/l10n/tr/files_external.po +++ b/l10n/tr/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index 2cb763728c..8b2c35630e 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index c9a86cda20..9451991df4 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index 580824cba7..1669aad000 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index f681c072e0..0305e4c817 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index 9c166b28ef..5e2108b82d 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/core.po b/l10n/ug/core.po index 5d03ea9787..cc16fec060 100644 --- a/l10n/ug/core.po +++ b/l10n/ug/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files.po b/l10n/ug/files.po index d8d3444443..642ca25d3a 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_encryption.po b/l10n/ug/files_encryption.po index ab0642eaf0..3a8794b054 100644 --- a/l10n/ug/files_encryption.po +++ b/l10n/ug/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "ساقلاۋاتىدۇ…" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/ug/files_external.po b/l10n/ug/files_external.po index 88f10e6962..686fafbb9b 100644 --- a/l10n/ug/files_external.po +++ b/l10n/ug/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 067eda41c8..8af1c769bc 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: uqkun \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_trashbin.po b/l10n/ug/files_trashbin.po index af9cf01335..78242cd0b8 100644 --- a/l10n/ug/files_trashbin.po +++ b/l10n/ug/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/lib.po b/l10n/ug/lib.po index 3cb94d1009..f126f1d9fe 100644 --- a/l10n/ug/lib.po +++ b/l10n/ug/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/settings.po b/l10n/ug/settings.po index a9b7ec7c9b..cf56d0ff7c 100644 --- a/l10n/ug/settings.po +++ b/l10n/ug/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/user_ldap.po b/l10n/ug/user_ldap.po index f49de9b048..bddcca68f5 100644 --- a/l10n/ug/user_ldap.po +++ b/l10n/ug/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 1db883d2b4..0fb74bcbf4 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 9c62403d52..a87cb8f88f 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_encryption.po b/l10n/uk/files_encryption.po index e2f81845d5..b0417314c1 100644 --- a/l10n/uk/files_encryption.po +++ b/l10n/uk/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Зберігаю..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index a01e520df4..2277b8e12a 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index 27552d234c..29934a3117 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index 43cbc76e98..88bac954f9 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index 8159cfccb7..62aad184a6 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index 732f8e36ea..2cd2543e9c 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index cc23122583..f699538e7c 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/core.po b/l10n/ur_PK/core.po index a60769bb73..9c650d8135 100644 --- a/l10n/ur_PK/core.po +++ b/l10n/ur_PK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files.po b/l10n/ur_PK/files.po index c886690565..df77bffed9 100644 --- a/l10n/ur_PK/files.po +++ b/l10n/ur_PK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_trashbin.po b/l10n/ur_PK/files_trashbin.po index 0e100ced08..9793d228b4 100644 --- a/l10n/ur_PK/files_trashbin.po +++ b/l10n/ur_PK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/settings.po b/l10n/ur_PK/settings.po index abeb1ee259..ea730144e4 100644 --- a/l10n/ur_PK/settings.po +++ b/l10n/ur_PK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/user_ldap.po b/l10n/ur_PK/user_ldap.po index 813f2b92f5..c304dd8dc8 100644 --- a/l10n/ur_PK/user_ldap.po +++ b/l10n/ur_PK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index 0a3b6e14af..0585bffc8b 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index da01e4c963..5a3305fa9e 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_encryption.po b/l10n/vi/files_encryption.po index fea18d335d..ba9b23c72c 100644 --- a/l10n/vi/files_encryption.po +++ b/l10n/vi/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "Đang lưu..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index ea12a9f6ee..86ca37129f 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index 103ec6485a..d473201a24 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 6b4bea2008..892a0c895a 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 1dbcbfd512..7631c4c5a7 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index cfa7dc11ef..fd4b6554f2 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index bd352de505..3665d05eb3 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index c72e1d1217..032394320f 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index a678bd83fd..75ab7bcf5f 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_encryption.po b/l10n/zh_CN.GB2312/files_encryption.po index 1ef2cfcb7f..0ac97b2612 100644 --- a/l10n/zh_CN.GB2312/files_encryption.po +++ b/l10n/zh_CN.GB2312/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "保存中..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/zh_CN.GB2312/files_external.po b/l10n/zh_CN.GB2312/files_external.po index b902f19431..cf178b323d 100644 --- a/l10n/zh_CN.GB2312/files_external.po +++ b/l10n/zh_CN.GB2312/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_sharing.po b/l10n/zh_CN.GB2312/files_sharing.po index d1d72a03e5..2741ffe6f6 100644 --- a/l10n/zh_CN.GB2312/files_sharing.po +++ b/l10n/zh_CN.GB2312/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index 650d11b4c5..e7f4be5c29 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index 475ec6317b..f73a4764c1 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index b1d21c46d3..8c36765d81 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/user_ldap.po b/l10n/zh_CN.GB2312/user_ldap.po index 6822f2a096..4666a10be0 100644 --- a/l10n/zh_CN.GB2312/user_ldap.po +++ b/l10n/zh_CN.GB2312/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 0be2e9fed4..3189dfff2d 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -223,7 +223,7 @@ msgstr "取消" #: js/oc-dialogs.js:138 js/oc-dialogs.js:195 msgid "Error loading file picker template" -msgstr "" +msgstr "加载文件选择器模板出错" #: js/oc-dialogs.js:161 msgid "Yes" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 9d17fe97ca..26884dbc7d 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_encryption.po b/l10n/zh_CN/files_encryption.po index a1441c26e0..90201298c6 100644 --- a/l10n/zh_CN/files_encryption.po +++ b/l10n/zh_CN/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "保存中" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index c61ffd4438..541bbd4804 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 59049f512d..5df0586ad1 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index cfe8509cf7..c0fa3214cd 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index 7a1e0aedf6..a1e0ef01d7 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index 4f7b161acd..b3d91b9ead 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index 5087046767..7234fb5264 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index fcda9e3830..6262b6ff4b 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 470235c8ce..93fc2dd175 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po index e2c108e1e4..88ad0fde40 100644 --- a/l10n/zh_HK/files_external.po +++ b/l10n/zh_HK/files_external.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index f0d8ba37ac..21db673b64 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 64af91a243..615b0272f7 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index 1ba7e60a91..4779e68e38 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index ff300e8c64..26854adf76 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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po index 211f3bf416..a32ccce9c9 100644 --- a/l10n/zh_HK/user_ldap.po +++ b/l10n/zh_HK/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 5c94351de7..6562bbdf50 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 5042bd4bd1..6cdee027a5 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_encryption.po b/l10n/zh_TW/files_encryption.po index b897dc975b..32ee249958 100644 --- a/l10n/zh_TW/files_encryption.po +++ b/l10n/zh_TW/files_encryption.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 00:20+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -35,7 +35,7 @@ msgstr "" #: js/settings-admin.js:11 msgid "Saving..." -msgstr "" +msgstr "儲存中..." #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index d7d095a2b2..ca5ec7c149 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 9d542c9d80..d9bb607db1 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:25+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index 55262a66e9..e7d2a8192e 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index dab8cf41e5..83f825dcbc 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index ed343a6f38..eb2070244f 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index 30c56abebd..d2e05a0dce 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-24 23:26+0000\n" +"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"PO-Revision-Date: 2013-05-25 23:17+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php index d431fd7207..5c368a85b2 100644 --- a/lib/l10n/ca.php +++ b/lib/l10n/ca.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s establiu l'ordinador central de la base de dades.", "PostgreSQL username and/or password not valid" => "Nom d'usuari i/o contrasenya PostgreSQL no vàlids", "You need to enter either an existing account or the administrator." => "Heu d'escriure un compte existent o el d'administrador.", +"Oracle connection could not be established" => "No s'ha pogut establir la connexió Oracle", "MySQL username and/or password not valid" => "Nom d'usuari i/o contrasenya MySQL no vàlids", "DB Error: \"%s\"" => "Error DB: \"%s\"", "Offending command was: \"%s\"" => "L'ordre en conflicte és: \"%s\"", diff --git a/lib/l10n/de_DE.php b/lib/l10n/de_DE.php index d93f9e4de9..5ebe4fb26f 100644 --- a/lib/l10n/de_DE.php +++ b/lib/l10n/de_DE.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s setze den Datenbank-Host", "PostgreSQL username and/or password not valid" => "PostgreSQL Benutzername und/oder Passwort ungültig", "You need to enter either an existing account or the administrator." => "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.", +"Oracle connection could not be established" => "Die Oracle-Verbindung konnte nicht aufgebaut werden.", "MySQL username and/or password not valid" => "MySQL Benutzername und/oder Passwort ungültig", "DB Error: \"%s\"" => "DB Fehler: \"%s\"", "Offending command was: \"%s\"" => "Fehlerhafter Befehl war: \"%s\"", diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php index de63ae3fad..3b5c886bd2 100644 --- a/lib/l10n/hu_HU.php +++ b/lib/l10n/hu_HU.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s adja meg az adatbázist szolgáltató számítógép nevét.", "PostgreSQL username and/or password not valid" => "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen", "You need to enter either an existing account or the administrator." => "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia", +"Oracle connection could not be established" => "Az Oracle kapcsolat nem hozható létre", "MySQL username and/or password not valid" => "A MySQL felhasználói név és/vagy jelszó érvénytelen", "DB Error: \"%s\"" => "Adatbázis hiba: \"%s\"", "Offending command was: \"%s\"" => "A hibát ez a parancs okozta: \"%s\"", diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php index 7340591e9a..2a6086a596 100644 --- a/lib/l10n/nl.php +++ b/lib/l10n/nl.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s instellen databaseservernaam.", "PostgreSQL username and/or password not valid" => "PostgreSQL gebruikersnaam en/of wachtwoord ongeldig", "You need to enter either an existing account or the administrator." => "Geef of een bestaand account op of het beheerdersaccount.", +"Oracle connection could not be established" => "Er kon geen verbinding met Oracle worden bereikt", "MySQL username and/or password not valid" => "MySQL gebruikersnaam en/of wachtwoord ongeldig", "DB Error: \"%s\"" => "DB Fout: \"%s\"", "Offending command was: \"%s\"" => "Onjuiste commande was: \"%s\"", diff --git a/settings/l10n/ca.php b/settings/l10n/ca.php index d134ecad01..769c25d7bf 100644 --- a/settings/l10n/ca.php +++ b/settings/l10n/ca.php @@ -101,6 +101,7 @@ "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", "Login Name" => "Nom d'accés", "Create" => "Crea", +"Admin Recovery Password" => "Recuperació de contrasenya d'administrador", "Default Storage" => "Emmagatzemament per defecte", "Unlimited" => "Il·limitat", "Other" => "Un altre", diff --git a/settings/l10n/de_DE.php b/settings/l10n/de_DE.php index 91a96ca9f0..f7f5323974 100644 --- a/settings/l10n/de_DE.php +++ b/settings/l10n/de_DE.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Verwenden Sie diese Adresse, um Ihren Dateimanager mit Ihrer ownCloud zu verbinden", "Login Name" => "Loginname", "Create" => "Erstellen", +"Admin Recovery Password" => "Admin-Paswort-Wiederherstellung", "Default Storage" => "Standard-Speicher", "Unlimited" => "Unbegrenzt", "Other" => "Andere", diff --git a/settings/l10n/gl.php b/settings/l10n/gl.php index 61e86a83f3..05f3dc07c4 100644 --- a/settings/l10n/gl.php +++ b/settings/l10n/gl.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Utilice este enderezo para conectarse ao seu ownCloud co administrador de ficheiros", "Login Name" => "Nome de acceso", "Create" => "Crear", +"Admin Recovery Password" => "Recuperación do contrasinal do administrador", "Default Storage" => "Almacenamento predeterminado", "Unlimited" => "Sen límites", "Other" => "Outro", diff --git a/settings/l10n/hu_HU.php b/settings/l10n/hu_HU.php index 178fd1d73e..70cbf3d136 100644 --- a/settings/l10n/hu_HU.php +++ b/settings/l10n/hu_HU.php @@ -101,6 +101,7 @@ "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.", "Login Name" => "Bejelentkezési név", "Create" => "Létrehozás", +"Admin Recovery Password" => "A jelszóvisszaállítás adminisztrációja", "Default Storage" => "Alapértelmezett tárhely", "Unlimited" => "Korlátlan", "Other" => "Más", diff --git a/settings/l10n/it.php b/settings/l10n/it.php index 4fc8dc5f64..38c22ea06d 100644 --- a/settings/l10n/it.php +++ b/settings/l10n/it.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Usa questo indirizzo per connetterti al tuo ownCloud dal tuo gestore file", "Login Name" => "Nome utente", "Create" => "Crea", +"Admin Recovery Password" => "Password di ripristino amministrativa", "Default Storage" => "Archiviazione predefinita", "Unlimited" => "Illimitata", "Other" => "Altro", diff --git a/settings/l10n/nl.php b/settings/l10n/nl.php index d22b04ad57..00de9e8b49 100644 --- a/settings/l10n/nl.php +++ b/settings/l10n/nl.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Gebruik dit adres om te verbinden met uw ownCloud in uw bestandsbeheer", "Login Name" => "Inlognaam", "Create" => "Creëer", +"Admin Recovery Password" => "Beheer herstel wachtwoord", "Default Storage" => "Default opslag", "Unlimited" => "Ongelimiteerd", "Other" => "Anders", diff --git a/settings/l10n/pl.php b/settings/l10n/pl.php index 810f8bf15a..908a930339 100644 --- a/settings/l10n/pl.php +++ b/settings/l10n/pl.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Użyj tego adresu aby podłączyć zasób ownCloud w menedżerze plików", "Login Name" => "Login", "Create" => "Utwórz", +"Admin Recovery Password" => "Odzyskiwanie hasła administratora", "Default Storage" => "Magazyn domyślny", "Unlimited" => "Bez limitu", "Other" => "Inne", diff --git a/settings/l10n/ru_RU.php b/settings/l10n/ru_RU.php index d816f9fe85..d80f7b0873 100644 --- a/settings/l10n/ru_RU.php +++ b/settings/l10n/ru_RU.php @@ -1,5 +1,6 @@ "Ошибка", +"Saving..." => "Сохранение", "deleted" => "удалено", "Groups" => "Группы", "Delete" => "Удалить", From c7981abbc902ece98ceaad72e475ec5515cd26a7 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 26 May 2013 03:22:16 +0200 Subject: [PATCH 340/575] improved test - fixed testPermanentDeleteFile sometimes failed - speed optimization - reformat code --- apps/files_encryption/tests/crypt.php | 563 ++++++++++---------- apps/files_encryption/tests/keymanager.php | 187 ++++--- apps/files_encryption/tests/share.php | 568 ++++++++++----------- apps/files_encryption/tests/stream.php | 134 ++--- apps/files_encryption/tests/trashbin.php | 193 ++++--- apps/files_encryption/tests/util.php | 187 +++---- apps/files_encryption/tests/webdav.php | 103 ++-- 7 files changed, 952 insertions(+), 983 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 621941c52a..b8fbdda400 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,15 +7,15 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -39,33 +39,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase public $genPrivateKey; public $genPublicKey; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); - - // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); - $this->dataShort = 'hats'; - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); - $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); - $this->randomKey = Encryption\Crypt::generateKey(); - - $keypair = Encryption\Crypt::createKeypair(); - $this->genPublicKey = $keypair['publicKey']; - $this->genPrivateKey = $keypair['privateKey']; - - $this->view = new \OC_FilesystemView('/'); - - \OC_User::setUserId('admin'); - $this->userId = 'admin'; - $this->pass = 'admin'; - - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); + \OC_User::useBackend( 'database' ); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); @@ -73,58 +50,84 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase // Filesystem related hooks \OCA\Encryption\Helper::registerUserHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - - // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + // setup filesystem \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); } - function tearDown() - { - \OC_FileProxy::clearProxies(); + function setUp() { + // set content for encrypting / decrypting in tests + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->dataShort = 'hats'; + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); + $this->randomKey = Encryption\Crypt::generateKey(); + $keypair = Encryption\Crypt::createKeypair(); + $this->genPublicKey = $keypair['publicKey']; + $this->genPrivateKey = $keypair['privateKey']; + + $this->view = new \OC_FilesystemView( '/' ); + + \OC_User::setUserId( 'admin' ); + $this->userId = 'admin'; + $this->pass = 'admin'; + + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable( 'files_trashbin' ); + } + + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } } - function testGenerateKey() - { + public static function tearDownAfterClass() { + + } + + function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation $key = Encryption\Crypt::generateKey(); - $this->assertTrue(strlen($key) > 16); + $this->assertTrue( strlen( $key ) > 16 ); } /** * @return String */ - function testGenerateIv() - { + function testGenerateIv() { $iv = Encryption\Crypt::generateIv(); - $this->assertEquals(16, strlen($iv)); + $this->assertEquals( 16, strlen( $iv ) ); return $iv; @@ -133,27 +136,26 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testGenerateIv */ - function testConcatIv($iv) - { + function testConcatIv( $iv ) { - $catFile = Encryption\Crypt::concatIv($this->dataLong, $iv); + $catFile = Encryption\Crypt::concatIv( $this->dataLong, $iv ); // Fetch encryption metadata from end of file - $meta = substr($catFile, -22); + $meta = substr( $catFile, -22 ); - $identifier = substr($meta, 0, 6); + $identifier = substr( $meta, 0, 6 ); // Fetch IV from end of file - $foundIv = substr($meta, 6); + $foundIv = substr( $meta, 6 ); - $this->assertEquals('00iv00', $identifier); + $this->assertEquals( '00iv00', $identifier ); - $this->assertEquals($iv, $foundIv); + $this->assertEquals( $iv, $foundIv ); // Remove IV and IV identifier text to expose encrypted content - $data = substr($catFile, 0, -22); + $data = substr( $catFile, 0, -22 ); - $this->assertEquals($this->dataLong, $data); + $this->assertEquals( $this->dataLong, $data ); return array( 'iv' => $iv @@ -165,31 +167,29 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testConcatIv */ - function testSplitIv($testConcatIv) - { + function testSplitIv( $testConcatIv ) { // Split catfile into components - $splitCatfile = Encryption\Crypt::splitIv($testConcatIv['catfile']); + $splitCatfile = Encryption\Crypt::splitIv( $testConcatIv['catfile'] ); // Check that original IV and split IV match - $this->assertEquals($testConcatIv['iv'], $splitCatfile['iv']); + $this->assertEquals( $testConcatIv['iv'], $splitCatfile['iv'] ); // Check that original data and split data match - $this->assertEquals($this->dataLong, $splitCatfile['encrypted']); + $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); } /** * @return string padded */ - function testAddPadding() - { + function testAddPadding() { - $padded = Encryption\Crypt::addPadding($this->dataLong); + $padded = Encryption\Crypt::addPadding( $this->dataLong ); - $padding = substr($padded, -2); + $padding = substr( $padded, -2 ); - $this->assertEquals('xx', $padding); + $this->assertEquals( 'xx', $padding ); return $padded; @@ -198,107 +198,102 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testAddPadding */ - function testRemovePadding($padded) - { + function testRemovePadding( $padded ) { - $noPadding = Encryption\Crypt::RemovePadding($padded); + $noPadding = Encryption\Crypt::RemovePadding( $padded ); - $this->assertEquals($this->dataLong, $noPadding); + $this->assertEquals( $this->dataLong, $noPadding ); } - function testEncrypt() - { + function testEncrypt() { - $random = openssl_random_pseudo_bytes(13); + $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); - $this->assertNotEquals($this->dataUrl, $crypted); + $this->assertNotEquals( $this->dataUrl, $crypted ); } - function testDecrypt() - { + function testDecrypt() { - $random = openssl_random_pseudo_bytes(13); + $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); - $decrypt = Encryption\Crypt::decrypt($crypted, $iv, 'hat'); + $decrypt = Encryption\Crypt::decrypt( $crypted, $iv, 'hat' ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } - function testSymmetricEncryptFileContent() - { + function testSymmetricEncryptFileContent() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); + $crypted = Encryption\Crypt::symmetricEncryptFileContent( $this->dataShort, 'hat' ); - $this->assertNotEquals($this->dataShort, $crypted); + $this->assertNotEquals( $this->dataShort, $crypted ); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted, 'hat' ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); } - function testSymmetricStreamEncryptShortFileContent() - { + function testSymmetricStreamEncryptShortFileContent() { $filename = 'tmp-' . time() . '.test'; - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals($this->dataShort, $retreivedCryptedFile); + $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); // get session - $session = new Encryption\Session($this->view); + $session = new Encryption\Session( $this->view ); // get private key - $privateKey = $session->getPrivateKey($this->userId); + $privateKey = $session->getPrivateKey( $this->userId ); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent($retreivedCryptedFile, $plainKeyfile); + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); // Check that decrypted data matches - $this->assertEquals($this->dataShort, $manualDecrypt); + $this->assertEquals( $this->dataShort, $manualDecrypt ); // Teardown - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); - Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } /** @@ -307,212 +302,204 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testSymmetricStreamEncryptLongFileContent() - { + function testSymmetricStreamEncryptLongFileContent() { // Generate a a random filename $filename = 'tmp-' . time() . '.test'; // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong . $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong . $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals($this->dataLong . $this->dataLong, $retreivedCryptedFile); + $this->assertNotEquals( $this->dataLong . $this->dataLong, $retreivedCryptedFile ); // Manuallly split saved file into separate IVs and encrypted chunks - $r = preg_split('/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE); + $r = preg_split( '/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE ); //print_r($r); // Join IVs and their respective data chunks - $e = array($r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11]); //.$r[11], $r[12].$r[13], $r[14] ); + $e = array( $r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11] ); //.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); // get session - $session = new Encryption\Session($this->view); + $session = new Encryption\Session( $this->view ); // get private key - $privateKey = $session->getPrivateKey($this->userId); + $privateKey = $session->getPrivateKey( $this->userId ); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); // Set var for reassembling decrypted content $decrypt = ''; // Manually decrypt chunk - foreach ($e as $chunk) { + foreach ( $e as $chunk ) { - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent($chunk, $plainKeyfile); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; } - $this->assertEquals($this->dataLong . $this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong . $this->dataLong, $decrypt ); // Teardown - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); - Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } /** * @brief Test that data that is read by the crypto stream wrapper */ - function testSymmetricStreamDecryptShortFileContent() - { + function testSymmetricStreamDecryptShortFileContent() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->assertTrue(Encryption\Crypt::isEncryptedMeta($filename)); + $this->assertTrue( Encryption\Crypt::isEncryptedMeta( $filename ) ); \OC_FileProxy::$enabled = $proxyStatus; // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); } - function testSymmetricStreamDecryptLongFileContent() - { + function testSymmetricStreamDecryptLongFileContent() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); // tear down - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); } - function testSymmetricEncryptFileContentKeyfile() - { + function testSymmetricEncryptFileContentKeyfile() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->dataUrl); + $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); - $this->assertNotEquals($this->dataUrl, $crypted['encrypted']); + $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted['encrypted'], $crypted['key']); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted['encrypted'], $crypted['key'] ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } - function testIsEncryptedContent() - { + function testIsEncryptedContent() { - $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); - $this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); - $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat'); + $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); - $this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); + $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); } - function testMultiKeyEncrypt() - { + function testMultiKeyEncrypt() { # TODO: search in keyfile for actual content as IV will ensure this test always passes $pair1 = Encryption\Crypt::createKeypair(); - $this->assertEquals(2, count($pair1)); + $this->assertEquals( 2, count( $pair1 ) ); - $this->assertTrue(strlen($pair1['publicKey']) > 1); + $this->assertTrue( strlen( $pair1['publicKey'] ) > 1 ); - $this->assertTrue(strlen($pair1['privateKey']) > 1); + $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); - $crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); + $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); - $this->assertNotEquals($this->dataShort, $crypted['data']); + $this->assertNotEquals( $this->dataShort, $crypted['data'] ); - $decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); + $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); } - function testKeyEncrypt() - { + function testKeyEncrypt() { // Generate keypair $pair1 = Encryption\Crypt::createKeypair(); // Encrypt data - $crypted = Encryption\Crypt::keyEncrypt($this->dataUrl, $pair1['publicKey']); + $crypted = Encryption\Crypt::keyEncrypt( $this->dataUrl, $pair1['publicKey'] ); - $this->assertNotEquals($this->dataUrl, $crypted); + $this->assertNotEquals( $this->dataUrl, $crypted ); // Decrypt data - $decrypt = Encryption\Crypt::keyDecrypt($crypted, $pair1['privateKey']); + $decrypt = Encryption\Crypt::keyDecrypt( $crypted, $pair1['privateKey'] ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptShort() - { + function testLegacyEncryptShort() { - $crypted = Encryption\Crypt::legacyEncrypt($this->dataShort, $this->pass); + $crypted = Encryption\Crypt::legacyEncrypt( $this->dataShort, $this->pass ); - $this->assertNotEquals($this->dataShort, $crypted); + $this->assertNotEquals( $this->dataShort, $crypted ); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -525,24 +512,22 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ - function testLegacyDecryptShort($crypted) - { + function testLegacyDecryptShort( $crypted ) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - $this->assertEquals($this->dataShort, $decrypted); + $this->assertEquals( $this->dataShort, $decrypted ); } /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptLong() - { + function testLegacyEncryptLong() { - $crypted = Encryption\Crypt::legacyEncrypt($this->dataLong, $this->pass); + $crypted = Encryption\Crypt::legacyEncrypt( $this->dataLong, $this->pass ); - $this->assertNotEquals($this->dataLong, $crypted); + $this->assertNotEquals( $this->dataLong, $crypted ); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -555,33 +540,31 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyDecryptLong($crypted) - { + function testLegacyDecryptLong( $crypted ) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - $this->assertEquals($this->dataLong, $decrypted); + $this->assertEquals( $this->dataLong, $decrypted ); - $this->assertFalse(Encryption\Crypt::getBlowfish('')); + $this->assertFalse( Encryption\Crypt::getBlowfish( '' ) ); } /** * @brief test generation of legacy encryption key * @depends testLegacyDecryptShort */ - function testLegacyCreateKey() - { + function testLegacyCreateKey() { // Create encrypted key - $encKey = Encryption\Crypt::legacyCreateKey($this->pass); + $encKey = Encryption\Crypt::legacyCreateKey( $this->pass ); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); + $key = Encryption\Crypt::legacyDecrypt( $encKey, $this->pass ); - $this->assertTrue(is_numeric($key)); + $this->assertTrue( is_numeric( $key ) ); // Check that key is correct length - $this->assertEquals(20, strlen($key)); + $this->assertEquals( 20, strlen( $key ) ); } @@ -589,12 +572,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyKeyRecryptKeyfileEncrypt($crypted) - { + function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array( $this->genPublicKey ), $this->pass, '' ); - $this->assertNotEquals($this->dataLong, $recrypted['data']); + $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); return $recrypted; @@ -603,231 +585,224 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase } - function testRenameFile() - { + function testRenameFile() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->rename($filename, $newFilename); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->rename( $filename, $newFilename ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFilename); + $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFilename); + $view->unlink( $newFilename ); } - function testMoveFileIntoFolder() - { + function testMoveFileIntoFolder() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFolder = '/newfolder' . time(); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->mkdir($newFolder); - $view->rename($filename, $newFolder . '/' . $newFilename); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->mkdir( $newFolder ); + $view->rename( $filename, $newFolder . '/' . $newFilename ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFolder . '/' . $newFilename); + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFolder); + $view->unlink( $newFolder ); } - function testMoveFolder() - { + function testMoveFolder() { - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); $filename = '/tmp-' . time(); $folder = '/folder' . time(); - $view->mkdir($folder); + $view->mkdir( $folder ); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $folder . $filename); + $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFolder = '/newfolder/subfolder' . time(); - $view->mkdir('/newfolder'); + $view->mkdir( '/newfolder' ); - $view->rename($folder, $newFolder); + $view->rename( $folder, $newFolder ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFolder); + $view->unlink( $newFolder ); + $view->unlink( '/newfolder' ); } - function testChangePassphrase() - { - $filename = 'tmp-' . time(); + function testChangePassphrase() { + $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); // change password - \OC_User::setPassword($this->userId, 'test', null); + \OC_User::setPassword( $this->userId, 'test', null ); // relogin $params['uid'] = $this->userId; $params['password'] = 'test'; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $filename); + $newDecrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down // change password back - \OC_User::setPassword($this->userId, $this->pass); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->unlink($filename); + \OC_User::setPassword( $this->userId, $this->pass ); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->unlink( $filename ); } - function testViewFilePutAndGetContents() - { + function testViewFilePutAndGetContents() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // Save long data as encrypted file using stream wrapper - $cryptedFileLong = $view->file_put_contents($filename, $this->dataLong); + $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFileLong)); + $this->assertTrue( is_int( $cryptedFileLong ) ); // Get file decrypted contents - $decryptLong = $view->file_get_contents($filename); + $decryptLong = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataLong, $decryptLong); + $this->assertEquals( $this->dataLong, $decryptLong ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testTouchExistingFile() - { + function testTouchExistingFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $view->touch($filename); + $view->touch( $filename ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testTouchFile() - { + function testTouchFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->touch($filename); + $view->touch( $filename ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testFopenFile() - { + function testFopenFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // Get file decrypted contents - $decrypt = fgets($handle); + $decrypt = fgets( $handle ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } } diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index b1bae673e8..1e7c2bdb40 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -6,14 +6,14 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -33,109 +33,111 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase public $randomKey; public $dataShort; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // disable file proxy by default \OC_FileProxy::$enabled = false; + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + } + + function setUp() { // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); $this->dataShort = 'hats'; - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); - - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + \OC_App::disable( 'files_trashbin' ); } - function tearDown() - { - - \OC_FileProxy::$enabled = true; - \OC_FileProxy::clearProxies(); - + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } } - function testGetPrivateKey() - { + public static function tearDownAfterClass() { + \OC_FileProxy::$enabled = true; + } - $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); + function testGetPrivateKey() { - $privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass); + $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); - $res = openssl_pkey_get_private($privateKey); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass ); - $this->assertTrue(is_resource($res)); + $res = openssl_pkey_get_private( $privateKey ); - $sslInfo = openssl_pkey_get_details($res); + $this->assertTrue( is_resource( $res ) ); - $this->assertArrayHasKey('key', $sslInfo); + $sslInfo = openssl_pkey_get_details( $res ); + + $this->assertArrayHasKey( 'key', $sslInfo ); } - function testGetPublicKey() - { + function testGetPublicKey() { - $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); + $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); - $res = openssl_pkey_get_public($publiceKey); + $res = openssl_pkey_get_public( $publiceKey ); - $this->assertTrue(is_resource($res)); + $this->assertTrue( is_resource( $res ) ); - $sslInfo = openssl_pkey_get_details($res); + $sslInfo = openssl_pkey_get_details( $res ); - $this->assertArrayHasKey('key', $sslInfo); + $this->assertArrayHasKey( 'key', $sslInfo ); } - function testSetFileKey() - { + function testSetFileKey() { # NOTE: This cannot be tested until we are able to break out # of the FileSystemView data directory root - $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat'); + $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); $file = 'unittest-' . time() . '.txt'; @@ -143,101 +145,98 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); + $this->view->file_put_contents( $this->userId . '/files/' . $file, $key['encrypted'] ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); + Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink('/' . $this->userId . '/files/' . $file); + $this->view->unlink( '/' . $this->userId . '/files/' . $file ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; } - function testGetUserKeys() - { + function testGetUserKeys() { - $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); + $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); - $resPublic = openssl_pkey_get_public($keys['publicKey']); + $resPublic = openssl_pkey_get_public( $keys['publicKey'] ); - $this->assertTrue(is_resource($resPublic)); + $this->assertTrue( is_resource( $resPublic ) ); - $sslInfoPublic = openssl_pkey_get_details($resPublic); + $sslInfoPublic = openssl_pkey_get_details( $resPublic ); - $this->assertArrayHasKey('key', $sslInfoPublic); + $this->assertArrayHasKey( 'key', $sslInfoPublic ); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass ); - $resPrivate = openssl_pkey_get_private($privateKey); + $resPrivate = openssl_pkey_get_private( $privateKey ); - $this->assertTrue(is_resource($resPrivate)); + $this->assertTrue( is_resource( $resPrivate ) ); - $sslInfoPrivate = openssl_pkey_get_details($resPrivate); + $sslInfoPrivate = openssl_pkey_get_details( $resPrivate ); - $this->assertArrayHasKey('key', $sslInfoPrivate); + $this->assertArrayHasKey( 'key', $sslInfoPrivate ); } - function testFixPartialFilePath() - { + function testFixPartialFilePath() { $partFilename = 'testfile.txt.part'; $filename = 'testfile.txt'; - $this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename)); + $this->assertTrue( Encryption\Keymanager::isPartialFilePath( $partFilename ) ); - $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename)); + $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $partFilename ) ); - $this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename)); + $this->assertFalse( Encryption\Keymanager::isPartialFilePath( $filename ) ); - $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); + $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $filename ) ); } - function testRecursiveDelShareKeys() - { + function testRecursiveDelShareKeys() { // generate filename $filename = '/tmp-' . time() . '.txt'; // create folder structure - $this->view->mkdir('/admin/files/folder1'); - $this->view->mkdir('/admin/files/folder1/subfolder'); - $this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder'); + $this->view->mkdir( '/admin/files/folder1' ); + $this->view->mkdir( '/admin/files/folder1/subfolder' ); + $this->view->mkdir( '/admin/files/folder1/subfolder/subsubfolder' ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // save file with content - $cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; // recursive delete keys - Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/'); + Encryption\Keymanager::delShareKey( $this->view, array( 'admin' ), '/folder1/' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey' ) ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink('/admin/files/folder1'); + $this->view->unlink( '/admin/files/folder1' ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 1d0cbfbc1d..0131ac88e7 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,15 +20,15 @@ * */ -require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -49,31 +49,18 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase public $subfolder; public $subsubfolder; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); - - $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView('/'); - - $userHome = \OC_User::getHome('admin'); - $this->dataDir = str_replace('/admin', '', $userHome); - - $this->folder1 = '/folder1'; - $this->subfolder = '/subfolder1'; - $this->subsubfolder = '/subsubfolder1'; - - $this->filename = 'share-tmp.test'; + \OC_User::useBackend( 'database' ); // enable resharing - \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + \OC_Appconfig::setValue( 'core', 'shareapi_allow_resharing', 'yes' ); // clear share hooks - \OC_Hook::clear('OCP\\Share'); + \OC_Hook::clear( 'OCP\\Share' ); \OC::registerShareHooks(); - \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + \OCP\Util::connectHook( 'OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup' ); // Sharing related hooks \OCA\Encryption\Helper::registerShareHooks(); @@ -81,170 +68,183 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - - // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); // create users - $this->loginHelper('user1', true); - $this->loginHelper('user2', true); - $this->loginHelper('user3', true); + \Test_Encryption_Share::loginHelper( 'user1', true ); + \Test_Encryption_Share::loginHelper( 'user2', true ); + \Test_Encryption_Share::loginHelper( 'user3', true ); // create group and assign users - \OC_Group::createGroup('group1'); - \OC_Group::addToGroup('user2', 'group1'); - \OC_Group::addToGroup('user3', 'group1'); + \OC_Group::createGroup( 'group1' ); + \OC_Group::addToGroup( 'user2', 'group1' ); + \OC_Group::addToGroup( 'user3', 'group1' ); } - function tearDown() - { - // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); - } else { - OC_App::disable('files_trashbin'); - } + function setUp() { + $this->dataShort = 'hats'; + $this->view = new \OC_FilesystemView( '/' ); + $userHome = \OC_User::getHome( 'admin' ); + $this->dataDir = str_replace( '/admin', '', $userHome ); + + $this->folder1 = '/folder1'; + $this->subfolder = '/subfolder1'; + $this->subsubfolder = '/subsubfolder1'; + + $this->filename = 'share-tmp.test'; + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable( 'files_trashbin' ); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + } + + function tearDown() { + // reset app files_trashbin + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); + } else { + OC_App::disable( 'files_trashbin' ); + } + } + + public static function tearDownAfterClass() { // clean group - \OC_Group::deleteGroup('group1'); + \OC_Group::deleteGroup( 'group1' ); // cleanup users - \OC_User::deleteUser('user1'); - \OC_User::deleteUser('user2'); - \OC_User::deleteUser('user3'); - - \OC_FileProxy::clearProxies(); + \OC_User::deleteUser( 'user1' ); + \OC_User::deleteUser( 'user2' ); + \OC_User::deleteUser( 'user3' ); } /** * @param bool $withTeardown */ - function testShareFile($withTeardown = true) - { + function testShareFile( $withTeardown = true ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } } /** * @param bool $withTeardown */ - function testReShareFile($withTeardown = true) - { - $this->testShareFile(false); + function testReShareFile( $withTeardown = true ) { + $this->testShareFile( false ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get the file info - $fileInfo = $this->view->getFileInfo('/user1/files/Shared/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/user1/files/Shared/' . $this->filename ); // share the file with user2 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); // check if data is the same as previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // unshare the file with user2 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // unshare the file with user1 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } } @@ -252,70 +252,69 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase * @param bool $withTeardown * @return array */ - function testShareFolder($withTeardown = true) - { + function testShareFolder( $withTeardown = true ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // create folder structure - $this->view->mkdir('/admin/files' . $this->folder1); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/admin/files' . $this->folder1 ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfo = $this->view->getFileInfo('/admin/files' . $this->folder1); + $fileInfo = $this->view->getFileInfo( '/admin/files' . $this->folder1 ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the folder with user1 - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the folder with user1 - \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files' . $this->folder1); + $this->view->unlink( '/admin/files' . $this->folder1 ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); } return $fileInfo; @@ -324,467 +323,462 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase /** * @param bool $withTeardown */ - function testReShareFolder($withTeardown = true) - { - $fileInfoFolder1 = $this->testShareFolder(false); + function testReShareFolder( $withTeardown = true ) { + $fileInfoFolder1 = $this->testShareFolder( false ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfoSubFolder = $this->view->getFileInfo('/user1/files/Shared' . $this->folder1 . $this->subfolder); + $fileInfoSubFolder = $this->view->getFileInfo( '/user1/files/Shared' . $this->folder1 . $this->subfolder ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfoSubFolder)); + $this->assertTrue( is_array( $fileInfoSubFolder ) ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file with user2 - \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // get the file info - $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if we have fileInfos - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // share the file with user3 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user3 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); // login as user3 - $this->loginHelper('user3'); + $this->loginHelper( 'user3' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user3/files/Shared/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // unshare the file with user3 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // unshare the folder with user2 - \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + \OCP\Share::unshare( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the folder1 with user1 - \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $this->view->unlink( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); } } - function testPublicShareFile() - { + function testPublicShareFile() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); // check if share key for public exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); // some hacking to simulate public link $GLOBALS['app'] = 'files_sharing'; $GLOBALS['fileOwner'] = 'admin'; - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); // get file contents - $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); + $retrievedCryptedFile = file_get_contents( 'crypt://' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // tear down // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } - function testShareFileWithGroup() - { + function testShareFileWithGroup() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 and user3 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); // login as user1 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } - function testRecoveryFile() - { - \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); - $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + function testRecoveryFile() { + // login as admin + $this->loginHelper( 'admin' ); + + \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); + $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'admin'); + $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'admin' ); // check if recovery password match - $this->assertTrue($util->checkRecoveryPassword('test123')); + $this->assertTrue( $util->checkRecoveryPassword( 'test123' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // create folder structure - $this->view->mkdir('/admin/files' . $this->folder1); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/admin/files' . $this->folder1 ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile1)); - $this->assertTrue(is_int($cryptedFile2)); + $this->assertTrue( is_int( $cryptedFile1 ) ); + $this->assertTrue( is_int( $cryptedFile2 ) ); // check if share key for admin and recovery exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // disable recovery for admin - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); // remove all recovery keys - $util->removeRecoveryKeys('/'); + $util->removeRecoveryKeys( '/' ); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // remove all recovery keys - $util->addRecoveryKeys('/'); + $util->addRecoveryKeys( '/' ); // check if share key for admin and recovery exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); - $this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( '/admin/files/' . $this->folder1 ); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue(\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123')); - $this->assertTrue(\OCA\Encryption\Helper::adminDisableRecovery('test123')); - $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); + $this->assertTrue( \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ) ); + $this->assertTrue( \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ) ); + $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); } - function testRecoveryForUser() - { + function testRecoveryForUser() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); - $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); + $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'user1'); + $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'user1' ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // create folder structure - $this->view->mkdir('/user1/files' . $this->folder1); - $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/user1/files' . $this->folder1 ); + $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile1)); - $this->assertTrue(is_int($cryptedFile2)); + $this->assertTrue( is_int( $cryptedFile1 ) ); + $this->assertTrue( is_int( $cryptedFile2 ) ); // check if share key for user and recovery exists - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // change password - \OC_User::setPassword('user1', 'test', 'test123'); + \OC_User::setPassword( 'user1', 'test', 'test123' ); // login as user1 - $this->loginHelper('user1', false, 'test'); + $this->loginHelper( 'user1', false, 'test' ); // get file contents - $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); - $retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile1 = file_get_contents( 'crypt://' . $this->filename ); + $retrievedCryptedFile2 = file_get_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile1); - $this->assertEquals($this->dataShort, $retrievedCryptedFile2); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile1 ); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile2 ); // cleanup - $this->view->unlink('/user1/files' . $this->folder1); - $this->view->unlink('/user1/files' . $this->filename); + $this->view->unlink( '/user1/files' . $this->folder1 ); + $this->view->unlink( '/user1/files' . $this->filename ); // check if share key for user and recovery exists - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); - \OCA\Encryption\Helper::adminDisableRecovery('test123'); - $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); + \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ); + $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); } - function testFailShareFile() - { + function testFailShareFile() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // break users public key - $this->view->rename('/public-keys/user2.public.key', '/public-keys/user2.public.key_backup'); + $this->view->rename( '/public-keys/user2.public.key', '/public-keys/user2.public.key_backup' ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // break user1 public key - $this->view->rename('/public-keys/user2.public.key_backup', '/public-keys/user2.public.key'); + $this->view->rename( '/public-keys/user2.public.key_backup', '/public-keys/user2.public.key' ); // remove share file - $this->view->unlink('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey'); + $this->view->unlink( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // unshare the file with user1 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); } - /** * @param $user * @param bool $create * @param bool $password */ - function loginHelper($user, $create = false, $password = false) - { - if ($create) { - \OC_User::createUser($user, $user); + public static function loginHelper( $user, $create = false, $password = false ) { + if ( $create ) { + \OC_User::createUser( $user, $user ); } - if ($password === false) { + if ( $password === false ) { $password = $user; } \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($user); - \OC_User::setUserId($user); + \OC_Util::setupFS( $user ); + \OC_User::setUserId( $user ); $params['uid'] = $user; $params['password'] = $password; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); } } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 3765d986e1..59b310c7ac 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -20,13 +20,13 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -46,137 +46,141 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; - function setUp() - { + public static function setUpBeforeClass() { // reset backend - \OC_User::useBackend('database'); + \OC_User::clearBackends(); + \OC_User::useBackend( 'database' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + + } + + function setUp() { // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); - - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + \OC_App::disable( 'files_trashbin' ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } + } + + public static function tearDownAfterClass() { - // clear all proxies - \OC_FileProxy::clearProxies(); } function testStreamOptions() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // check if stream is at position zero - $this->assertEquals(0,ftell($handle)); + $this->assertEquals( 0, ftell( $handle ) ); // set stream options - $this->assertTrue(flock($handle, LOCK_SH)); - $this->assertTrue(flock($handle, LOCK_UN)); + $this->assertTrue( flock( $handle, LOCK_SH ) ); + $this->assertTrue( flock( $handle, LOCK_UN ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetBlocking() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertTrue(stream_set_blocking($handle,1)); + $this->assertTrue( stream_set_blocking( $handle, 1 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetTimeout() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertFalse(stream_set_timeout($handle,1)); + $this->assertFalse( stream_set_timeout( $handle, 1 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetWriteBuffer() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertEquals(0, stream_set_write_buffer($handle,1024)); + $this->assertEquals( 0, stream_set_write_buffer( $handle, 1024 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index cc8709b6f2..1d7cdc60b2 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -20,14 +20,14 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); -require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../files_trashbin/appinfo/app.php' ); use OCA\Encryption; @@ -50,18 +50,45 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase public $subfolder; public $subsubfolder; - function setUp() - { + public static function setUpBeforeClass() { // reset backend - \OC_User::useBackend('database'); + \OC_User::clearBackends(); + \OC_User::useBackend( 'database' ); + \OC_Hook::clear( 'OC_Filesystem' ); + \OC_Hook::clear( 'OC_User' ); + + // trashbin hooks + \OCA\Files_Trashbin\Trashbin::registerHooks(); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + } + + function setUp() { // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; @@ -70,48 +97,24 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $this->subfolder = '/subfolder1'; $this->subsubfolder = '/subsubfolder1'; - \OC_Hook::clear('OC_Filesystem'); - \OC_Hook::clear('OC_User'); - - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - - // trashbin hooks - \OCA\Files_Trashbin\Trashbin::registerHooks(); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); - // we don't want to tests with app files_trashbin enabled - \OC_App::enable('files_trashbin'); - - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + // we want to tests with app files_trashbin enabled + \OC_App::enable( 'files_trashbin' ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } + } + + public static function tearDownAfterClass() { - // clear all proxies - \OC_FileProxy::clearProxies(); } /** @@ -123,49 +126,49 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // delete file - \OC\FIles\Filesystem::unlink($filename); + \OC\FIles\Filesystem::unlink( $filename ); // check if file not exists - $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // get files - $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); + $trashFiles = $this->view->getDirectoryContent( '/admin/files_trashbin/files/' ); $trashFileSuffix = null; // find created file with timestamp - foreach($trashFiles as $file) { - if(strncmp($file['path'], $filename, strlen($filename))) { - $path_parts = pathinfo($file['name']); + foreach ( $trashFiles as $file ) { + if ( strncmp( $file['path'], $filename, strlen( $filename ) ) ) { + $path_parts = pathinfo( $file['name'] ); $trashFileSuffix = $path_parts['extension']; } } // check if we found the file we created - $this->assertNotNull($trashFileSuffix); + $this->assertNotNull( $trashFileSuffix ); // check if key for admin not exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin not exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); // return filename for next test return $filename . '.' . $trashFileSuffix; @@ -176,25 +179,25 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase * * @depends testDeleteFile */ - function testRestoreFile($filename) { + function testRestoreFile( $filename ) { // prepare file information - $path_parts = pathinfo($filename); + $path_parts = pathinfo( $filename ); $trashFileSuffix = $path_parts['extension']; - $timestamp = str_replace('d', '', $trashFileSuffix); - $fileNameWithoutSuffix = str_replace('.'.$trashFileSuffix, '', $filename); + $timestamp = str_replace( 'd', '', $trashFileSuffix ); + $fileNameWithoutSuffix = str_replace( '.' . $trashFileSuffix, '', $filename ); // restore file - $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp)); + $this->assertTrue( \OCA\Files_Trashbin\Trashbin::restore( $filename, $fileNameWithoutSuffix, $timestamp ) ); // check if file exists - $this->assertTrue($this->view->file_exists('/admin/files/' . $fileNameWithoutSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files/' . $fileNameWithoutSuffix ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey' ) ); } /** @@ -206,65 +209,59 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // delete file - \OC\FIles\Filesystem::unlink($filename); + \OC\FIles\Filesystem::unlink( $filename ); // check if file not exists - $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); - // get files - $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); - - $trashFileSuffix = null; // find created file with timestamp - foreach($trashFiles as $file) { - if(strncmp($file['name'], $filename, strlen($filename)) == 0) { - $path_parts = pathinfo($file['name']); - $trashFileSuffix = $path_parts['extension']; - break; - } - } + $query = \OC_DB::prepare( 'SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' + . ' WHERE `id`=?' ); + $result = $query->execute( array( $filename ) )->fetchRow(); - // check if we found the file we created - $this->assertNotNull($trashFileSuffix); + $this->assertTrue( is_array( $result ) ); + + // build suffix + $trashFileSuffix = 'd' . $result['timestamp']; // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); // get timestamp from file - $timestamp = str_replace('d', '', $trashFileSuffix); + $timestamp = str_replace( 'd', '', $trashFileSuffix ); // delete file forever - $this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)); + $this->assertGreaterThan( 0, \OCA\Files_Trashbin\Trashbin::delete( $filename, $timestamp ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index a2be8a4041..af78894da2 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,13 +6,13 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -42,22 +42,21 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase public $legacyEncryptedDataKey; public $lagacyKey; - function setUp() - { + function setUp() { // reset backend - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // set content for encrypting / decrypting in tests - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); $this->dataShort = 'hats'; - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); - $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); $this->lagacyKey = '62829813025828180801'; $keypair = Encryption\Crypt::createKeypair(); @@ -71,132 +70,128 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + // setup filesystem \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::setupFS( $this->userId ); + \OC_User::setUserId( $this->userId ); + // login admin $params['uid'] = $this->userId; $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); - $this->util = new Encryption\Util($this->view, $this->userId); + $this->util = new Encryption\Util( $this->view, $this->userId ); } - function tearDown() - { - + function tearDown() { + // clear and register hooks \OC_FileProxy::clearProxies(); } /** * @brief test that paths set during User construction are correct */ - function testKeyPaths() - { - $util = new Encryption\Util($this->view, $this->userId); + function testKeyPaths() { + $util = new Encryption\Util( $this->view, $this->userId ); - $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); - $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); - $this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath')); - $this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath')); - $this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath')); + $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); + $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); + $this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) ); + $this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) ); + $this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) ); } /** * @brief test setup of encryption directories */ - function testSetupServerSide() - { - $this->assertEquals(true, $this->util->setupServerSide($this->pass)); + function testSetupServerSide() { + $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); } /** * @brief test checking whether account is ready for encryption, */ - function testUserIsReady() - { - $this->assertEquals(true, $this->util->ready()); + function testUserIsReady() { + $this->assertEquals( true, $this->util->ready() ); } /** * @brief test checking whether account is not ready for encryption, */ - function testUserIsNotReady() - { - $this->view->unlink($this->publicKeyDir); + function testUserIsNotReady() { + $this->view->unlink( $this->publicKeyDir ); $params['uid'] = $this->userId; $params['password'] = $this->pass; - $this->assertFalse(OCA\Encryption\Hooks::login($params)); + $this->assertFalse( OCA\Encryption\Hooks::login( $params ) ); - $this->view->unlink($this->privateKeyPath); + $this->view->unlink( $this->privateKeyPath ); } /** * @brief test checking whether account is not ready for encryption, */ - function testIsLagacyUser() - { + function testIsLagacyUser() { $userView = new \OC_FilesystemView( '/' . $this->userId ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); - $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); + $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); \OC_FileProxy::$enabled = $proxyStatus; $params['uid'] = $this->userId; $params['password'] = $this->pass; - $util = new Encryption\Util($this->view, $this->userId); - $util->setMigrationStatus(0); + $util = new Encryption\Util( $this->view, $this->userId ); + $util->setMigrationStatus( 0 ); - $this->assertTrue(OCA\Encryption\Hooks::login($params)); + $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); - $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); } - function testRecoveryEnabledForUser() - { + function testRecoveryEnabledForUser() { - $util = new Encryption\Util($this->view, $this->userId); + $util = new Encryption\Util( $this->view, $this->userId ); // Record the value so we can return it to it's original state later $enabled = $util->recoveryEnabledForUser(); - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); - $this->assertEquals(1, $util->recoveryEnabledForUser()); + $this->assertEquals( 1, $util->recoveryEnabledForUser() ); - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); - $this->assertEquals(0, $util->recoveryEnabledForUser()); + $this->assertEquals( 0, $util->recoveryEnabledForUser() ); // Return the setting to it's previous state - $this->assertTrue($util->setRecoveryForUser($enabled)); + $this->assertTrue( $util->setRecoveryForUser( $enabled ) ); } - function testGetUidAndFilename() - { + function testGetUidAndFilename() { - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $filename = 'tmp-' . time() . '.test'; @@ -204,74 +199,80 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); + $this->view->file_put_contents( $this->userId . '/files/' . $filename, $this->dataShort ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - $util = new Encryption\Util($this->view, $this->userId); + $util = new Encryption\Util( $this->view, $this->userId ); - list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); + list( $fileOwnerUid, $file ) = $util->getUidAndFilename( $filename ); - $this->assertEquals('admin', $fileOwnerUid); + $this->assertEquals( 'admin', $fileOwnerUid ); - $this->assertEquals($file, $filename); + $this->assertEquals( $file, $filename ); + + $this->view->unlink( $this->userId . '/files/' . $filename ); } function testIsSharedPath() { $sharedPath = '/user1/files/Shared/test'; $path = '/user1/files/test'; - $this->assertTrue($this->util->isSharedPath($sharedPath)); + $this->assertTrue( $this->util->isSharedPath( $sharedPath ) ); - $this->assertFalse($this->util->isSharedPath($path)); + $this->assertFalse( $this->util->isSharedPath( $path ) ); } - function testEncryptLagacyFiles() - { - $userView = new \OC_FilesystemView( '/' . $this->userId); + function testEncryptLagacyFiles() { + // login admin + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login( $params ); + + $userView = new \OC_FilesystemView( '/' . $this->userId ); $view = new \OC_FilesystemView( '/' . $this->userId . '/files' ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); - $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); + $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); - $legacyEncryptedData = file_get_contents($this->legacyEncryptedData); - $view->mkdir('/test/'); - $view->mkdir('/test/subtest/'); - $view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData); + $legacyEncryptedData = file_get_contents( $this->legacyEncryptedData ); + $view->mkdir( '/test/' ); + $view->mkdir( '/test/subtest/' ); + $view->file_put_contents( '/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData ); - $fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt'); + $fileInfo = $view->getFileInfo( '/test/subtest/legacy-encrypted-text.txt' ); $fileInfo['encrypted'] = true; - $view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo); + $view->putFileInfo( '/test/subtest/legacy-encrypted-text.txt', $fileInfo ); \OC_FileProxy::$enabled = $proxyStatus; $params['uid'] = $this->userId; $params['password'] = $this->pass; - $util = new Encryption\Util($this->view, $this->userId); - $util->setMigrationStatus(0); + $util = new Encryption\Util( $this->view, $this->userId ); + $util->setMigrationStatus( 0 ); - $this->assertTrue(OCA\Encryption\Hooks::login($params)); + $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); - $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); - $files = $util->findEncFiles('/' . $this->userId . '/files/'); + $files = $util->findEncFiles( '/' . $this->userId . '/files/' ); - $this->assertTrue(is_array($files)); + $this->assertTrue( is_array( $files ) ); $found = false; - foreach($files['encrypted'] as $encryptedFile) { - if($encryptedFile['name'] === 'legacy-encrypted-text.txt') { + foreach ( $files['encrypted'] as $encryptedFile ) { + if ( $encryptedFile['name'] === 'legacy-encrypted-text.txt' ) { $found = true; break; } } - $this->assertTrue($found); + $this->assertTrue( $found ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php index 4b453d0c9d..57848cd273 100755 --- a/apps/files_encryption/tests/webdav.php +++ b/apps/files_encryption/tests/webdav.php @@ -20,13 +20,13 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -46,18 +46,17 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; - function setUp() - { + function setUp() { // reset backend - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; @@ -65,38 +64,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase // init filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + \OC_App::disable( 'files_trashbin' ); // init filesystem for user \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::setupFS( $this->userId ); + \OC_User::setUserId( $this->userId ); // login user $params['uid'] = $this->userId; $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } - // clear all proxies + // clear and register hooks \OC_FileProxy::clearProxies(); } @@ -116,38 +115,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; $_SERVER['CONTENT_TYPE'] = 'application/octet-stream'; $_SERVER['PATH_INFO'] = '/webdav' . $filename; - $_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort); + $_SERVER['CONTENT_LENGTH'] = strlen( $this->dataShort ); // handle webdav request - $this->handleWebdavRequest($this->dataShort); + $this->handleWebdavRequest( $this->dataShort ); // check if file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); // check if key-file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if shareKey-file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey' ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get encrypted file content - $encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename); + $encryptedContent = $this->view->file_get_contents( '/' . $this->userId . '/files' . $filename ); // restore proxy state \OC_FileProxy::$enabled = $proxyStatus; // check if encrypted content is valid - $this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); + $this->assertTrue( Encryption\Crypt::isCatfileContent( $encryptedContent ) ); // get decrypted file contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); // check if file content match with the written content - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // return filename for next test return $filename; @@ -158,7 +157,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @depends testWebdavPUT */ - function testWebdavGET($filename) { + function testWebdavGET( $filename ) { // set server vars $_SERVER['REQUEST_METHOD'] = 'GET'; @@ -170,7 +169,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file content match with the written content - $this->assertEquals($this->dataShort, $content); + $this->assertEquals( $this->dataShort, $content ); // return filename for next test return $filename; @@ -180,7 +179,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * @brief test webdav delete random file * @depends testWebdavGET */ - function testWebdavDELETE($filename) { + function testWebdavDELETE( $filename ) { // set server vars $_SERVER['REQUEST_METHOD'] = 'DELETE'; $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; @@ -191,13 +190,13 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); // check if key-file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key' ) ); // check if shareKey-file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey' ) ); } /** @@ -207,30 +206,30 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @note this init procedure is copied from /apps/files/remote.php */ - function handleWebdavRequest($body = false) { + function handleWebdavRequest( $body = false ) { // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); $requestBackend = new OC_Connector_Sabre_Request(); // Create ownCloud Dir - $publicDir = new OC_Connector_Sabre_Directory(''); + $publicDir = new OC_Connector_Sabre_Directory( '' ); // Fire up server - $server = new Sabre_DAV_Server($publicDir); + $server = new Sabre_DAV_Server( $publicDir ); $server->httpRequest = $requestBackend; - $server->setBaseUri('/remote.php/webdav/'); + $server->setBaseUri( '/remote.php/webdav/' ); // Load plugins - $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); - $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); - $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload - $server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); - $server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); + $server->addPlugin( new Sabre_DAV_Auth_Plugin( $authBackend, 'ownCloud' ) ); + $server->addPlugin( new Sabre_DAV_Locks_Plugin( $lockBackend ) ); + $server->addPlugin( new Sabre_DAV_Browser_Plugin( false ) ); // Show something in the Browser, but no upload + $server->addPlugin( new OC_Connector_Sabre_QuotaPlugin() ); + $server->addPlugin( new OC_Connector_Sabre_MaintenancePlugin() ); // And off we go! - if($body) { - $server->httpRequest->setBody($body); + if ( $body ) { + $server->httpRequest->setBody( $body ); } // turn on output buffering From 9dd277576a87b8876ebf281ba21161fa30645807 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 26 May 2013 20:44:15 +0200 Subject: [PATCH 341/575] added users for tests reformat code to meet coding guidelines --- apps/files_encryption/tests/crypt.php | 459 ++++++------ apps/files_encryption/tests/encryption.key | Bin 24 -> 24 bytes apps/files_encryption/tests/keymanager.php | 135 ++-- .../tests/legacy-encrypted-text.txt | 2 +- apps/files_encryption/tests/share.php | 671 +++++++++++------- apps/files_encryption/tests/stream.php | 114 ++- apps/files_encryption/tests/trashbin.php | 189 +++-- apps/files_encryption/tests/util.php | 271 ++++--- apps/files_encryption/tests/webdav.php | 144 ++-- 9 files changed, 1096 insertions(+), 889 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index b8fbdda400..74b4252a1d 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,23 +7,25 @@ * See the COPYING-README file. */ -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; /** * Class Test_Encryption_Crypt */ -class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_CRYPT_USER1 = "test-crypt-user1"; public $userId; public $pass; @@ -42,7 +44,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); @@ -52,62 +54,53 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); - - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true); } function setUp() { + // set user id + \OC_User::setUserId(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); + $this->userId = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; + $this->pass = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; + // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); - $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView( '/' ); - - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; - - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + $this->view = new \OC_FilesystemView('/'); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); } function testGenerateKey() { @@ -116,7 +109,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $key = Encryption\Crypt::generateKey(); - $this->assertTrue( strlen( $key ) > 16 ); + $this->assertTrue(strlen($key) > 16); } @@ -127,7 +120,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $iv = Encryption\Crypt::generateIv(); - $this->assertEquals( 16, strlen( $iv ) ); + $this->assertEquals(16, strlen($iv)); return $iv; @@ -136,30 +129,31 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testGenerateIv */ - function testConcatIv( $iv ) { + function testConcatIv($iv) { - $catFile = Encryption\Crypt::concatIv( $this->dataLong, $iv ); + $catFile = Encryption\Crypt::concatIv($this->dataLong, $iv); // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); + $meta = substr($catFile, -22); - $identifier = substr( $meta, 0, 6 ); + $identifier = substr($meta, 0, 6); // Fetch IV from end of file - $foundIv = substr( $meta, 6 ); + $foundIv = substr($meta, 6); - $this->assertEquals( '00iv00', $identifier ); + $this->assertEquals('00iv00', $identifier); - $this->assertEquals( $iv, $foundIv ); + $this->assertEquals($iv, $foundIv); // Remove IV and IV identifier text to expose encrypted content - $data = substr( $catFile, 0, -22 ); + $data = substr($catFile, 0, -22); - $this->assertEquals( $this->dataLong, $data ); + $this->assertEquals($this->dataLong, $data); return array( 'iv' => $iv - , 'catfile' => $catFile + , + 'catfile' => $catFile ); } @@ -167,16 +161,16 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testConcatIv */ - function testSplitIv( $testConcatIv ) { + function testSplitIv($testConcatIv) { // Split catfile into components - $splitCatfile = Encryption\Crypt::splitIv( $testConcatIv['catfile'] ); + $splitCatfile = Encryption\Crypt::splitIv($testConcatIv['catfile']); // Check that original IV and split IV match - $this->assertEquals( $testConcatIv['iv'], $splitCatfile['iv'] ); + $this->assertEquals($testConcatIv['iv'], $splitCatfile['iv']); // Check that original data and split data match - $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); + $this->assertEquals($this->dataLong, $splitCatfile['encrypted']); } @@ -185,11 +179,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testAddPadding() { - $padded = Encryption\Crypt::addPadding( $this->dataLong ); + $padded = Encryption\Crypt::addPadding($this->dataLong); - $padding = substr( $padded, -2 ); + $padding = substr($padded, -2); - $this->assertEquals( 'xx', $padding ); + $this->assertEquals('xx', $padding); return $padded; @@ -198,37 +192,37 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testAddPadding */ - function testRemovePadding( $padded ) { + function testRemovePadding($padded) { - $noPadding = Encryption\Crypt::RemovePadding( $padded ); + $noPadding = Encryption\Crypt::RemovePadding($padded); - $this->assertEquals( $this->dataLong, $noPadding ); + $this->assertEquals($this->dataLong, $noPadding); } function testEncrypt() { - $random = openssl_random_pseudo_bytes( 13 ); + $random = openssl_random_pseudo_bytes(13); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); - $this->assertNotEquals( $this->dataUrl, $crypted ); + $this->assertNotEquals($this->dataUrl, $crypted); } function testDecrypt() { - $random = openssl_random_pseudo_bytes( 13 ); + $random = openssl_random_pseudo_bytes(13); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); - $decrypt = Encryption\Crypt::decrypt( $crypted, $iv, 'hat' ); + $decrypt = Encryption\Crypt::decrypt($crypted, $iv, 'hat'); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } @@ -236,14 +230,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContent( $this->dataShort, 'hat' ); + $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); - $this->assertNotEquals( $this->dataShort, $crypted ); + $this->assertNotEquals($this->dataShort, $crypted); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted, 'hat' ); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); } @@ -251,49 +245,49 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.test'; - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); + $this->assertNotEquals($this->dataShort, $retreivedCryptedFile); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); // get session - $session = new Encryption\Session( $this->view ); + $session = new Encryption\Session($this->view); // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent($retreivedCryptedFile, $plainKeyfile); // Check that decrypted data matches - $this->assertEquals( $this->dataShort, $manualDecrypt ); + $this->assertEquals($this->dataShort, $manualDecrypt); // Teardown - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); } /** @@ -308,70 +302,77 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.test'; // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong . $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong . $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataLong . $this->dataLong, $retreivedCryptedFile ); + $this->assertNotEquals($this->dataLong . $this->dataLong, $retreivedCryptedFile); // Manuallly split saved file into separate IVs and encrypted chunks - $r = preg_split( '/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE ); + $r = preg_split('/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE); //print_r($r); // Join IVs and their respective data chunks - $e = array( $r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11] ); //.$r[11], $r[12].$r[13], $r[14] ); + $e = array( + $r[0] . $r[1], + $r[2] . $r[3], + $r[4] . $r[5], + $r[6] . $r[7], + $r[8] . $r[9], + $r[10] . $r[11] + ); //.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); // get session - $session = new Encryption\Session( $this->view ); + $session = new Encryption\Session($this->view); // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // Set var for reassembling decrypted content $decrypt = ''; // Manually decrypt chunk - foreach ( $e as $chunk ) { + foreach ($e as $chunk) { - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent($chunk, $plainKeyfile); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; } - $this->assertEquals( $this->dataLong . $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong . $this->dataLong, $decrypt); // Teardown - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); } @@ -383,26 +384,26 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->assertTrue( Encryption\Crypt::isEncryptedMeta( $filename ) ); + $this->assertTrue(Encryption\Crypt::isEncryptedMeta($filename)); \OC_FileProxy::$enabled = $proxyStatus; // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testSymmetricStreamDecryptLongFileContent() { @@ -410,44 +411,44 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testSymmetricEncryptFileContentKeyfile() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); + $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->dataUrl); - $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); + $this->assertNotEquals($this->dataUrl, $crypted['encrypted']); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted['encrypted'], $crypted['key'] ); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted['encrypted'], $crypted['key']); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } function testIsEncryptedContent() { - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); - $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); + $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat'); - $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); + $this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); } @@ -457,21 +458,21 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $pair1 = Encryption\Crypt::createKeypair(); - $this->assertEquals( 2, count( $pair1 ) ); + $this->assertEquals(2, count($pair1)); - $this->assertTrue( strlen( $pair1['publicKey'] ) > 1 ); + $this->assertTrue(strlen($pair1['publicKey']) > 1); - $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); + $this->assertTrue(strlen($pair1['privateKey']) > 1); - $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); + $crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); - $this->assertNotEquals( $this->dataShort, $crypted['data'] ); + $this->assertNotEquals($this->dataShort, $crypted['data']); - $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); + $decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); } @@ -481,14 +482,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $pair1 = Encryption\Crypt::createKeypair(); // Encrypt data - $crypted = Encryption\Crypt::keyEncrypt( $this->dataUrl, $pair1['publicKey'] ); + $crypted = Encryption\Crypt::keyEncrypt($this->dataUrl, $pair1['publicKey']); - $this->assertNotEquals( $this->dataUrl, $crypted ); + $this->assertNotEquals($this->dataUrl, $crypted); // Decrypt data - $decrypt = Encryption\Crypt::keyDecrypt( $crypted, $pair1['privateKey'] ); + $decrypt = Encryption\Crypt::keyDecrypt($crypted, $pair1['privateKey']); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } @@ -497,9 +498,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testLegacyEncryptShort() { - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataShort, $this->pass ); + $crypted = Encryption\Crypt::legacyEncrypt($this->dataShort, $this->pass); - $this->assertNotEquals( $this->dataShort, $crypted ); + $this->assertNotEquals($this->dataShort, $crypted); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -512,11 +513,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ - function testLegacyDecryptShort( $crypted ) { + function testLegacyDecryptShort($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); - $this->assertEquals( $this->dataShort, $decrypted ); + $this->assertEquals($this->dataShort, $decrypted); } @@ -525,9 +526,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testLegacyEncryptLong() { - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataLong, $this->pass ); + $crypted = Encryption\Crypt::legacyEncrypt($this->dataLong, $this->pass); - $this->assertNotEquals( $this->dataLong, $crypted ); + $this->assertNotEquals($this->dataLong, $crypted); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -540,13 +541,13 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyDecryptLong( $crypted ) { + function testLegacyDecryptLong($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); - $this->assertEquals( $this->dataLong, $decrypted ); + $this->assertEquals($this->dataLong, $decrypted); - $this->assertFalse( Encryption\Crypt::getBlowfish( '' ) ); + $this->assertFalse(Encryption\Crypt::getBlowfish('')); } /** @@ -556,15 +557,15 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase function testLegacyCreateKey() { // Create encrypted key - $encKey = Encryption\Crypt::legacyCreateKey( $this->pass ); + $encKey = Encryption\Crypt::legacyCreateKey($this->pass); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt( $encKey, $this->pass ); + $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); - $this->assertTrue( is_numeric( $key ) ); + $this->assertTrue(is_numeric($key)); // Check that key is correct length - $this->assertEquals( 20, strlen( $key ) ); + $this->assertEquals(20, strlen($key)); } @@ -572,11 +573,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { + function testLegacyKeyRecryptKeyfileEncrypt($crypted) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array( $this->genPublicKey ), $this->pass, '' ); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); - $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); + $this->assertNotEquals($this->dataLong, $recrypted['data']); return $recrypted; @@ -590,27 +591,27 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->rename( $filename, $newFilename ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->rename($filename, $newFilename); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); + $newDecrypt = file_get_contents('crypt://' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFilename ); + $view->unlink($newFilename); } function testMoveFileIntoFolder() { @@ -618,191 +619,191 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFolder = '/newfolder' . time(); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->mkdir( $newFolder ); - $view->rename( $filename, $newFolder . '/' . $newFilename ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->mkdir($newFolder); + $view->rename($filename, $newFolder . '/' . $newFilename); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . '/' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); + $view->unlink($newFolder); } function testMoveFolder() { - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); $filename = '/tmp-' . time(); $folder = '/folder' . time(); - $view->mkdir( $folder ); + $view->mkdir($folder); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + $decrypt = file_get_contents('crypt://' . $folder . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFolder = '/newfolder/subfolder' . time(); - $view->mkdir( '/newfolder' ); + $view->mkdir('/newfolder'); - $view->rename( $folder, $newFolder ); + $view->rename($folder, $newFolder); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); - $view->unlink( '/newfolder' ); + $view->unlink($newFolder); + $view->unlink('/newfolder'); } function testChangePassphrase() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // change password - \OC_User::setPassword( $this->userId, 'test', null ); + \OC_User::setPassword($this->userId, 'test', null); // relogin $params['uid'] = $this->userId; $params['password'] = 'test'; - OCA\Encryption\Hooks::login( $params ); + OCA\Encryption\Hooks::login($params); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $filename ); + $newDecrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down // change password back - \OC_User::setPassword( $this->userId, $this->pass ); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->unlink( $filename ); + \OC_User::setPassword($this->userId, $this->pass); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->unlink($filename); } function testViewFilePutAndGetContents() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // Save long data as encrypted file using stream wrapper - $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); + $cryptedFileLong = $view->file_put_contents($filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFileLong ) ); + $this->assertTrue(is_int($cryptedFileLong)); // Get file decrypted contents - $decryptLong = $view->file_get_contents( $filename ); + $decryptLong = $view->file_get_contents($filename); - $this->assertEquals( $this->dataLong, $decryptLong ); + $this->assertEquals($this->dataLong, $decryptLong); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testTouchExistingFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $view->touch( $filename ); + $view->touch($filename); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testTouchFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->touch( $filename ); + $view->touch($filename); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testFopenFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // Get file decrypted contents - $decrypt = fgets( $handle ); + $decrypt = fgets($handle); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } } diff --git a/apps/files_encryption/tests/encryption.key b/apps/files_encryption/tests/encryption.key index 4495cee78e257cc4ef42add0616a1071ecb43b72..4ee962145c247ee03538aa70a2ff0da216c5c51c 100644 GIT binary patch literal 24 gcmcCzpD}gytdataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); - \OC_User::setUserId( 'admin' ); + \OC_User::setUserId('admin'); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/' . $this->userId, '', $userHome); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } @@ -105,31 +105,31 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase function testGetPrivateKey() { - $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); + $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass ); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass); - $res = openssl_pkey_get_private( $privateKey ); + $res = openssl_pkey_get_private($privateKey); - $this->assertTrue( is_resource( $res ) ); + $this->assertTrue(is_resource($res)); - $sslInfo = openssl_pkey_get_details( $res ); + $sslInfo = openssl_pkey_get_details($res); - $this->assertArrayHasKey( 'key', $sslInfo ); + $this->assertArrayHasKey('key', $sslInfo); } function testGetPublicKey() { - $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); + $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); - $res = openssl_pkey_get_public( $publiceKey ); + $res = openssl_pkey_get_public($publiceKey); - $this->assertTrue( is_resource( $res ) ); + $this->assertTrue(is_resource($res)); - $sslInfo = openssl_pkey_get_details( $res ); + $sslInfo = openssl_pkey_get_details($res); - $this->assertArrayHasKey( 'key', $sslInfo ); + $this->assertArrayHasKey('key', $sslInfo); } function testSetFileKey() { @@ -137,7 +137,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase # NOTE: This cannot be tested until we are able to break out # of the FileSystemView data directory root - $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); + $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat'); $file = 'unittest-' . time() . '.txt'; @@ -145,20 +145,20 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents( $this->userId . '/files/' . $file, $key['encrypted'] ); + $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); + Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink( '/' . $this->userId . '/files/' . $file ); + $this->view->unlink('/' . $this->userId . '/files/' . $file); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; @@ -167,25 +167,25 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase function testGetUserKeys() { - $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); + $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); - $resPublic = openssl_pkey_get_public( $keys['publicKey'] ); + $resPublic = openssl_pkey_get_public($keys['publicKey']); - $this->assertTrue( is_resource( $resPublic ) ); + $this->assertTrue(is_resource($resPublic)); - $sslInfoPublic = openssl_pkey_get_details( $resPublic ); + $sslInfoPublic = openssl_pkey_get_details($resPublic); - $this->assertArrayHasKey( 'key', $sslInfoPublic ); + $this->assertArrayHasKey('key', $sslInfoPublic); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass ); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass); - $resPrivate = openssl_pkey_get_private( $privateKey ); + $resPrivate = openssl_pkey_get_private($privateKey); - $this->assertTrue( is_resource( $resPrivate ) ); + $this->assertTrue(is_resource($resPrivate)); - $sslInfoPrivate = openssl_pkey_get_details( $resPrivate ); + $sslInfoPrivate = openssl_pkey_get_details($resPrivate); - $this->assertArrayHasKey( 'key', $sslInfoPrivate ); + $this->assertArrayHasKey('key', $sslInfoPrivate); } function testFixPartialFilePath() { @@ -193,13 +193,13 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $partFilename = 'testfile.txt.part'; $filename = 'testfile.txt'; - $this->assertTrue( Encryption\Keymanager::isPartialFilePath( $partFilename ) ); + $this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename)); - $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $partFilename ) ); + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename)); - $this->assertFalse( Encryption\Keymanager::isPartialFilePath( $filename ) ); + $this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename)); - $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $filename ) ); + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); } function testRecursiveDelShareKeys() { @@ -208,35 +208,36 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $filename = '/tmp-' . time() . '.txt'; // create folder structure - $this->view->mkdir( '/admin/files/folder1' ); - $this->view->mkdir( '/admin/files/folder1/subfolder' ); - $this->view->mkdir( '/admin/files/folder1/subfolder/subsubfolder' ); + $this->view->mkdir('/admin/files/folder1'); + $this->view->mkdir('/admin/files/folder1/subfolder'); + $this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder'); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // save file with content - $cryptedFile = file_put_contents( 'crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; // recursive delete keys - Encryption\Keymanager::delShareKey( $this->view, array( 'admin' ), '/folder1/' ); + Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/'); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey')); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink( '/admin/files/folder1' ); + $this->view->unlink('/admin/files/folder1'); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/legacy-encrypted-text.txt b/apps/files_encryption/tests/legacy-encrypted-text.txt index d38cb7d1b0..1f5087178c 100644 --- a/apps/files_encryption/tests/legacy-encrypted-text.txt +++ b/apps/files_encryption/tests/legacy-encrypted-text.txt @@ -1 +1 @@ - ߕ t.dS@t9 QJ \ No newline at end of file +5ǡiZgESlF= \ No newline at end of file diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 0131ac88e7..6d92881ceb 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,23 +20,29 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; /** * Class Test_Encryption_Share */ -class Test_Encryption_Share extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_SHARE_USER1 = "test-share-user1"; + const TEST_ENCRYPTION_SHARE_USER2 = "test-share-user2"; + const TEST_ENCRYPTION_SHARE_USER3 = "test-share-user3"; + const TEST_ENCRYPTION_SHARE_USER4 = "test-share-user4"; + const TEST_ENCRYPTION_SHARE_GROUP1 = "test-share-group1"; public $stateFilesTrashbin; public $filename; @@ -52,15 +58,15 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // enable resharing - \OC_Appconfig::setValue( 'core', 'shareapi_allow_resharing', 'yes' ); + \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); // clear share hooks - \OC_Hook::clear( 'OCP\\Share' ); + \OC_Hook::clear('OCP\\Share'); \OC::registerShareHooks(); - \OCP\Util::connectHook( 'OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup' ); + \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); // Sharing related hooks \OCA\Encryption\Helper::registerShareHooks(); @@ -70,25 +76,23 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create users - \Test_Encryption_Share::loginHelper( 'user1', true ); - \Test_Encryption_Share::loginHelper( 'user2', true ); - \Test_Encryption_Share::loginHelper( 'user3', true ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, true); // create group and assign users - \OC_Group::createGroup( 'group1' ); - \OC_Group::addToGroup( 'user2', 'group1' ); - \OC_Group::addToGroup( 'user3', 'group1' ); + \OC_Group::createGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); + \OC_Group::addToGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); + \OC_Group::addToGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); } function setUp() { $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView( '/' ); - - $userHome = \OC_User::getHome( 'admin' ); - $this->dataDir = str_replace( '/admin', '', $userHome ); + $this->view = new \OC_FilesystemView('/'); $this->folder1 = '/folder1'; $this->subfolder = '/subfolder1'; @@ -97,154 +101,176 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->filename = 'share-tmp.test'; // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { // clean group - \OC_Group::deleteGroup( 'group1' ); + \OC_Group::deleteGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // cleanup users - \OC_User::deleteUser( 'user1' ); - \OC_User::deleteUser( 'user2' ); - \OC_User::deleteUser( 'user3' ); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); } /** * @param bool $withTeardown */ - function testShareFile( $withTeardown = true ) { + function testShareFile($withTeardown = true) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } /** * @param bool $withTeardown */ - function testReShareFile( $withTeardown = true ) { - $this->testShareFile( false ); + function testReShareFile($withTeardown = true) { + $this->testShareFile(false); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get the file info - $fileInfo = $this->view->getFileInfo( '/user1/files/Shared/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this->filename); // share the file with user2 - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this->filename); // check if data is the same as previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the file with user2 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // unshare the file with user1 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } @@ -252,69 +278,85 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase * @param bool $withTeardown * @return array */ - function testShareFolder( $withTeardown = true ) { + function testShareFolder($withTeardown = true) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // create folder structure - $this->view->mkdir( '/admin/files' . $this->folder1 ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfo = $this->view->getFileInfo( '/admin/files' . $this->folder1 ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the folder with user1 - \OCP\Share::shareItem( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder with user1 - \OCP\Share::unshare( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files' . $this->folder1 ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } return $fileInfo; @@ -323,462 +365,547 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase /** * @param bool $withTeardown */ - function testReShareFolder( $withTeardown = true ) { - $fileInfoFolder1 = $this->testShareFolder( false ); + function testReShareFolder($withTeardown = true) { + $fileInfoFolder1 = $this->testShareFolder(false); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfoSubFolder = $this->view->getFileInfo( '/user1/files/Shared' . $this->folder1 . $this->subfolder ); + $fileInfoSubFolder = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this->folder1 + . $this->subfolder); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfoSubFolder ) ); + $this->assertTrue(is_array($fileInfoSubFolder)); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file with user2 - \OCP\Share::shareItem( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // get the file info - $fileInfo = $this->view->getFileInfo( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if we have fileInfos - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // share the file with user3 - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user3 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user3 - $this->loginHelper( 'user3' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user3/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '/files/Shared/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // unshare the file with user3 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the folder with user2 - \OCP\Share::unshare( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); + \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder1 with user1 - \OCP\Share::unshare( 'folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } function testPublicShareFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); // check if share key for public exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $publicShareKeyId . '.shareKey')); // some hacking to simulate public link $GLOBALS['app'] = 'files_sharing'; - $GLOBALS['fileOwner'] = 'admin'; - \OC_User::setUserId( '' ); + $GLOBALS['fileOwner'] = \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1; + \OC_User::setUserId(''); // get file contents - $retrievedCryptedFile = file_get_contents( 'crypt://' . $this->filename ); + $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // tear down // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $publicShareKeyId . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } function testShareFileWithGroup() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 and user3 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } function testRecoveryFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); - $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // check if control file created - $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'admin' ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if recovery password match - $this->assertTrue( $util->checkRecoveryPassword( 'test123' ) ); + $this->assertTrue($util->checkRecoveryPassword('test123')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure - $this->view->mkdir( '/admin/files' . $this->folder1 ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); - $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile1 ) ); - $this->assertTrue( is_int( $cryptedFile2 ) ); + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); // check if share key for admin and recovery exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // disable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); // remove all recovery keys - $util->removeRecoveryKeys( '/' ); + $util->removeRecoveryKeys('/'); // check if share key for recovery not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // remove all recovery keys - $util->addRecoveryKeys( '/' ); + $util->addRecoveryKeys('/'); // check if share key for admin and recovery exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); - $this->view->unlink( '/admin/files/' . $this->folder1 ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->folder1); // check if share key for recovery not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue( \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ) ); - $this->assertTrue( \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ) ); - $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); + $this->assertTrue(\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123')); + $this->assertTrue(\OCA\Encryption\Helper::adminDisableRecovery('test123')); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testRecoveryForUser() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); - $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // check if control file created - $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'user1' ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure - $this->view->mkdir( '/user1/files' . $this->folder1 ); - $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); - $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile1 ) ); - $this->assertTrue( is_int( $cryptedFile2 ) ); + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); // check if share key for user and recovery exists - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // change password - \OC_User::setPassword( 'user1', 'test', 'test123' ); + \OC_User::setPassword(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, 'test', 'test123'); // login as user1 - $this->loginHelper( 'user1', false, 'test' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, false, 'test'); // get file contents - $retrievedCryptedFile1 = file_get_contents( 'crypt://' . $this->filename ); - $retrievedCryptedFile2 = file_get_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); + $retrievedCryptedFile2 = file_get_contents( + 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile1 ); - $this->assertEquals( $this->dataShort, $retrievedCryptedFile2 ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile1); + $this->assertEquals($this->dataShort, $retrievedCryptedFile2); // cleanup - $this->view->unlink( '/user1/files' . $this->folder1 ); - $this->view->unlink( '/user1/files' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->filename); // check if share key for user and recovery exists - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); - \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ); - $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); + \OCA\Encryption\Helper::adminDisableRecovery('test123'); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testFailShareFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // break users public key - $this->view->rename( '/public-keys/user2.public.key', '/public-keys/user2.public.key_backup' ); + $this->view->rename('/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key', + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup'); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // break user1 public key - $this->view->rename( '/public-keys/user2.public.key_backup', '/public-keys/user2.public.key' ); + $this->view->rename( + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup', + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key'); // remove share file - $this->view->unlink( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 + . '.shareKey'); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // unshare the file with user1 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); } - - /** - * @param $user - * @param bool $create - * @param bool $password - */ - public static function loginHelper( $user, $create = false, $password = false ) { - if ( $create ) { - \OC_User::createUser( $user, $user ); - } - - if ( $password === false ) { - $password = $user; - } - - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $user ); - \OC_User::setUserId( $user ); - - $params['uid'] = $user; - $params['password'] = $password; - OCA\Encryption\Hooks::login( $params ); - } } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 59b310c7ac..3d97876754 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -20,13 +20,14 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -34,8 +35,9 @@ use OCA\Encryption; * Class Test_Encryption_Stream * @brief this class provide basic stream tests */ -class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1"; public $userId; public $pass; @@ -49,138 +51,130 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); - - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true); } function setUp() { // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); + $this->userId = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; + $this->pass = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); } function testStreamOptions() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // check if stream is at position zero - $this->assertEquals( 0, ftell( $handle ) ); + $this->assertEquals(0, ftell($handle)); // set stream options - $this->assertTrue( flock( $handle, LOCK_SH ) ); - $this->assertTrue( flock( $handle, LOCK_UN ) ); + $this->assertTrue(flock($handle, LOCK_SH)); + $this->assertTrue(flock($handle, LOCK_UN)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetBlocking() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertTrue( stream_set_blocking( $handle, 1 ) ); + $this->assertTrue(stream_set_blocking($handle, 1)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetTimeout() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertFalse( stream_set_timeout( $handle, 1 ) ); + $this->assertFalse(stream_set_timeout($handle, 1)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetWriteBuffer() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertEquals( 0, stream_set_write_buffer( $handle, 1024 ) ); + $this->assertEquals(0, stream_set_write_buffer($handle, 1024)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index 1d7cdc60b2..29f8fb5a39 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -20,14 +20,15 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../files_trashbin/appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -35,8 +36,9 @@ use OCA\Encryption; * Class Test_Encryption_Trashbin * @brief this class provide basic trashbin app tests */ -class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_TRASHBIN_USER1 = "test-trashbin-user1"; public $userId; public $pass; @@ -53,10 +55,10 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); - \OC_Hook::clear( 'OC_Filesystem' ); - \OC_Hook::clear( 'OC_User' ); + \OC_Hook::clear('OC_Filesystem'); + \OC_Hook::clear('OC_User'); // trashbin hooks \OCA\Files_Trashbin\Trashbin::registerHooks(); @@ -66,29 +68,20 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); - - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1, true); } function setUp() { // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); + $this->userId = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; + $this->pass = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; @@ -98,23 +91,25 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $this->subsubfolder = '/subsubfolder1'; // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we want to tests with app files_trashbin enabled - \OC_App::enable( 'files_trashbin' ); + \OC_App::enable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); } /** @@ -126,49 +121,63 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete file - \OC\FIles\Filesystem::unlink( $filename ); + \OC\FIles\Filesystem::unlink($filename); // check if file not exists - $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // get files - $trashFiles = $this->view->getDirectoryContent( '/admin/files_trashbin/files/' ); + $trashFiles = $this->view->getDirectoryContent( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); $trashFileSuffix = null; // find created file with timestamp - foreach ( $trashFiles as $file ) { - if ( strncmp( $file['path'], $filename, strlen( $filename ) ) ) { - $path_parts = pathinfo( $file['name'] ); + foreach ($trashFiles as $file) { + if (strncmp($file['path'], $filename, strlen($filename))) { + $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; } } // check if we found the file we created - $this->assertNotNull( $trashFileSuffix ); + $this->assertNotNull($trashFileSuffix); // check if key for admin not exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin not exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); // return filename for next test return $filename . '.' . $trashFileSuffix; @@ -179,25 +188,30 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase * * @depends testDeleteFile */ - function testRestoreFile( $filename ) { + function testRestoreFile($filename) { // prepare file information - $path_parts = pathinfo( $filename ); + $path_parts = pathinfo($filename); $trashFileSuffix = $path_parts['extension']; - $timestamp = str_replace( 'd', '', $trashFileSuffix ); - $fileNameWithoutSuffix = str_replace( '.' . $trashFileSuffix, '', $filename ); + $timestamp = str_replace('d', '', $trashFileSuffix); + $fileNameWithoutSuffix = str_replace('.' . $trashFileSuffix, '', $filename); // restore file - $this->assertTrue( \OCA\Files_Trashbin\Trashbin::restore( $filename, $fileNameWithoutSuffix, $timestamp ) ); + $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp)); // check if file exists - $this->assertTrue( $this->view->file_exists( '/admin/files/' . $fileNameWithoutSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $fileNameWithoutSuffix)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' + . $fileNameWithoutSuffix . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $fileNameWithoutSuffix . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); } /** @@ -209,59 +223,78 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete file - \OC\FIles\Filesystem::unlink( $filename ); + \OC\FIles\Filesystem::unlink($filename); // check if file not exists - $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // find created file with timestamp - $query = \OC_DB::prepare( 'SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' - . ' WHERE `id`=?' ); - $result = $query->execute( array( $filename ) )->fetchRow(); + $query = \OC_DB::prepare('SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' + . ' WHERE `id`=?'); + $result = $query->execute(array($filename))->fetchRow(); - $this->assertTrue( is_array( $result ) ); + $this->assertTrue(is_array($result)); // build suffix $trashFileSuffix = 'd' . $result['timestamp']; // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); // get timestamp from file - $timestamp = str_replace( 'd', '', $trashFileSuffix ); + $timestamp = str_replace('d', '', $trashFileSuffix); // delete file forever - $this->assertGreaterThan( 0, \OCA\Files_Trashbin\Trashbin::delete( $filename, $timestamp ) ); + $this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/' . $filename . '.' + . $trashFileSuffix)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index af78894da2..2069cae27e 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,21 +6,23 @@ * See the COPYING-README file. */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Util */ -class Test_Encryption_Util extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_UTIL_USER1 = "test-util-user1"; + const TEST_ENCRYPTION_UTIL_LEGACY_USER = "test-legacy-user"; public $userId; public $encryptionDir; @@ -40,24 +42,40 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase public $dataShort; public $legacyEncryptedData; public $legacyEncryptedDataKey; - public $lagacyKey; + public $legacyKey; + public $stateFilesTrashbin; + + public static function setUpBeforeClass() { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER, true); + } + function setUp() { - // reset backend - \OC_User::useBackend( 'database' ); - - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + $this->userId = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; + $this->pass = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; // set content for encrypting / decrypting in tests - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); $this->dataShort = 'hats'; - $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); - $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); - $this->lagacyKey = '62829813025828180801'; + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->legacyKey = '30943623843030686906'; $keypair = Encryption\Crypt::createKeypair(); @@ -67,52 +85,49 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + $this->util = new Encryption\Util($this->view, $this->userId); - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - // clear and register hooks - \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $this->userId ); - \OC_User::setUserId( $this->userId ); - - // login admin - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); - - $this->util = new Encryption\Util( $this->view, $this->userId ); + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); } function tearDown() { - // clear and register hooks - \OC_FileProxy::clearProxies(); + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); + } + } + + public static function tearDownAfterClass() { + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); } /** * @brief test that paths set during User construction are correct */ function testKeyPaths() { - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); - $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); - $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); - $this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) ); - $this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) ); - $this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) ); + $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); + $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); + $this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath')); + $this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath')); + $this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath')); } @@ -120,78 +135,80 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase * @brief test setup of encryption directories */ function testSetupServerSide() { - $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); + $this->assertEquals(true, $this->util->setupServerSide($this->pass)); } /** * @brief test checking whether account is ready for encryption, */ function testUserIsReady() { - $this->assertEquals( true, $this->util->ready() ); + $this->assertEquals(true, $this->util->ready()); } /** * @brief test checking whether account is not ready for encryption, */ - function testUserIsNotReady() { - $this->view->unlink( $this->publicKeyDir ); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - $this->assertFalse( OCA\Encryption\Hooks::login( $params ) ); - - $this->view->unlink( $this->privateKeyPath ); - } +// function testUserIsNotReady() { +// $this->view->unlink($this->publicKeyDir); +// +// $params['uid'] = $this->userId; +// $params['password'] = $this->pass; +// $this->assertFalse(OCA\Encryption\Hooks::login($params)); +// +// $this->view->unlink($this->privateKeyPath); +// } /** * @brief test checking whether account is not ready for encryption, */ - function testIsLagacyUser() { - $userView = new \OC_FilesystemView( '/' . $this->userId ); + function testIsLegacyUser() { + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + + $userView = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); - $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); \OC_FileProxy::$enabled = $proxyStatus; - $params['uid'] = $this->userId; - $params['password'] = $this->pass; + $params['uid'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; + $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; - $util = new Encryption\Util( $this->view, $this->userId ); - $util->setMigrationStatus( 0 ); + $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $util->setMigrationStatus(0); - $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); + $this->assertTrue(OCA\Encryption\Hooks::login($params)); - $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); + $this->assertEquals($this->legacyKey, $_SESSION['legacyKey']); } function testRecoveryEnabledForUser() { - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); // Record the value so we can return it to it's original state later $enabled = $util->recoveryEnabledForUser(); - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); - $this->assertEquals( 1, $util->recoveryEnabledForUser() ); + $this->assertEquals(1, $util->recoveryEnabledForUser()); - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); - $this->assertEquals( 0, $util->recoveryEnabledForUser() ); + $this->assertEquals(0, $util->recoveryEnabledForUser()); // Return the setting to it's previous state - $this->assertTrue( $util->setRecoveryForUser( $enabled ) ); + $this->assertTrue($util->setRecoveryForUser($enabled)); } function testGetUidAndFilename() { - \OC_User::setUserId( 'admin' ); + \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); $filename = 'tmp-' . time() . '.test'; @@ -199,80 +216,102 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents( $this->userId . '/files/' . $filename, $this->dataShort ); + $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); - list( $fileOwnerUid, $file ) = $util->getUidAndFilename( $filename ); + list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); - $this->assertEquals( 'admin', $fileOwnerUid ); + $this->assertEquals(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, $fileOwnerUid); - $this->assertEquals( $file, $filename ); + $this->assertEquals($file, $filename); - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testIsSharedPath() { $sharedPath = '/user1/files/Shared/test'; $path = '/user1/files/test'; - $this->assertTrue( $this->util->isSharedPath( $sharedPath ) ); + $this->assertTrue($this->util->isSharedPath($sharedPath)); - $this->assertFalse( $this->util->isSharedPath( $path ) ); + $this->assertFalse($this->util->isSharedPath($path)); } - function testEncryptLagacyFiles() { - // login admin - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); + function testEncryptLegacyFiles() { + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); - $userView = new \OC_FilesystemView( '/' . $this->userId ); - $view = new \OC_FilesystemView( '/' . $this->userId . '/files' ); + $userView = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $view = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER . '/files'); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); - $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); - $legacyEncryptedData = file_get_contents( $this->legacyEncryptedData ); - $view->mkdir( '/test/' ); - $view->mkdir( '/test/subtest/' ); - $view->file_put_contents( '/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData ); + $legacyEncryptedData = file_get_contents($this->legacyEncryptedData); + $view->mkdir('/test/'); + $view->mkdir('/test/subtest/'); + $view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData); - $fileInfo = $view->getFileInfo( '/test/subtest/legacy-encrypted-text.txt' ); + $fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt'); $fileInfo['encrypted'] = true; - $view->putFileInfo( '/test/subtest/legacy-encrypted-text.txt', $fileInfo ); + $view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo); \OC_FileProxy::$enabled = $proxyStatus; - $params['uid'] = $this->userId; - $params['password'] = $this->pass; + $params['uid'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; + $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; - $util = new Encryption\Util( $this->view, $this->userId ); - $util->setMigrationStatus( 0 ); + $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $util->setMigrationStatus(0); - $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); + $this->assertTrue(OCA\Encryption\Hooks::login($params)); - $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); + $this->assertEquals($this->legacyKey, $_SESSION['legacyKey']); - $files = $util->findEncFiles( '/' . $this->userId . '/files/' ); + $files = $util->findEncFiles('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER . '/files/'); - $this->assertTrue( is_array( $files ) ); + $this->assertTrue(is_array($files)); $found = false; - foreach ( $files['encrypted'] as $encryptedFile ) { - if ( $encryptedFile['name'] === 'legacy-encrypted-text.txt' ) { + foreach ($files['encrypted'] as $encryptedFile) { + if ($encryptedFile['name'] === 'legacy-encrypted-text.txt') { $found = true; break; } } - $this->assertTrue( $found ); + $this->assertTrue($found); + } + + /** + * @param $user + * @param bool $create + * @param bool $password + */ + public static function loginHelper($user, $create = false, $password = false) { + if ($create) { + \OC_User::createUser($user, $user); + } + + if ($password === false) { + $password = $user; + } + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($user); + \OC_User::setUserId($user); + + $params['uid'] = $user; + $params['password'] = $password; + OCA\Encryption\Hooks::login($params); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php index 57848cd273..94d3ec3fa5 100755 --- a/apps/files_encryption/tests/webdav.php +++ b/apps/files_encryption/tests/webdav.php @@ -20,13 +20,14 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -34,8 +35,9 @@ use OCA\Encryption; * Class Test_Encryption_Webdav * @brief this class provide basic webdav tests for PUT,GET and DELETE */ -class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1"; public $userId; public $pass; @@ -46,57 +48,63 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; + public static function setUpBeforeClass() { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerUserHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1, true); + } + function setUp() { // reset backend - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); + $this->userId = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; + $this->pass = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // clear and register hooks - \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $this->userId ); - \OC_User::setUserId( $this->userId ); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); } + else { + OC_App::disable('files_trashbin'); + } + } - // clear and register hooks - \OC_FileProxy::clearProxies(); + public static function tearDownAfterClass() { + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); } /** @@ -115,38 +123,40 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; $_SERVER['CONTENT_TYPE'] = 'application/octet-stream'; $_SERVER['PATH_INFO'] = '/webdav' . $filename; - $_SERVER['CONTENT_LENGTH'] = strlen( $this->dataShort ); + $_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort); // handle webdav request - $this->handleWebdavRequest( $this->dataShort ); + $this->handleWebdavRequest($this->dataShort); // check if file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); + $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename)); // check if key-file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key')); // check if shareKey-file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey')); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get encrypted file content - $encryptedContent = $this->view->file_get_contents( '/' . $this->userId . '/files' . $filename ); + $encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename); // restore proxy state \OC_FileProxy::$enabled = $proxyStatus; // check if encrypted content is valid - $this->assertTrue( Encryption\Crypt::isCatfileContent( $encryptedContent ) ); + $this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); // get decrypted file contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); // check if file content match with the written content - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // return filename for next test return $filename; @@ -157,7 +167,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @depends testWebdavPUT */ - function testWebdavGET( $filename ) { + function testWebdavGET($filename) { // set server vars $_SERVER['REQUEST_METHOD'] = 'GET'; @@ -169,7 +179,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file content match with the written content - $this->assertEquals( $this->dataShort, $content ); + $this->assertEquals($this->dataShort, $content); // return filename for next test return $filename; @@ -179,7 +189,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * @brief test webdav delete random file * @depends testWebdavGET */ - function testWebdavDELETE( $filename ) { + function testWebdavDELETE($filename) { // set server vars $_SERVER['REQUEST_METHOD'] = 'DELETE'; $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; @@ -190,13 +200,15 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); + $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename)); // check if key-file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key')); // check if shareKey-file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey')); } /** @@ -206,30 +218,30 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @note this init procedure is copied from /apps/files/remote.php */ - function handleWebdavRequest( $body = false ) { + function handleWebdavRequest($body = false) { // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); $requestBackend = new OC_Connector_Sabre_Request(); // Create ownCloud Dir - $publicDir = new OC_Connector_Sabre_Directory( '' ); + $publicDir = new OC_Connector_Sabre_Directory(''); // Fire up server - $server = new Sabre_DAV_Server( $publicDir ); + $server = new Sabre_DAV_Server($publicDir); $server->httpRequest = $requestBackend; - $server->setBaseUri( '/remote.php/webdav/' ); + $server->setBaseUri('/remote.php/webdav/'); // Load plugins - $server->addPlugin( new Sabre_DAV_Auth_Plugin( $authBackend, 'ownCloud' ) ); - $server->addPlugin( new Sabre_DAV_Locks_Plugin( $lockBackend ) ); - $server->addPlugin( new Sabre_DAV_Browser_Plugin( false ) ); // Show something in the Browser, but no upload - $server->addPlugin( new OC_Connector_Sabre_QuotaPlugin() ); - $server->addPlugin( new OC_Connector_Sabre_MaintenancePlugin() ); + $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); + $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); + $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload + $server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); + $server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); // And off we go! - if ( $body ) { - $server->httpRequest->setBody( $body ); + if ($body) { + $server->httpRequest->setBody($body); } // turn on output buffering From 73e0b4c10a26316e9ae085f8fcf6a4e3a2a85384 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Mon, 27 May 2013 02:07:24 +0200 Subject: [PATCH 342/575] [tx-robot] updated from transifex --- apps/files_encryption/l10n/gl.php | 8 +++++- apps/files_encryption/l10n/ja_JP.php | 1 + apps/files_encryption/l10n/pt_BR.php | 18 ++++++++++++- l10n/af_ZA/core.po | 4 +-- l10n/af_ZA/lib.po | 4 +-- l10n/ar/core.po | 4 +-- l10n/ar/files.po | 4 +-- l10n/ar/files_external.po | 4 +-- l10n/ar/files_sharing.po | 4 +-- l10n/ar/files_trashbin.po | 4 +-- l10n/ar/lib.po | 4 +-- l10n/ar/settings.po | 4 +-- l10n/ar/user_ldap.po | 4 +-- l10n/bg_BG/core.po | 4 +-- l10n/bg_BG/files.po | 4 +-- l10n/bg_BG/files_external.po | 4 +-- l10n/bg_BG/files_sharing.po | 4 +-- l10n/bg_BG/files_trashbin.po | 4 +-- l10n/bg_BG/lib.po | 4 +-- l10n/bg_BG/settings.po | 4 +-- l10n/bg_BG/user_ldap.po | 4 +-- l10n/bn_BD/core.po | 4 +-- l10n/bn_BD/files.po | 4 +-- l10n/bn_BD/files_external.po | 4 +-- l10n/bn_BD/files_sharing.po | 4 +-- l10n/bn_BD/files_trashbin.po | 4 +-- l10n/bn_BD/lib.po | 4 +-- l10n/bn_BD/settings.po | 4 +-- l10n/bn_BD/user_ldap.po | 4 +-- l10n/ca/core.po | 4 +-- l10n/ca/files.po | 4 +-- l10n/ca/files_external.po | 4 +-- l10n/ca/files_sharing.po | 4 +-- l10n/ca/files_trashbin.po | 4 +-- l10n/ca/lib.po | 4 +-- l10n/ca/settings.po | 4 +-- l10n/ca/user_ldap.po | 4 +-- l10n/cs_CZ/core.po | 4 +-- l10n/cs_CZ/files.po | 4 +-- l10n/cs_CZ/files_external.po | 4 +-- l10n/cs_CZ/files_sharing.po | 4 +-- l10n/cs_CZ/files_trashbin.po | 4 +-- l10n/cs_CZ/lib.po | 4 +-- l10n/cs_CZ/settings.po | 4 +-- l10n/cs_CZ/user_ldap.po | 4 +-- l10n/cy_GB/core.po | 4 +-- l10n/cy_GB/files.po | 4 +-- l10n/cy_GB/files_external.po | 4 +-- l10n/cy_GB/files_sharing.po | 4 +-- l10n/cy_GB/files_trashbin.po | 4 +-- l10n/cy_GB/lib.po | 4 +-- l10n/cy_GB/settings.po | 4 +-- l10n/cy_GB/user_ldap.po | 4 +-- l10n/da/core.po | 4 +-- l10n/da/files.po | 4 +-- l10n/da/files_external.po | 4 +-- l10n/da/files_sharing.po | 4 +-- l10n/da/files_trashbin.po | 4 +-- l10n/da/lib.po | 4 +-- l10n/da/settings.po | 4 +-- l10n/da/user_ldap.po | 4 +-- l10n/de/core.po | 4 +-- l10n/de/files.po | 4 +-- l10n/de/files_external.po | 4 +-- l10n/de/files_sharing.po | 4 +-- l10n/de/files_trashbin.po | 4 +-- l10n/de/lib.po | 4 +-- l10n/de/settings.po | 4 +-- l10n/de/user_ldap.po | 4 +-- l10n/de_DE/core.po | 4 +-- l10n/de_DE/files.po | 4 +-- l10n/de_DE/files_external.po | 4 +-- l10n/de_DE/files_sharing.po | 4 +-- l10n/de_DE/files_trashbin.po | 4 +-- l10n/de_DE/lib.po | 4 +-- l10n/de_DE/settings.po | 4 +-- l10n/de_DE/user_ldap.po | 4 +-- l10n/el/core.po | 4 +-- l10n/el/files.po | 4 +-- l10n/el/files_external.po | 4 +-- l10n/el/files_sharing.po | 4 +-- l10n/el/files_trashbin.po | 4 +-- l10n/el/lib.po | 4 +-- l10n/el/settings.po | 4 +-- l10n/el/user_ldap.po | 4 +-- l10n/en@pirate/files.po | 4 +-- l10n/en@pirate/files_sharing.po | 4 +-- l10n/eo/core.po | 4 +-- l10n/eo/files.po | 4 +-- l10n/eo/files_external.po | 4 +-- l10n/eo/files_sharing.po | 4 +-- l10n/eo/files_trashbin.po | 4 +-- l10n/eo/lib.po | 4 +-- l10n/eo/settings.po | 4 +-- l10n/eo/user_ldap.po | 4 +-- l10n/es/core.po | 4 +-- l10n/es/files.po | 4 +-- l10n/es/files_external.po | 4 +-- l10n/es/files_sharing.po | 4 +-- l10n/es/files_trashbin.po | 4 +-- l10n/es/lib.po | 4 +-- l10n/es/settings.po | 4 +-- l10n/es/user_ldap.po | 4 +-- l10n/es_AR/core.po | 4 +-- l10n/es_AR/files.po | 4 +-- l10n/es_AR/files_external.po | 4 +-- l10n/es_AR/files_sharing.po | 4 +-- l10n/es_AR/files_trashbin.po | 4 +-- l10n/es_AR/lib.po | 4 +-- l10n/es_AR/settings.po | 4 +-- l10n/es_AR/user_ldap.po | 4 +-- l10n/et_EE/core.po | 4 +-- l10n/et_EE/files.po | 4 +-- l10n/et_EE/files_external.po | 4 +-- l10n/et_EE/files_sharing.po | 4 +-- l10n/et_EE/files_trashbin.po | 4 +-- l10n/et_EE/lib.po | 4 +-- l10n/et_EE/settings.po | 4 +-- l10n/et_EE/user_ldap.po | 4 +-- l10n/eu/core.po | 4 +-- l10n/eu/files.po | 4 +-- l10n/eu/files_external.po | 4 +-- l10n/eu/files_sharing.po | 4 +-- l10n/eu/files_trashbin.po | 4 +-- l10n/eu/lib.po | 4 +-- l10n/eu/settings.po | 4 +-- l10n/eu/user_ldap.po | 4 +-- l10n/fa/core.po | 4 +-- l10n/fa/files.po | 4 +-- l10n/fa/files_external.po | 4 +-- l10n/fa/files_sharing.po | 4 +-- l10n/fa/files_trashbin.po | 4 +-- l10n/fa/lib.po | 4 +-- l10n/fa/settings.po | 4 +-- l10n/fa/user_ldap.po | 4 +-- l10n/fi/core.po | 4 +-- l10n/fi/files.po | 4 +-- l10n/fi/lib.po | 4 +-- l10n/fi_FI/core.po | 4 +-- l10n/fi_FI/files.po | 4 +-- l10n/fi_FI/files_external.po | 4 +-- l10n/fi_FI/files_sharing.po | 4 +-- l10n/fi_FI/files_trashbin.po | 4 +-- l10n/fi_FI/lib.po | 4 +-- l10n/fi_FI/settings.po | 4 +-- l10n/fi_FI/user_ldap.po | 4 +-- l10n/fr/core.po | 4 +-- l10n/fr/files.po | 4 +-- l10n/fr/files_external.po | 4 +-- l10n/fr/files_sharing.po | 4 +-- l10n/fr/files_trashbin.po | 4 +-- l10n/fr/lib.po | 4 +-- l10n/fr/settings.po | 4 +-- l10n/fr/user_ldap.po | 4 +-- l10n/gl/core.po | 4 +-- l10n/gl/files.po | 4 +-- l10n/gl/files_encryption.po | 18 +++++++------ l10n/gl/files_external.po | 4 +-- l10n/gl/files_sharing.po | 4 +-- l10n/gl/files_trashbin.po | 4 +-- l10n/gl/lib.po | 4 +-- l10n/gl/settings.po | 4 +-- l10n/gl/user_ldap.po | 4 +-- l10n/he/core.po | 4 +-- l10n/he/files.po | 4 +-- l10n/he/files_external.po | 4 +-- l10n/he/files_sharing.po | 4 +-- l10n/he/files_trashbin.po | 4 +-- l10n/he/lib.po | 4 +-- l10n/he/settings.po | 4 +-- l10n/he/user_ldap.po | 4 +-- l10n/hi/core.po | 4 +-- l10n/hi/lib.po | 4 +-- l10n/hr/core.po | 4 +-- l10n/hr/files.po | 4 +-- l10n/hr/files_external.po | 4 +-- l10n/hr/files_sharing.po | 4 +-- l10n/hr/files_trashbin.po | 4 +-- l10n/hr/lib.po | 4 +-- l10n/hr/settings.po | 4 +-- l10n/hr/user_ldap.po | 4 +-- l10n/hu_HU/core.po | 4 +-- l10n/hu_HU/files.po | 4 +-- l10n/hu_HU/files_external.po | 4 +-- l10n/hu_HU/files_sharing.po | 4 +-- l10n/hu_HU/files_trashbin.po | 4 +-- l10n/hu_HU/lib.po | 4 +-- l10n/hu_HU/settings.po | 4 +-- l10n/hu_HU/user_ldap.po | 4 +-- l10n/hy/files.po | 4 +-- l10n/hy/files_external.po | 2 +- l10n/hy/files_sharing.po | 2 +- l10n/hy/files_trashbin.po | 2 +- l10n/hy/settings.po | 4 +-- l10n/ia/core.po | 4 +-- l10n/ia/files.po | 4 +-- l10n/ia/files_external.po | 4 +-- l10n/ia/files_sharing.po | 4 +-- l10n/ia/files_trashbin.po | 4 +-- l10n/ia/lib.po | 4 +-- l10n/ia/settings.po | 4 +-- l10n/ia/user_ldap.po | 4 +-- l10n/id/core.po | 4 +-- l10n/id/files.po | 4 +-- l10n/id/files_external.po | 4 +-- l10n/id/files_sharing.po | 4 +-- l10n/id/files_trashbin.po | 4 +-- l10n/id/lib.po | 4 +-- l10n/id/settings.po | 4 +-- l10n/id/user_ldap.po | 4 +-- l10n/is/core.po | 4 +-- l10n/is/files.po | 4 +-- l10n/is/files_external.po | 4 +-- l10n/is/files_sharing.po | 4 +-- l10n/is/files_trashbin.po | 4 +-- l10n/is/lib.po | 4 +-- l10n/is/settings.po | 4 +-- l10n/is/user_ldap.po | 4 +-- l10n/it/core.po | 4 +-- l10n/it/files.po | 4 +-- l10n/it/files_external.po | 4 +-- l10n/it/files_sharing.po | 4 +-- l10n/it/files_trashbin.po | 4 +-- l10n/it/lib.po | 4 +-- l10n/it/settings.po | 4 +-- l10n/it/user_ldap.po | 4 +-- l10n/ja_JP/core.po | 4 +-- l10n/ja_JP/files.po | 4 +-- l10n/ja_JP/files_encryption.po | 6 ++--- l10n/ja_JP/files_external.po | 4 +-- l10n/ja_JP/files_sharing.po | 4 +-- l10n/ja_JP/files_trashbin.po | 4 +-- l10n/ja_JP/lib.po | 9 ++++--- l10n/ja_JP/settings.po | 9 ++++--- l10n/ja_JP/user_ldap.po | 4 +-- l10n/ka/files.po | 4 +-- l10n/ka/files_sharing.po | 4 +-- l10n/ka_GE/core.po | 4 +-- l10n/ka_GE/files.po | 4 +-- l10n/ka_GE/files_external.po | 4 +-- l10n/ka_GE/files_sharing.po | 4 +-- l10n/ka_GE/files_trashbin.po | 4 +-- l10n/ka_GE/lib.po | 4 +-- l10n/ka_GE/settings.po | 4 +-- l10n/ka_GE/user_ldap.po | 4 +-- l10n/ko/core.po | 4 +-- l10n/ko/files.po | 4 +-- l10n/ko/files_external.po | 4 +-- l10n/ko/files_sharing.po | 4 +-- l10n/ko/files_trashbin.po | 4 +-- l10n/ko/lib.po | 4 +-- l10n/ko/settings.po | 4 +-- l10n/ko/user_ldap.po | 4 +-- l10n/ku_IQ/core.po | 4 +-- l10n/ku_IQ/files.po | 4 +-- l10n/ku_IQ/files_sharing.po | 4 +-- l10n/ku_IQ/files_trashbin.po | 4 +-- l10n/ku_IQ/lib.po | 4 +-- l10n/ku_IQ/settings.po | 4 +-- l10n/ku_IQ/user_ldap.po | 4 +-- l10n/lb/core.po | 4 +-- l10n/lb/files.po | 4 +-- l10n/lb/files_external.po | 4 +-- l10n/lb/files_sharing.po | 4 +-- l10n/lb/files_trashbin.po | 4 +-- l10n/lb/lib.po | 4 +-- l10n/lb/settings.po | 4 +-- l10n/lb/user_ldap.po | 4 +-- l10n/lt_LT/core.po | 4 +-- l10n/lt_LT/files.po | 4 +-- l10n/lt_LT/files_external.po | 4 +-- l10n/lt_LT/files_sharing.po | 4 +-- l10n/lt_LT/files_trashbin.po | 4 +-- l10n/lt_LT/lib.po | 4 +-- l10n/lt_LT/settings.po | 4 +-- l10n/lt_LT/user_ldap.po | 4 +-- l10n/lv/core.po | 4 +-- l10n/lv/files.po | 4 +-- l10n/lv/files_external.po | 4 +-- l10n/lv/files_sharing.po | 4 +-- l10n/lv/files_trashbin.po | 4 +-- l10n/lv/lib.po | 4 +-- l10n/lv/settings.po | 4 +-- l10n/lv/user_ldap.po | 4 +-- l10n/mk/core.po | 4 +-- l10n/mk/files.po | 4 +-- l10n/mk/files_external.po | 4 +-- l10n/mk/files_sharing.po | 4 +-- l10n/mk/files_trashbin.po | 4 +-- l10n/mk/lib.po | 4 +-- l10n/mk/settings.po | 4 +-- l10n/mk/user_ldap.po | 4 +-- l10n/ms_MY/core.po | 4 +-- l10n/ms_MY/files.po | 4 +-- l10n/ms_MY/files_external.po | 4 +-- l10n/ms_MY/files_sharing.po | 4 +-- l10n/ms_MY/files_trashbin.po | 4 +-- l10n/ms_MY/lib.po | 4 +-- l10n/ms_MY/settings.po | 4 +-- l10n/ms_MY/user_ldap.po | 4 +-- l10n/my_MM/core.po | 4 +-- l10n/my_MM/files.po | 4 +-- l10n/my_MM/files_sharing.po | 4 +-- l10n/my_MM/lib.po | 4 +-- l10n/nb_NO/core.po | 4 +-- l10n/nb_NO/files.po | 4 +-- l10n/nb_NO/files_external.po | 4 +-- l10n/nb_NO/files_sharing.po | 4 +-- l10n/nb_NO/files_trashbin.po | 4 +-- l10n/nb_NO/lib.po | 4 +-- l10n/nb_NO/settings.po | 4 +-- l10n/nb_NO/user_ldap.po | 4 +-- l10n/nl/core.po | 4 +-- l10n/nl/files.po | 4 +-- l10n/nl/files_external.po | 4 +-- l10n/nl/files_sharing.po | 4 +-- l10n/nl/files_trashbin.po | 4 +-- l10n/nl/lib.po | 4 +-- l10n/nl/settings.po | 4 +-- l10n/nl/user_ldap.po | 4 +-- l10n/nn_NO/core.po | 4 +-- l10n/nn_NO/files.po | 4 +-- l10n/nn_NO/files_external.po | 4 +-- l10n/nn_NO/files_sharing.po | 4 +-- l10n/nn_NO/files_trashbin.po | 4 +-- l10n/nn_NO/lib.po | 4 +-- l10n/nn_NO/settings.po | 4 +-- l10n/nn_NO/user_ldap.po | 4 +-- l10n/oc/core.po | 4 +-- l10n/oc/files.po | 4 +-- l10n/oc/files_external.po | 4 +-- l10n/oc/files_sharing.po | 4 +-- l10n/oc/files_trashbin.po | 4 +-- l10n/oc/lib.po | 4 +-- l10n/oc/settings.po | 4 +-- l10n/oc/user_ldap.po | 4 +-- l10n/pl/core.po | 4 +-- l10n/pl/files.po | 4 +-- l10n/pl/files_external.po | 4 +-- l10n/pl/files_sharing.po | 4 +-- l10n/pl/files_trashbin.po | 4 +-- l10n/pl/lib.po | 4 +-- l10n/pl/settings.po | 4 +-- l10n/pl/user_ldap.po | 4 +-- l10n/pl_PL/core.po | 4 +-- l10n/pl_PL/files.po | 4 +-- l10n/pl_PL/lib.po | 4 +-- l10n/pl_PL/settings.po | 4 +-- l10n/pt_BR/core.po | 4 +-- l10n/pt_BR/files.po | 4 +-- l10n/pt_BR/files_encryption.po | 39 ++++++++++++++-------------- l10n/pt_BR/files_external.po | 4 +-- l10n/pt_BR/files_sharing.po | 4 +-- l10n/pt_BR/files_trashbin.po | 4 +-- l10n/pt_BR/lib.po | 4 +-- l10n/pt_BR/settings.po | 8 +++--- l10n/pt_BR/user_ldap.po | 4 +-- l10n/pt_PT/core.po | 4 +-- l10n/pt_PT/files.po | 4 +-- l10n/pt_PT/files_external.po | 4 +-- l10n/pt_PT/files_sharing.po | 4 +-- l10n/pt_PT/files_trashbin.po | 4 +-- l10n/pt_PT/lib.po | 4 +-- l10n/pt_PT/settings.po | 4 +-- l10n/pt_PT/user_ldap.po | 4 +-- l10n/ro/core.po | 4 +-- l10n/ro/files.po | 4 +-- l10n/ro/files_external.po | 4 +-- l10n/ro/files_sharing.po | 4 +-- l10n/ro/files_trashbin.po | 4 +-- l10n/ro/lib.po | 4 +-- l10n/ro/settings.po | 4 +-- l10n/ro/user_ldap.po | 4 +-- l10n/ru/core.po | 4 +-- l10n/ru/files.po | 4 +-- l10n/ru/files_external.po | 4 +-- l10n/ru/files_sharing.po | 4 +-- l10n/ru/files_trashbin.po | 4 +-- l10n/ru/lib.po | 4 +-- l10n/ru/settings.po | 4 +-- l10n/ru/user_ldap.po | 4 +-- l10n/ru_RU/core.po | 4 +-- l10n/ru_RU/files.po | 2 +- l10n/ru_RU/files_external.po | 2 +- l10n/ru_RU/files_sharing.po | 2 +- l10n/ru_RU/files_trashbin.po | 2 +- l10n/ru_RU/lib.po | 4 +-- l10n/ru_RU/settings.po | 4 +-- l10n/ru_RU/user_ldap.po | 2 +- l10n/si_LK/core.po | 4 +-- l10n/si_LK/files.po | 4 +-- l10n/si_LK/files_external.po | 4 +-- l10n/si_LK/files_sharing.po | 4 +-- l10n/si_LK/files_trashbin.po | 4 +-- l10n/si_LK/lib.po | 4 +-- l10n/si_LK/settings.po | 4 +-- l10n/si_LK/user_ldap.po | 4 +-- l10n/sk_SK/core.po | 4 +-- l10n/sk_SK/files.po | 4 +-- l10n/sk_SK/files_external.po | 4 +-- l10n/sk_SK/files_sharing.po | 4 +-- l10n/sk_SK/files_trashbin.po | 4 +-- l10n/sk_SK/lib.po | 4 +-- l10n/sk_SK/settings.po | 4 +-- l10n/sk_SK/user_ldap.po | 4 +-- l10n/sl/core.po | 4 +-- l10n/sl/files.po | 4 +-- l10n/sl/files_external.po | 4 +-- l10n/sl/files_sharing.po | 4 +-- l10n/sl/files_trashbin.po | 4 +-- l10n/sl/lib.po | 4 +-- l10n/sl/settings.po | 4 +-- l10n/sl/user_ldap.po | 4 +-- l10n/sq/core.po | 4 +-- l10n/sq/files.po | 4 +-- l10n/sq/files_external.po | 4 +-- l10n/sq/files_sharing.po | 4 +-- l10n/sq/files_trashbin.po | 4 +-- l10n/sq/lib.po | 4 +-- l10n/sq/settings.po | 4 +-- l10n/sq/user_ldap.po | 4 +-- l10n/sr/core.po | 4 +-- l10n/sr/files.po | 4 +-- l10n/sr/files_external.po | 4 +-- l10n/sr/files_sharing.po | 4 +-- l10n/sr/files_trashbin.po | 4 +-- l10n/sr/lib.po | 4 +-- l10n/sr/settings.po | 4 +-- l10n/sr/user_ldap.po | 4 +-- l10n/sr@latin/core.po | 4 +-- l10n/sr@latin/files.po | 4 +-- l10n/sr@latin/files_external.po | 4 +-- l10n/sr@latin/files_sharing.po | 4 +-- l10n/sr@latin/files_trashbin.po | 4 +-- l10n/sr@latin/lib.po | 4 +-- l10n/sr@latin/settings.po | 4 +-- l10n/sv/core.po | 4 +-- l10n/sv/files.po | 4 +-- l10n/sv/files_external.po | 4 +-- l10n/sv/files_sharing.po | 4 +-- l10n/sv/files_trashbin.po | 4 +-- l10n/sv/lib.po | 4 +-- l10n/sv/settings.po | 4 +-- l10n/sv/user_ldap.po | 4 +-- l10n/ta_LK/core.po | 4 +-- l10n/ta_LK/files.po | 4 +-- l10n/ta_LK/files_external.po | 4 +-- l10n/ta_LK/files_sharing.po | 4 +-- l10n/ta_LK/files_trashbin.po | 4 +-- l10n/ta_LK/lib.po | 4 +-- l10n/ta_LK/settings.po | 4 +-- l10n/ta_LK/user_ldap.po | 4 +-- l10n/te/core.po | 4 +-- l10n/te/files.po | 4 +-- l10n/te/files_external.po | 4 +-- l10n/te/files_trashbin.po | 4 +-- l10n/te/lib.po | 4 +-- l10n/te/settings.po | 4 +-- l10n/te/user_ldap.po | 4 +-- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 4 +-- l10n/th_TH/files.po | 4 +-- l10n/th_TH/files_external.po | 4 +-- l10n/th_TH/files_sharing.po | 4 +-- l10n/th_TH/files_trashbin.po | 4 +-- l10n/th_TH/lib.po | 4 +-- l10n/th_TH/settings.po | 4 +-- l10n/th_TH/user_ldap.po | 4 +-- l10n/tr/core.po | 4 +-- l10n/tr/files.po | 4 +-- l10n/tr/files_external.po | 4 +-- l10n/tr/files_sharing.po | 4 +-- l10n/tr/files_trashbin.po | 4 +-- l10n/tr/lib.po | 4 +-- l10n/tr/settings.po | 4 +-- l10n/tr/user_ldap.po | 4 +-- l10n/ug/core.po | 4 +-- l10n/ug/files.po | 4 +-- l10n/ug/files_external.po | 4 +-- l10n/ug/files_sharing.po | 4 +-- l10n/ug/files_trashbin.po | 4 +-- l10n/ug/lib.po | 4 +-- l10n/ug/settings.po | 4 +-- l10n/ug/user_ldap.po | 4 +-- l10n/uk/core.po | 4 +-- l10n/uk/files.po | 4 +-- l10n/uk/files_external.po | 4 +-- l10n/uk/files_sharing.po | 4 +-- l10n/uk/files_trashbin.po | 4 +-- l10n/uk/lib.po | 4 +-- l10n/uk/settings.po | 4 +-- l10n/uk/user_ldap.po | 4 +-- l10n/ur_PK/core.po | 4 +-- l10n/ur_PK/files.po | 4 +-- l10n/ur_PK/files_trashbin.po | 4 +-- l10n/ur_PK/lib.po | 4 +-- l10n/ur_PK/settings.po | 4 +-- l10n/ur_PK/user_ldap.po | 4 +-- l10n/vi/core.po | 4 +-- l10n/vi/files.po | 4 +-- l10n/vi/files_external.po | 4 +-- l10n/vi/files_sharing.po | 4 +-- l10n/vi/files_trashbin.po | 4 +-- l10n/vi/lib.po | 4 +-- l10n/vi/settings.po | 4 +-- l10n/vi/user_ldap.po | 4 +-- l10n/zh_CN.GB2312/core.po | 4 +-- l10n/zh_CN.GB2312/files.po | 4 +-- l10n/zh_CN.GB2312/files_external.po | 4 +-- l10n/zh_CN.GB2312/files_sharing.po | 4 +-- l10n/zh_CN.GB2312/files_trashbin.po | 4 +-- l10n/zh_CN.GB2312/lib.po | 4 +-- l10n/zh_CN.GB2312/settings.po | 4 +-- l10n/zh_CN.GB2312/user_ldap.po | 4 +-- l10n/zh_CN/core.po | 4 +-- l10n/zh_CN/files.po | 4 +-- l10n/zh_CN/files_external.po | 4 +-- l10n/zh_CN/files_sharing.po | 4 +-- l10n/zh_CN/files_trashbin.po | 4 +-- l10n/zh_CN/lib.po | 4 +-- l10n/zh_CN/settings.po | 4 +-- l10n/zh_CN/user_ldap.po | 4 +-- l10n/zh_HK/core.po | 4 +-- l10n/zh_HK/files.po | 4 +-- l10n/zh_HK/files_external.po | 4 +-- l10n/zh_HK/files_sharing.po | 4 +-- l10n/zh_HK/files_trashbin.po | 4 +-- l10n/zh_HK/lib.po | 4 +-- l10n/zh_HK/settings.po | 4 +-- l10n/zh_HK/user_ldap.po | 4 +-- l10n/zh_TW/core.po | 4 +-- l10n/zh_TW/files.po | 4 +-- l10n/zh_TW/files_external.po | 4 +-- l10n/zh_TW/files_sharing.po | 4 +-- l10n/zh_TW/files_trashbin.po | 4 +-- l10n/zh_TW/lib.po | 4 +-- l10n/zh_TW/settings.po | 4 +-- l10n/zh_TW/user_ldap.po | 4 +-- lib/l10n/ja_JP.php | 1 + settings/l10n/ja_JP.php | 1 + settings/l10n/pt_BR.php | 1 + 551 files changed, 1134 insertions(+), 1103 deletions(-) diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index a3384174d7..4c53c7e3d2 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -10,5 +10,11 @@ "Enabled" => "Activado", "Disabled" => "Desactivado", "Change encryption passwords recovery key:" => "Cambiar a chave de la recuperación do cifrado de contrasinais:", -"Change Password" => "Cambiar o contrasinal" +"Old Recovery account password" => "Antigo contrasinal de recuperación da conta", +"New Recovery account password" => "Novo contrasinal de recuperación da conta", +"Change Password" => "Cambiar o contrasinal", +"Enable password recovery by sharing all files with your administrator:" => "Activar a recuperación de contrasinais compartindo todos os ficheiros co administrador:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados se perde o contrasinal", +"File recovery settings updated" => "Actualizouse o ficheiro de axustes de recuperación", +"Could not update file recovery" => "Non foi posíbel actualizar o ficheiro de recuperación" ); diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 99fd3ec3ab..287091f637 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -5,6 +5,7 @@ "Could not change the password. Maybe the old password was not correct." => "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", "Saving..." => "保存中...", "Encryption" => "暗号化", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):", "Recovery account password" => "復旧アカウントのパスワード", "Enabled" => "有効", "Disabled" => "無効", diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 73d7b57b87..91b4672f27 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,4 +1,20 @@ "Recuperação de chave com sucesso", +"Could not " => "Não foi possível", +"Password successfully changed." => "Senha alterada com sucesso.", +"Could not change the password. Maybe the old password was not correct." => "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.", "Saving..." => "Salvando...", -"Encryption" => "Criptografia" +"Encryption" => "Criptografia", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Ativar a criptografia de chave de recuperação de senhas (permitir compartilhar a chave de recuperação):", +"Recovery account password" => "Recuperar a senha da conta", +"Enabled" => "Habilidado", +"Disabled" => "Desabilitado", +"Change encryption passwords recovery key:" => "Mudar a criptografia de chave de recuperação de senhas:", +"Old Recovery account password" => "Recuperação de senha de conta antiga", +"New Recovery account password" => "Senha Nova da conta de Recuperação", +"Change Password" => "Trocar Senha", +"Enable password recovery by sharing all files with your administrator:" => "Habilitar recuperação de senha através da partilha de todos os arquivos com o administrador:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ativando esta opção irá permitir que você reobtainha acesso aos seus arquivos criptografados se sua senha for perdida", +"File recovery settings updated" => "Configurações de recuperação de arquivo atualizado", +"Could not update file recovery" => "Não foi possível atualizar a recuperação de arquivos" ); diff --git a/l10n/af_ZA/core.po b/l10n/af_ZA/core.po index a624008674..9804cb9de6 100644 --- a/l10n/af_ZA/core.po +++ b/l10n/af_ZA/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/lib.po b/l10n/af_ZA/lib.po index f7cb1209ce..623dc60bb9 100644 --- a/l10n/af_ZA/lib.po +++ b/l10n/af_ZA/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/core.po b/l10n/ar/core.po index c4823768ae..8fab964a8b 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 1dfdf7ab31..dff8a52c2f 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_external.po b/l10n/ar/files_external.po index 0d71b2a032..6874dbb0b5 100644 --- a/l10n/ar/files_external.po +++ b/l10n/ar/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 046ef73941..8b90aa1ff5 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index b429c2998c..baca98abbf 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index 9cf50deda4..ac7feed820 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index a8f9277cda..f607fe4e34 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/user_ldap.po b/l10n/ar/user_ldap.po index f0f0c087c1..07a165c3ce 100644 --- a/l10n/ar/user_ldap.po +++ b/l10n/ar/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index ce6aead990..fe9c93b088 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 4849873751..ed09a2a6b5 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index b0378410bf..30ac2b7803 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index 94f67e35c1..9723a4ec85 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index 8cd444f0a9..474447ab39 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index b7287ca9f6..7bbaf4a45f 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 3a7b4588fb..73e6f0cf02 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/user_ldap.po b/l10n/bg_BG/user_ldap.po index 7a34aa28cb..12face4d68 100644 --- a/l10n/bg_BG/user_ldap.po +++ b/l10n/bg_BG/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index c6b1fb4942..8e8719710f 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index feef935788..34c6c973fe 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_external.po b/l10n/bn_BD/files_external.po index cccfbf9cbe..a27939a0b3 100644 --- a/l10n/bn_BD/files_external.po +++ b/l10n/bn_BD/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index 4abb4f55e5..61fb8daecb 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index b28d89542a..fa5cb2f1ee 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index 26ceefa744..1e5d2d1dbb 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index 83c2fdef23..8e535308d5 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/user_ldap.po b/l10n/bn_BD/user_ldap.po index 9d4ae2b9fb..0d66cbe128 100644 --- a/l10n/bn_BD/user_ldap.po +++ b/l10n/bn_BD/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index dbc11dea11..af410a947f 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index f362b228ba..3b49b3de49 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_external.po b/l10n/ca/files_external.po index 4206b79a48..f3e3f5631f 100644 --- a/l10n/ca/files_external.po +++ b/l10n/ca/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index 5cbb2f22fc..568aaf4c21 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index e5533dd580..f15d18de12 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 4d784df7f1..1dd06ecb9d 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index ba7e888754..8fac803737 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/user_ldap.po b/l10n/ca/user_ldap.po index 3d43f0d600..f807e3432e 100644 --- a/l10n/ca/user_ldap.po +++ b/l10n/ca/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index b780396b8e..9f5a47f497 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index a8e9fd4366..d3605ad7f4 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index 7bb1729e6b..65233225ab 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index 298ae8e165..f090f4deab 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index 9d0e9ed97d..0013a8fd7b 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index d59cb5367f..5cffd4639f 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index ee6633ad0b..e797fcc034 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/user_ldap.po b/l10n/cs_CZ/user_ldap.po index 0a23be1493..74298d65e0 100644 --- a/l10n/cs_CZ/user_ldap.po +++ b/l10n/cs_CZ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/core.po b/l10n/cy_GB/core.po index cef633c7e8..b8169f4c7d 100644 --- a/l10n/cy_GB/core.po +++ b/l10n/cy_GB/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index b45b7c7bec..2e01550c73 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_external.po b/l10n/cy_GB/files_external.po index d3e3ec1870..5548817313 100644 --- a/l10n/cy_GB/files_external.po +++ b/l10n/cy_GB/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index 546afb5e9c..e28365980a 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_trashbin.po b/l10n/cy_GB/files_trashbin.po index 55222d01b2..61f0303c64 100644 --- a/l10n/cy_GB/files_trashbin.po +++ b/l10n/cy_GB/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/lib.po b/l10n/cy_GB/lib.po index 47522b763f..bf41a45bad 100644 --- a/l10n/cy_GB/lib.po +++ b/l10n/cy_GB/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/settings.po b/l10n/cy_GB/settings.po index 95d7f45b3c..ea19cd7e5c 100644 --- a/l10n/cy_GB/settings.po +++ b/l10n/cy_GB/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/user_ldap.po b/l10n/cy_GB/user_ldap.po index b7897fd6bd..750c4308ce 100644 --- a/l10n/cy_GB/user_ldap.po +++ b/l10n/cy_GB/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/core.po b/l10n/da/core.po index ab48232ecd..b1c0b8d07a 100644 --- a/l10n/da/core.po +++ b/l10n/da/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files.po b/l10n/da/files.po index e32f965a33..bca893008a 100644 --- a/l10n/da/files.po +++ b/l10n/da/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_external.po b/l10n/da/files_external.po index c28602cc34..e9b3d50014 100644 --- a/l10n/da/files_external.po +++ b/l10n/da/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index 34ee9db15f..34ef9ad2e6 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index d32638a904..cc87d50e62 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index b935e3c21c..e2275d55f0 100644 --- a/l10n/da/lib.po +++ b/l10n/da/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 7b15721791..4c7d58c86c 100644 --- a/l10n/da/settings.po +++ b/l10n/da/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 03de07a6d2..20ac52903c 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/core.po b/l10n/de/core.po index 538d60348f..5bb079506a 100644 --- a/l10n/de/core.po +++ b/l10n/de/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Marcel Kühlhorn \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files.po b/l10n/de/files.po index 260f0526eb..d7092304af 100644 --- a/l10n/de/files.po +++ b/l10n/de/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_external.po b/l10n/de/files_external.po index 425c30c571..aaa9503d42 100644 --- a/l10n/de/files_external.po +++ b/l10n/de/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 90fee14e48..08ffd925fe 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index 5b82513634..6d712ba87b 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index 53d4a2a49f..38600f19f9 100644 --- a/l10n/de/lib.po +++ b/l10n/de/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index 087555bbc6..979f091aa5 100644 --- a/l10n/de/settings.po +++ b/l10n/de/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index 58b7568345..99d5f1a29a 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index baec6c4b99..7be233193f 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index b551450b82..28d07847e7 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po index c0c3205e8a..0042342c7c 100644 --- a/l10n/de_DE/files_external.po +++ b/l10n/de_DE/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index d4da6a4830..bc65e773d0 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index 71c5b7e976..60904e6496 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index 2e83590524..da4e06ea01 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index c162ae7d78..f2f5324988 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index 9c307e3c5b..44e74b41cc 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/el/core.po b/l10n/el/core.po index caf5c8c21f..c20840c7e9 100644 --- a/l10n/el/core.po +++ b/l10n/el/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files.po b/l10n/el/files.po index 8abc9aea99..2b44c95455 100644 --- a/l10n/el/files.po +++ b/l10n/el/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index a153fc4a2c..c3b5796d95 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index dd823d3199..5bdc6732f3 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index f86b45deea..b8e4d052b7 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 0b177a298b..d1c875b317 100644 --- a/l10n/el/lib.po +++ b/l10n/el/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index 64281b740a..d6743841ae 100644 --- a/l10n/el/settings.po +++ b/l10n/el/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/user_ldap.po b/l10n/el/user_ldap.po index 7113f5e51e..8999877692 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files.po b/l10n/en@pirate/files.po index a743fe7eab..6e9142092b 100644 --- a/l10n/en@pirate/files.po +++ b/l10n/en@pirate/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_sharing.po b/l10n/en@pirate/files_sharing.po index 3b3b50c416..fbc06c5ae4 100644 --- a/l10n/en@pirate/files_sharing.po +++ b/l10n/en@pirate/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 87d72403e4..38499a9049 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index f29626fba6..a9aa36002c 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index a765664a0e..625ec7c1c4 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index ab53d42da6..ec0f1072a5 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index d989ae73f4..b64e20aebc 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index ee7d551922..f435085d53 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index f13af8d5ee..8530d4cc4f 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index 41ea1fc284..983285555e 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/core.po b/l10n/es/core.po index 55dc7cf895..df92a51f20 100644 --- a/l10n/es/core.po +++ b/l10n/es/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files.po b/l10n/es/files.po index 070b1bc725..46cecf3a24 100644 --- a/l10n/es/files.po +++ b/l10n/es/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_external.po b/l10n/es/files_external.po index ecb13e5f06..7feeba112e 100644 --- a/l10n/es/files_external.po +++ b/l10n/es/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index 399b2c6ba4..7f671d97f6 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index 8fc536faef..99095c72bd 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index e04ac472f2..eda28e1a8e 100644 --- a/l10n/es/lib.po +++ b/l10n/es/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index faae86fdbb..fe5cfc9286 100644 --- a/l10n/es/settings.po +++ b/l10n/es/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/user_ldap.po b/l10n/es/user_ldap.po index de3b653886..eb95d5852f 100644 --- a/l10n/es/user_ldap.po +++ b/l10n/es/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index bde15389c6..db878cc4d2 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 486139ce9f..fd9fe8e18a 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_external.po b/l10n/es_AR/files_external.po index 10c0aa85fb..531fe71aa8 100644 --- a/l10n/es_AR/files_external.po +++ b/l10n/es_AR/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index b693e9b643..4c328fe10a 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 0970ef5ce0..056aa110ad 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 8ff8e3fc8b..5f87f7153c 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index 0aaaf8bcd8..1a2d440349 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 85fa9ab4bc..5f823fd02f 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index ea4c90ad7b..b5815dd69c 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 5251a5bda4..c0d9614452 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index d9dc6d3b79..a27a7929cd 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index 22b9d80a68..f289c06989 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 0bae4217d9..7b2c63f7e4 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index 4840f78986..ab802cb6cc 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index 7f4fcfd489..42ac650354 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index 05d708d5c1..4df823f8c8 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index ab599b7a67..42c322872c 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index 12b26307da..5bd7901df3 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_external.po b/l10n/eu/files_external.po index 478b2bf21f..ac065bb0de 100644 --- a/l10n/eu/files_external.po +++ b/l10n/eu/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index 5f01d70e31..034087b4f1 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index 35a8f305f3..ef3ea4b51c 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 70dad3fb6f..1b49dcc9c8 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index ae2f893589..8da9152478 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/user_ldap.po b/l10n/eu/user_ldap.po index 946f19ac12..751d34a2bb 100644 --- a/l10n/eu/user_ldap.po +++ b/l10n/eu/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index 07fc7d608b..8cda41a394 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index f1b20c2dd4..6b4e4daa9f 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_external.po b/l10n/fa/files_external.po index 33d459e808..f92fd3c936 100644 --- a/l10n/fa/files_external.po +++ b/l10n/fa/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index 6f4123f694..0910d3b09a 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index fc22ab8d6f..d9bc9aa13c 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 28b4c3e883..ccf506d104 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 4349f0aae2..257fb2df31 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/user_ldap.po b/l10n/fa/user_ldap.po index ad3d9d441b..aec7a710b0 100644 --- a/l10n/fa/user_ldap.po +++ b/l10n/fa/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/core.po b/l10n/fi/core.po index ff1cb94e44..0eb4bea151 100644 --- a/l10n/fi/core.po +++ b/l10n/fi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/files.po b/l10n/fi/files.po index 890d4d3463..24941fb51b 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/lib.po b/l10n/fi/lib.po index a315271139..f7d94e81c5 100644 --- a/l10n/fi/lib.po +++ b/l10n/fi/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 0ca2b1aa75..fd4aed9d54 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 4cf1e87210..c6385d6c75 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_external.po b/l10n/fi_FI/files_external.po index 2f400bf940..427b22131b 100644 --- a/l10n/fi_FI/files_external.po +++ b/l10n/fi_FI/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 0509701f95..8351bbbff0 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index a055b21c70..bffa98c52b 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 3885df649a..adf38a1091 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index f1f210e8ae..029fd4c696 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/user_ldap.po b/l10n/fi_FI/user_ldap.po index fc2c9b922f..9552f1a7d2 100644 --- a/l10n/fi_FI/user_ldap.po +++ b/l10n/fi_FI/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index e2807a4e27..3f5247277f 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: msoko \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 5a210b069f..ea1d44fe90 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_external.po b/l10n/fr/files_external.po index 4de73cb7b3..a1e8e7fcb4 100644 --- a/l10n/fr/files_external.po +++ b/l10n/fr/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index 4b9be75902..95f720f1a9 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index f0c54cf1da..24a5ce0400 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index aaf4929bd2..452184d356 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index a1a52f52f6..b9c958ef2d 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index 38f0b27ee0..bb84d226fe 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: plachance \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index c82e920afc..c7dee9cdf3 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index f0ff411edf..97b213b8a3 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index 98d1d55438..583c4d3355 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -4,12 +4,14 @@ # # Translators: # mbouzada , 2013 +# mbouzada , 2013 +# mbouzada , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 07:00+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 08:00+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -65,11 +67,11 @@ msgstr "Cambiar a chave de la recuperación do cifrado de contrasinais:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Antigo contrasinal de recuperación da conta" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Novo contrasinal de recuperación da conta" #: templates/settings-admin.php:51 msgid "Change Password" @@ -77,18 +79,18 @@ msgstr "Cambiar o contrasinal" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Activar a recuperación de contrasinais compartindo todos os ficheiros co administrador:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados se perde o contrasinal" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Actualizouse o ficheiro de axustes de recuperación" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Non foi posíbel actualizar o ficheiro de recuperación" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index d0b3351437..6a1e321dbe 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 93f5c8287d..6be3b7318f 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index e90c277743..5bc79b03d9 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index ab04cf10a2..bac73862a4 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 3e30c88b54..48f260d333 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index 5162e7bc58..52971c67c1 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/core.po b/l10n/he/core.po index 572e2fc69b..a56c6873ff 100644 --- a/l10n/he/core.po +++ b/l10n/he/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files.po b/l10n/he/files.po index 87ab55469c..4c7f442cd8 100644 --- a/l10n/he/files.po +++ b/l10n/he/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index aa8693d741..c1786298b1 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index 39f0aac065..a796f8ef87 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index 8c49c90ba1..0b71e0535a 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index b6a84a1275..db4e3883a1 100644 --- a/l10n/he/lib.po +++ b/l10n/he/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index 9a99b8d7ce..ff975e8a22 100644 --- a/l10n/he/settings.po +++ b/l10n/he/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po index 2e8cf82019..92660e6089 100644 --- a/l10n/he/user_ldap.po +++ b/l10n/he/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index 89fc47d284..5064703432 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index 9792ca8cbc..5d69224975 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index f3ebca8398..ef435cc5ba 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 132d497bcf..c0f82fdda0 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_external.po b/l10n/hr/files_external.po index fad820592e..302c7f0076 100644 --- a/l10n/hr/files_external.po +++ b/l10n/hr/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index c886967f9f..7150c836a0 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index 5c18e6ec0e..bb9f65a64f 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index 0ba2f5836b..74fac12dd6 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index 30272b5bd5..a0fcdb8941 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/user_ldap.po b/l10n/hr/user_ldap.po index ecd821ed0a..cba292130c 100644 --- a/l10n/hr/user_ldap.po +++ b/l10n/hr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 6d69d246da..f9f4a4fe4f 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 1db9617549..53f1a29753 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_external.po b/l10n/hu_HU/files_external.po index ffff744008..f63d2c6f83 100644 --- a/l10n/hu_HU/files_external.po +++ b/l10n/hu_HU/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index 2d692f6a00..b1c8b21e2e 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index 99b725c3ac..673d0e7daa 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index 9d65a5f032..f8a569b0a1 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 5c0e3e282f..2016cda84b 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/user_ldap.po b/l10n/hu_HU/user_ldap.po index fc4df4b045..227d6447b4 100644 --- a/l10n/hu_HU/user_ldap.po +++ b/l10n/hu_HU/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files.po b/l10n/hy/files.po index 3019b47b5f..1f3742d0b6 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files_external.po b/l10n/hy/files_external.po index 8902a6865f..c5959563cd 100644 --- a/l10n/hy/files_external.po +++ b/l10n/hy/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_sharing.po b/l10n/hy/files_sharing.po index 036350e901..d360b24433 100644 --- a/l10n/hy/files_sharing.po +++ b/l10n/hy/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_trashbin.po b/l10n/hy/files_trashbin.po index 8468b1f82d..186cb696f4 100644 --- a/l10n/hy/files_trashbin.po +++ b/l10n/hy/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/settings.po b/l10n/hy/settings.po index 76043b4ca0..6d46441160 100644 --- a/l10n/hy/settings.po +++ b/l10n/hy/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index ee678a38a6..74e8cdfe93 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 0c974b4dab..5eb8d541fc 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_external.po b/l10n/ia/files_external.po index 9fc7ed8896..d33df31a8b 100644 --- a/l10n/ia/files_external.po +++ b/l10n/ia/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index ba39382665..f185eee2f1 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index d4b53ae1e1..8db9d253cc 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index a1edc04173..296158b510 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 1b7a939d26..277d277f6a 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/user_ldap.po b/l10n/ia/user_ldap.po index 4cf6d5c9bb..e5582b3fc0 100644 --- a/l10n/ia/user_ldap.po +++ b/l10n/ia/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index 9c6b02757a..17ebc16853 100644 --- a/l10n/id/core.po +++ b/l10n/id/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files.po b/l10n/id/files.po index a13cde2247..92c3176689 100644 --- a/l10n/id/files.po +++ b/l10n/id/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index 757b8074c4..34583234e6 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index 507030fcea..9969cb5fbf 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index 1e2dfe0d86..0922222ae2 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 7e9d04c749..40a0f2129e 100644 --- a/l10n/id/lib.po +++ b/l10n/id/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index db81cfc465..13b7a63d97 100644 --- a/l10n/id/settings.po +++ b/l10n/id/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 3e0c3227ce..e9d987cd27 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/core.po b/l10n/is/core.po index a6c989cd88..29ec4fcb33 100644 --- a/l10n/is/core.po +++ b/l10n/is/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files.po b/l10n/is/files.po index ab228c23c7..903efe3a19 100644 --- a/l10n/is/files.po +++ b/l10n/is/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_external.po b/l10n/is/files_external.po index ab58d02421..750c2249cd 100644 --- a/l10n/is/files_external.po +++ b/l10n/is/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index a6ed046dad..d8642b612d 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index bf84b0232b..2bfa7104ee 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index 86ac4aef5a..37c87ab599 100644 --- a/l10n/is/lib.po +++ b/l10n/is/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/settings.po b/l10n/is/settings.po index bed94e21b7..a2ed3ae0ad 100644 --- a/l10n/is/settings.po +++ b/l10n/is/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/user_ldap.po b/l10n/is/user_ldap.po index fb63014028..f09665d232 100644 --- a/l10n/is/user_ldap.po +++ b/l10n/is/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/core.po b/l10n/it/core.po index 7421775949..3123748e83 100644 --- a/l10n/it/core.po +++ b/l10n/it/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files.po b/l10n/it/files.po index 98eacd6d3e..612b277e22 100644 --- a/l10n/it/files.po +++ b/l10n/it/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_external.po b/l10n/it/files_external.po index ee87d670f4..7acfe1e9ac 100644 --- a/l10n/it/files_external.po +++ b/l10n/it/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 38cbaf14ef..a4b0685df6 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 81742e492a..13cd3f0777 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index 312194b5a5..1319b29104 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index f47b825a75..e8ec8991fe 100644 --- a/l10n/it/settings.po +++ b/l10n/it/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/user_ldap.po b/l10n/it/user_ldap.po index ea82f8b570..dd87b8c975 100644 --- a/l10n/it/user_ldap.po +++ b/l10n/it/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index d0351725ff..dfc10d3c2a 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 3c7dedab0b..d2ccc18f12 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 7f1370c710..bb4c738de0 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:58+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 00:10+0000\n" "Last-Translator: tt yn \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -45,7 +45,7 @@ msgstr "暗号化" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):" #: templates/settings-admin.php:13 msgid "Recovery account password" diff --git a/l10n/ja_JP/files_external.po b/l10n/ja_JP/files_external.po index d1ae250d75..d6d44b5f8d 100644 --- a/l10n/ja_JP/files_external.po +++ b/l10n/ja_JP/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index d175faddb1..f8dd0c17bc 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index 7ef98025d9..73efd166e0 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index c60b0e169c..e786fe49a7 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# tt yn , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" +"Last-Translator: tt yn \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" @@ -123,7 +124,7 @@ msgstr "既存のアカウントもしくは管理者のどちらかを入力す #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Oracleへの接続が確立できませんでした。" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 17ee8d489b..210d7f1d37 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/settings.po @@ -4,13 +4,14 @@ # # Translators: # Daisuke Deguchi , 2013 +# tt yn , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" +"Last-Translator: tt yn \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" @@ -466,7 +467,7 @@ msgstr "作成" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "管理者復旧パスワード" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/ja_JP/user_ldap.po b/l10n/ja_JP/user_ldap.po index f09879f137..a144d41a6f 100644 --- a/l10n/ja_JP/user_ldap.po +++ b/l10n/ja_JP/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files.po b/l10n/ka/files.po index 5352751513..bfc07fbeed 100644 --- a/l10n/ka/files.po +++ b/l10n/ka/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_sharing.po b/l10n/ka/files_sharing.po index bdb2af3e9a..68a06d7fb7 100644 --- a/l10n/ka/files_sharing.po +++ b/l10n/ka/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index 45a9dff0ee..1ab71ced4b 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index 5296144c27..1ff33d484b 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po index c620c0c44c..fe4031205c 100644 --- a/l10n/ka_GE/files_external.po +++ b/l10n/ka_GE/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index 083b22241b..0c8b3ee784 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index b534413a34..000a8929c7 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index 29d64d5905..1b251670eb 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index fcbea62883..6403702d5d 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po index f46aecd36a..ca6d6f8afe 100644 --- a/l10n/ka_GE/user_ldap.po +++ b/l10n/ka_GE/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 306bc14e94..afa21fdc40 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index b29aa4a8c3..596a378ad5 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index 9787d7b23e..2cb7b8276f 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index d1af09d315..bbb025a87d 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index 0ce2a2a5ee..5f00ea9031 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index 52920ee751..a93ac64707 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 9d7550f9a0..97abf91d8c 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index 4c7a97e3b2..58f220c181 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index e66f0850f8..7b16b39973 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 6b6edda66a..0c5b1a64e4 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 71be77277b..1c7a69e03f 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index c1433026f5..4f51cc2ffe 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index 6b5349bf84..c9f8174497 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index daae7a43ff..5538068066 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/user_ldap.po b/l10n/ku_IQ/user_ldap.po index e776615344..915955dcca 100644 --- a/l10n/ku_IQ/user_ldap.po +++ b/l10n/ku_IQ/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 2e13c0e7db..69d0995cc3 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 5ffd6e96c6..f501d6e4ec 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_external.po b/l10n/lb/files_external.po index fdef516ec6..e5f9161483 100644 --- a/l10n/lb/files_external.po +++ b/l10n/lb/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index 7abad7bced..de2d045d25 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index 2835ab77ff..72108f015a 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 70cc6975fe..ae3a653046 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 248587c499..d2f0156df9 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index 6d881588f0..4f83b99814 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index b49fc6fb11..3eb7c02c36 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Roman Deniobe \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index b0b960b741..767fc3da82 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index 33459e1ce0..eee630efce 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 5669635914..eb4017fd43 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index 703568acb7..afab5f79b8 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index bc3bd17246..6070ff15c6 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index 3c934ade01..07726c02c0 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index f2b10fa005..d489d5170a 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index dce31d5ff1..85929f2968 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 8ea56c0d77..e75ad0a2be 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_external.po b/l10n/lv/files_external.po index 312a5f3ed5..f698f106df 100644 --- a/l10n/lv/files_external.po +++ b/l10n/lv/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index 3589bb8760..6c9db4e074 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index 41dd280db4..f478a1a538 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index 397917c695..11d857681b 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index 8c4699c494..01bc08eaf2 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/user_ldap.po b/l10n/lv/user_ldap.po index 3c49fc3c58..5e60c37aef 100644 --- a/l10n/lv/user_ldap.po +++ b/l10n/lv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 0ae92528b4..ac12061917 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 53d4465f5c..690eaf2b88 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_external.po b/l10n/mk/files_external.po index 4d25c25c23..4e33f030a4 100644 --- a/l10n/mk/files_external.po +++ b/l10n/mk/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index 8f5350a5ed..0453b0f8b5 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index 04db2a54bd..c0aa67f4d1 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index 497fee8fe4..08516c3c55 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 20478b1ba7..68bd2d08d9 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/user_ldap.po b/l10n/mk/user_ldap.po index f1aa42b944..12c2b844f8 100644 --- a/l10n/mk/user_ldap.po +++ b/l10n/mk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index dbe7892825..6ceb9677da 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index 049514d04f..f7b3320005 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_external.po b/l10n/ms_MY/files_external.po index 0e330ef955..161f2a6259 100644 --- a/l10n/ms_MY/files_external.po +++ b/l10n/ms_MY/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index bcba5b4476..bdbe77bd54 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index b784d3df6d..80119f596d 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 723b88d7ff..c626516f98 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index 8d06e29501..41c557f852 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/user_ldap.po b/l10n/ms_MY/user_ldap.po index 63ed8a148f..b1ba1062a0 100644 --- a/l10n/ms_MY/user_ldap.po +++ b/l10n/ms_MY/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po index 383b27975b..51523a241c 100644 --- a/l10n/my_MM/core.po +++ b/l10n/my_MM/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files.po b/l10n/my_MM/files.po index 8d70b87716..49cdaf5068 100644 --- a/l10n/my_MM/files.po +++ b/l10n/my_MM/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po index b989c6f8fe..f7cb6623df 100644 --- a/l10n/my_MM/files_sharing.po +++ b/l10n/my_MM/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po index 9b55512891..217fbce6cf 100644 --- a/l10n/my_MM/lib.po +++ b/l10n/my_MM/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index 71aea61913..03e3b37448 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index a46cbd7814..f41226f994 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_external.po b/l10n/nb_NO/files_external.po index d5e1cbfa31..44a21a9ae5 100644 --- a/l10n/nb_NO/files_external.po +++ b/l10n/nb_NO/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index ad80b4b284..07e0781566 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index c49f21bcb7..95fab7c54e 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 09916d998b..ff57400610 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index fad235b923..1e61c24512 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index ba95d21248..8191a00900 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index d1339ef19e..736848cc75 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 271d73810f..b3eb6e1324 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index 507d6c68f1..a84b40d700 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index 1ab80fbbfc..ecde82c57f 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index e842ab2f79..e135ddc064 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index 9ab110c002..7bd53bb698 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 0d1a96aba5..1340a3db68 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index ae4971b415..ef8953ea92 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index a31ee08289..709ca1cb68 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 2e8734faab..b31b5766f2 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_external.po b/l10n/nn_NO/files_external.po index 084df4b746..a4bbf7f21d 100644 --- a/l10n/nn_NO/files_external.po +++ b/l10n/nn_NO/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index e846c9d1a2..5f7e3f8c31 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index e56617d69f..fe5bc0afb2 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index dcb52e0e40..ad2b917bcc 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index d53e2a117e..9942f63488 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/user_ldap.po b/l10n/nn_NO/user_ldap.po index 76f343d91c..fc7992427d 100644 --- a/l10n/nn_NO/user_ldap.po +++ b/l10n/nn_NO/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index 8085c54f8d..ef626b77d7 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index ca59ea12e4..0daeac3555 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_external.po b/l10n/oc/files_external.po index 0111481a9e..b212045b56 100644 --- a/l10n/oc/files_external.po +++ b/l10n/oc/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index cc93541803..8472badae0 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 8e5b8f353d..5971fe7ac5 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index bed1fe3806..339945e1be 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index b6537963a0..de5f2a0721 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/user_ldap.po b/l10n/oc/user_ldap.po index 95aad8d0ad..b69fe92aa0 100644 --- a/l10n/oc/user_ldap.po +++ b/l10n/oc/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 0a6334b71e..80c928e4ab 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 1e47d2345d..a92d06584e 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index 6fa27193fe..9c3b278e68 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index 7f83ad4ccf..7cce02488c 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index c0c0f60e8a..52a71f3394 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index 03ea126cdb..7bc6cd7c12 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index cd0ffd5900..ed1428d031 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/user_ldap.po b/l10n/pl/user_ldap.po index 4cea4c05d5..9a658596fc 100644 --- a/l10n/pl/user_ldap.po +++ b/l10n/pl/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 8d297b83b2..4fe18c9918 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-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index ae728a7a74..ab35f9d766 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index 8f136d5521..4d8f8b0159 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 9830ab282f..ab0b631002 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index dcb91632e4..98370f2405 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:50+0000\n" "Last-Translator: Flávio Veras \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/files.po b/l10n/pt_BR/files.po index 2537f6da5c..43648d7e88 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Flávio Veras \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/files_encryption.po b/l10n/pt_BR/files_encryption.po index 5d944e56f8..d36fa35c6a 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Flávio Veras , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 00:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 19:40+0000\n" +"Last-Translator: Flávio Veras \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" @@ -19,19 +20,19 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "Recuperação de chave com sucesso" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Não foi possível" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Senha alterada com sucesso." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Não foi possível alterar a senha. Talvez a senha antiga não estava correta." #: js/settings-admin.js:11 msgid "Saving..." @@ -44,50 +45,50 @@ msgstr "Criptografia" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Ativar a criptografia de chave de recuperação de senhas (permitir compartilhar a chave de recuperação):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Recuperar a senha da conta" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Habilidado" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Desabilitado" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Mudar a criptografia de chave de recuperação de senhas:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Recuperação de senha de conta antiga" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Senha Nova da conta de Recuperação" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Trocar Senha" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Habilitar recuperação de senha através da partilha de todos os arquivos com o administrador:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Ativando esta opção irá permitir que você reobtainha acesso aos seus arquivos criptografados se sua senha for perdida" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Configurações de recuperação de arquivo atualizado" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Não foi possível atualizar a recuperação de arquivos" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index 4e7d6488f1..f7e2c8a746 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Flávio Veras \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/files_sharing.po b/l10n/pt_BR/files_sharing.po index 2acfafb986..6dcbeeb221 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index 23baf48bc6..a44bd568eb 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index 1c7f19f926..04a57cac6d 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:50+0000\n" "Last-Translator: Flávio Veras \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/settings.po b/l10n/pt_BR/settings.po index 7042ac948a..c1abb53502 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" +"Last-Translator: Flávio Veras \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" @@ -466,7 +466,7 @@ msgstr "Criar" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Recuperação da Senha do Administrador" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/pt_BR/user_ldap.po b/l10n/pt_BR/user_ldap.po index f7cd5c2ab7..8417319873 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Flávio Veras \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_PT/core.po b/l10n/pt_PT/core.po index 8555fa8ca0..79c4bd5c84 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index b9f5360d31..9711835015 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_external.po b/l10n/pt_PT/files_external.po index 88ed87dcf7..d07b2036e8 100644 --- a/l10n/pt_PT/files_external.po +++ b/l10n/pt_PT/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index 3865982174..643142eca5 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 7012e81098..450ef2a560 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index a8d9810d04..dcf2a20b6b 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 2d860d801f..8f8f5862a6 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index 7157a06aea..2f0197cdb7 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index c9e70d59f5..7ef4b4867a 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 595e5a2070..741268c9af 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index 8448c74b21..90b747df9f 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index f516156380..6280fa1231 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index d0de269cdf..a2a649a76a 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index b8df5112bb..800f9a55ca 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 7e227065e9..5edbd4a414 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index 6d5ee0f47c..627965d208 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index e5c500a81f..63a5a4aeef 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: foool \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 9c18f195a5..f495588aba 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index 35aa28c4c4..83e746272f 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 1f0f91910a..833d99a674 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index d7fc79b3ac..1437014039 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index 1bc33f5604..51592d6e08 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index c19a198aee..3811ba025b 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/user_ldap.po b/l10n/ru/user_ldap.po index c1ff77930e..f68b28c256 100644 --- a/l10n/ru/user_ldap.po +++ b/l10n/ru/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 911e33bd8c..3cbd14928d 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 0b49c128dc..f1a5cfea5b 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_external.po b/l10n/ru_RU/files_external.po index 90c9026276..cfae951035 100644 --- a/l10n/ru_RU/files_external.po +++ b/l10n/ru_RU/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_sharing.po b/l10n/ru_RU/files_sharing.po index 397ef1679e..558889db18 100644 --- a/l10n/ru_RU/files_sharing.po +++ b/l10n/ru_RU/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index 77b6be968e..eda240990e 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 00831d6a1d..baebf14072 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index bd7808ecb7..10e54b64f3 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index 21c93b52cc..2b690eb5bf 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:02+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index 62527ad648..5f8eb83761 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index 7b57291fdc..8e6e38fc02 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po index 2eba16213a..b95a68a244 100644 --- a/l10n/si_LK/files_external.po +++ b/l10n/si_LK/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index ab09a0b344..c5bc53fc85 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index af245b2943..357d232ed7 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 45540e62ef..fbfed58ffc 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index de7ada2261..36ed2b2062 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po index acf0e6c8b1..605d7b6f0c 100644 --- a/l10n/si_LK/user_ldap.po +++ b/l10n/si_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index de24fcf99d..0f0c2eaa83 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index d45f80245d..8b79d37815 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index a86aab7f35..507aa278ff 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index 737975cda2..2e3bae465c 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index a3d6905179..8d4ae57362 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 93d5698235..8cbd39556a 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 4510469b46..cc730004af 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 7676749ed7..a80bd9d9fb 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index d8a4b3092e..fc13339dc8 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 043e6d6292..e5a39bbe44 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index 1a7650d903..03439e97f4 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index e0c59f422d..6555883564 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index ca45e58075..52cc46a4ba 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index 1515c5a00f..ee6bb847a8 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 9c0a46f0ac..f97f66e2cb 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index 1f345364e8..3cc2f2c295 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index 95403baf0d..eeb70e4b89 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files.po b/l10n/sq/files.po index 76ca91268f..1f503abd8b 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po index 45a09733bc..86ba07934f 100644 --- a/l10n/sq/files_external.po +++ b/l10n/sq/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index 34f73661f8..325b410968 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_trashbin.po b/l10n/sq/files_trashbin.po index 2556f948cb..93a3fb1784 100644 --- a/l10n/sq/files_trashbin.po +++ b/l10n/sq/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po index 8730f07cec..d01a098b74 100644 --- a/l10n/sq/lib.po +++ b/l10n/sq/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po index 795bf6379f..d2143c51f9 100644 --- a/l10n/sq/settings.po +++ b/l10n/sq/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po index d215f6371a..deafbb0f5e 100644 --- a/l10n/sq/user_ldap.po +++ b/l10n/sq/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index 2bb63a99cc..ad4f9d164b 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index d21c00b9ba..8bcce3e10c 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_external.po b/l10n/sr/files_external.po index daa0a3ffb9..0163579eaa 100644 --- a/l10n/sr/files_external.po +++ b/l10n/sr/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index b42bbe03ab..f10148df0a 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index add0b415fa..6f9cf0f1b8 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index 4e989fc80a..ea86980d6c 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 8ce18c39b9..aff9ef4961 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/user_ldap.po b/l10n/sr/user_ldap.po index 1522f7d8f0..6e7300e19d 100644 --- a/l10n/sr/user_ldap.po +++ b/l10n/sr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 0eaee08d18..365a71db00 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index 970ef961c9..80fcd9b9e0 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_external.po b/l10n/sr@latin/files_external.po index 790b9879ea..a145fb419d 100644 --- a/l10n/sr@latin/files_external.po +++ b/l10n/sr@latin/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index ab71d76c2a..a8397732ea 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index c436bf6f5b..53f3bc29b6 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 20cf9c706c..577e7f7c46 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index 5ae3a2fce7..2d7615ca69 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 9db4120e1a..7546cda467 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 6ca51eb51e..1d07480f64 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_external.po b/l10n/sv/files_external.po index 2801ad22bc..fb4af547b2 100644 --- a/l10n/sv/files_external.po +++ b/l10n/sv/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 81a75dd6e9..670b1f9e24 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index 12e368d65b..35a11a073b 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index 35334f375f..62cb4f1fa9 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index 3b7986d8dd..c4e16d5f8c 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/user_ldap.po b/l10n/sv/user_ldap.po index 13f07b07a1..f3043a5824 100644 --- a/l10n/sv/user_ldap.po +++ b/l10n/sv/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 579acd34e4..23e839b118 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 131bd3c945..222fcda458 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po index 07f69bbecb..42a3ab0220 100644 --- a/l10n/ta_LK/files_external.po +++ b/l10n/ta_LK/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index 8e81ade154..c9671813ef 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index 5d3c99577b..e11b923ec7 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index e2806a3afd..25b80bcab1 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index cfef54c73b..2a3a67d6ab 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po index f7a6cd8b78..08a0a1ae5f 100644 --- a/l10n/ta_LK/user_ldap.po +++ b/l10n/ta_LK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/core.po b/l10n/te/core.po index 64a4970d76..f45ba51afb 100644 --- a/l10n/te/core.po +++ b/l10n/te/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files.po b/l10n/te/files.po index 1df2ca8560..30c2cb08b4 100644 --- a/l10n/te/files.po +++ b/l10n/te/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_external.po b/l10n/te/files_external.po index 56aaedb657..227472606f 100644 --- a/l10n/te/files_external.po +++ b/l10n/te/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_trashbin.po b/l10n/te/files_trashbin.po index 1e81cdb777..ce425db1cc 100644 --- a/l10n/te/files_trashbin.po +++ b/l10n/te/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/lib.po b/l10n/te/lib.po index f9c63628e5..412d91f87b 100644 --- a/l10n/te/lib.po +++ b/l10n/te/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/settings.po b/l10n/te/settings.po index 049bbcf892..4413237a0f 100644 --- a/l10n/te/settings.po +++ b/l10n/te/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/user_ldap.po b/l10n/te/user_ldap.po index a7103446d6..8c7d75f816 100644 --- a/l10n/te/user_ldap.po +++ b/l10n/te/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 1504a6467a..bf86dac64c 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 2b70448c55..f14f02181a 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 12d6c39b7b..53ab4f96b1 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 792d5b17f6..8d0e23b72b 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index af8c2dcdb5..66b0079954 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index ab55823307..a26cf6115a 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 1297a9683d..a603433e46 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index c9d0b98051..65e93c824c 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 19c802e8c3..52022d72a6 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 3be6bcc928..0a75791c4d 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index fffcf96014..1d7174783f 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index 7f8f94f5e2..8d2e8025d6 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 994ed1a04f..56ba32b585 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_external.po b/l10n/th_TH/files_external.po index 85619f8a93..cb00264259 100644 --- a/l10n/th_TH/files_external.po +++ b/l10n/th_TH/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index 4ae34acc27..f87f8a413f 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 6712022a10..28f352b3a6 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index 49591aa68c..f7c19fc466 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index cef1e0560d..6afb9e27e3 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/user_ldap.po b/l10n/th_TH/user_ldap.po index 0f6d695b38..147e84575b 100644 --- a/l10n/th_TH/user_ldap.po +++ b/l10n/th_TH/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index c287d0323a..0811fd4f85 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 4afc23c1a9..8145d58805 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_external.po b/l10n/tr/files_external.po index 4357038ece..098a1bb0b4 100644 --- a/l10n/tr/files_external.po +++ b/l10n/tr/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index 8b2c35630e..2464822696 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index 9451991df4..ed154557aa 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index 1669aad000..3a77c6e9fb 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 0305e4c817..e1f3215675 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index 5e2108b82d..48050116fb 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/core.po b/l10n/ug/core.po index cc16fec060..3cc08d79cf 100644 --- a/l10n/ug/core.po +++ b/l10n/ug/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files.po b/l10n/ug/files.po index 642ca25d3a..50ec35af5c 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_external.po b/l10n/ug/files_external.po index 686fafbb9b..a410ce4fbf 100644 --- a/l10n/ug/files_external.po +++ b/l10n/ug/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 8af1c769bc..29a984280e 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: uqkun \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_trashbin.po b/l10n/ug/files_trashbin.po index 78242cd0b8..b0f7da3d32 100644 --- a/l10n/ug/files_trashbin.po +++ b/l10n/ug/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/lib.po b/l10n/ug/lib.po index f126f1d9fe..9e77eab3f9 100644 --- a/l10n/ug/lib.po +++ b/l10n/ug/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/settings.po b/l10n/ug/settings.po index cf56d0ff7c..ab603660b9 100644 --- a/l10n/ug/settings.po +++ b/l10n/ug/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/user_ldap.po b/l10n/ug/user_ldap.po index bddcca68f5..79a8536655 100644 --- a/l10n/ug/user_ldap.po +++ b/l10n/ug/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 0fb74bcbf4..5baf954ded 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index a87cb8f88f..b34815c7bb 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index 2277b8e12a..34a686d268 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index 29934a3117..88cc9fb905 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index 88bac954f9..01cb17f7d6 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index 62aad184a6..4c58682c9f 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index 2cd2543e9c..a24c18b52f 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index f699538e7c..a40cb4bc66 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/core.po b/l10n/ur_PK/core.po index 9c650d8135..fefef2c2b9 100644 --- a/l10n/ur_PK/core.po +++ b/l10n/ur_PK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files.po b/l10n/ur_PK/files.po index df77bffed9..498e743ebb 100644 --- a/l10n/ur_PK/files.po +++ b/l10n/ur_PK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_trashbin.po b/l10n/ur_PK/files_trashbin.po index 9793d228b4..ff9411f35c 100644 --- a/l10n/ur_PK/files_trashbin.po +++ b/l10n/ur_PK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/lib.po b/l10n/ur_PK/lib.po index 681c34c81d..292b1527fd 100644 --- a/l10n/ur_PK/lib.po +++ b/l10n/ur_PK/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-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/settings.po b/l10n/ur_PK/settings.po index ea730144e4..970baf2bb3 100644 --- a/l10n/ur_PK/settings.po +++ b/l10n/ur_PK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/user_ldap.po b/l10n/ur_PK/user_ldap.po index c304dd8dc8..c3316ed5ad 100644 --- a/l10n/ur_PK/user_ldap.po +++ b/l10n/ur_PK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index 0585bffc8b..cb33e7cf61 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 5a3305fa9e..a20da81518 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index 86ca37129f..594c7380ff 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index d473201a24..06ef29e8fd 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 892a0c895a..d3c609e034 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 7631c4c5a7..d685f6d377 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index fd4b6554f2..caf3709ae2 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index 3665d05eb3..6215510f72 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 032394320f..3e64e6278e 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 75ab7bcf5f..6dbc82c94b 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_external.po b/l10n/zh_CN.GB2312/files_external.po index cf178b323d..9511a0f067 100644 --- a/l10n/zh_CN.GB2312/files_external.po +++ b/l10n/zh_CN.GB2312/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_sharing.po b/l10n/zh_CN.GB2312/files_sharing.po index 2741ffe6f6..760ffbe7cf 100644 --- a/l10n/zh_CN.GB2312/files_sharing.po +++ b/l10n/zh_CN.GB2312/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index e7f4be5c29..9cd91db93d 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index f73a4764c1..17e2523e12 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 8c36765d81..098e290444 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/user_ldap.po b/l10n/zh_CN.GB2312/user_ldap.po index 4666a10be0..6f2a06c7b7 100644 --- a/l10n/zh_CN.GB2312/user_ldap.po +++ b/l10n/zh_CN.GB2312/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 3189dfff2d..c87992fe82 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 26884dbc7d..ea332b90cd 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index 541bbd4804..bf87e0da83 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 5df0586ad1..abf2f1fd07 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index c0fa3214cd..230860f3a0 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index a1e0ef01d7..102ef28a95 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index b3d91b9ead..4a3f0f88c6 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index 7234fb5264..144d472b2d 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index 6262b6ff4b..6ceb5a5005 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 93fc2dd175..1cf848bc55 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po index 88ad0fde40..129a0e8d1a 100644 --- a/l10n/zh_HK/files_external.po +++ b/l10n/zh_HK/files_external.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index 21db673b64..3093ead7fd 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 615b0272f7..9b9e972db9 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index 4779e68e38..6583213ecd 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index 26854adf76..58e2fa78b5 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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po index a32ccce9c9..eee6fe3168 100644 --- a/l10n/zh_HK/user_ldap.po +++ b/l10n/zh_HK/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 6562bbdf50..4fa92c5d85 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 6cdee027a5..53fb881239 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index ca5ec7c149..4c97a31a96 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index d9bb607db1..0dcccd1d26 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index e7d2a8192e..a5366b3966 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index 83f825dcbc..0aa649dcf6 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index eb2070244f..b8ac3e1907 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index d2e05a0dce..fec5c9cbe2 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/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-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php index 0e856b0497..a2eb4bee67 100644 --- a/lib/l10n/ja_JP.php +++ b/lib/l10n/ja_JP.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s にデータベースホストを設定します。", "PostgreSQL username and/or password not valid" => "PostgreSQLのユーザ名もしくはパスワードは有効ではありません", "You need to enter either an existing account or the administrator." => "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", +"Oracle connection could not be established" => "Oracleへの接続が確立できませんでした。", "MySQL username and/or password not valid" => "MySQLのユーザ名もしくはパスワードは有効ではありません", "DB Error: \"%s\"" => "DBエラー: \"%s\"", "Offending command was: \"%s\"" => "違反コマンド: \"%s\"", diff --git a/settings/l10n/ja_JP.php b/settings/l10n/ja_JP.php index defc96e81b..ad42d3f085 100644 --- a/settings/l10n/ja_JP.php +++ b/settings/l10n/ja_JP.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "ファイルマネージャでownCloudに接続する際はこのアドレスを利用してください", "Login Name" => "ログイン名", "Create" => "作成", +"Admin Recovery Password" => "管理者復旧パスワード", "Default Storage" => "デフォルトストレージ", "Unlimited" => "無制限", "Other" => "その他", diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index f1e45aab15..824940da58 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -101,6 +101,7 @@ "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", "Login Name" => "Nome de Login", "Create" => "Criar", +"Admin Recovery Password" => "Recuperação da Senha do Administrador", "Default Storage" => "Armazenamento Padrão", "Unlimited" => "Ilimitado", "Other" => "Outro", From 89f0c8f39d99b4c2bf0fb9dac1ad11cbe0781a3b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 27 May 2013 12:41:55 +0200 Subject: [PATCH 343/575] added check by numRows() changed to public api where it was possible reformat code to comply with the coding guidelines --- apps/files_encryption/lib/util.php | 722 ++++++++++++++++------------- 1 file changed, 387 insertions(+), 335 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 70fcd955be..f25ead1f5c 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -49,14 +49,13 @@ namespace OCA\Encryption; /** * @brief Class for utilities relating to encrypted file storage system - * @param OC_FilesystemView $view expected to have OC '/' as root path + * @param \OC_FilesystemView $view expected to have OC '/' as root path * @param string $userId ID of the logged in user * @param int $client indicating status of client side encryption. Currently * unused, likely to become obsolete shortly */ -class Util -{ +class Util { // Web UI: @@ -117,47 +116,52 @@ class Util * @param $userId * @param bool $client */ - public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { + public function __construct(\OC_FilesystemView $view, $userId, $client = false) { $this->view = $view; $this->userId = $userId; $this->client = $client; $this->isPublic = false; - $this->publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); - $this->recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // if we are anonymous/public - if ( $this->userId === false || - ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && - isset( $_GET['t'] ) ) + if ($this->userId === false + || (isset($_GET['service']) && $_GET['service'] == 'files' && isset($_GET['t'])) ) { $this->userId = $this->publicShareKeyId; // only handle for files_sharing app - if ( $GLOBALS['app'] === 'files_sharing' ) { + if ($GLOBALS['app'] === 'files_sharing') { $this->userDir = '/' . $GLOBALS['fileOwner']; $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' + . $this->fileFolderName; // TODO: Does this need to be user configurable? $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $GLOBALS['fileOwner'] . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key $this->isPublic = true; } } else { $this->userDir = '/' . $this->userId; $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->userFilesDir = + '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key } } @@ -167,11 +171,11 @@ class Util public function ready() { if ( - !$this->view->file_exists( $this->encryptionDir ) - or !$this->view->file_exists( $this->keyfilesPath ) - or !$this->view->file_exists( $this->shareKeysPath ) - or !$this->view->file_exists( $this->publicKeyPath ) - or !$this->view->file_exists( $this->privateKeyPath ) + !$this->view->file_exists($this->encryptionDir) + or !$this->view->file_exists($this->keyfilesPath) + or !$this->view->file_exists($this->shareKeysPath) + or !$this->view->file_exists($this->publicKeyPath) + or !$this->view->file_exists($this->privateKeyPath) ) { return false; @@ -188,24 +192,24 @@ class Util * @brief Sets up user folders and keys for serverside encryption * @param string $passphrase passphrase to encrypt server-stored private key with */ - public function setupServerSide( $passphrase = null ) { + public function setupServerSide($passphrase = null) { // Set directories to check / create $setUpDirs = array( - $this->userDir - , $this->userFilesDir - , $this->publicKeyDir - , $this->encryptionDir - , $this->keyfilesPath - , $this->shareKeysPath + $this->userDir, + $this->userFilesDir, + $this->publicKeyDir, + $this->encryptionDir, + $this->keyfilesPath, + $this->shareKeysPath ); // Check / create all necessary dirs - foreach ( $setUpDirs as $dirPath ) { + foreach ($setUpDirs as $dirPath) { - if ( !$this->view->file_exists( $dirPath ) ) { + if (!$this->view->file_exists($dirPath)) { - $this->view->mkdir( $dirPath ); + $this->view->mkdir($dirPath); } @@ -214,8 +218,8 @@ class Util // Create user keypair // we should never override a keyfile if ( - !$this->view->file_exists( $this->publicKeyPath ) - && !$this->view->file_exists( $this->privateKeyPath ) + !$this->view->file_exists($this->publicKeyPath) + && !$this->view->file_exists($this->privateKeyPath) ) { // Generate keypair @@ -224,35 +228,44 @@ class Util \OC_FileProxy::$enabled = false; // Save public key - $this->view->file_put_contents( $this->publicKeyPath, $keypair['publicKey'] ); + $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); // Encrypt private key with user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $passphrase ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); // Save private key - $this->view->file_put_contents( $this->privateKeyPath, $encryptedPrivateKey ); + $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); \OC_FileProxy::$enabled = true; } else { // check if public-key exists but private-key is missing - if ( $this->view->file_exists( $this->publicKeyPath ) && !$this->view->file_exists( $this->privateKeyPath ) ) { - \OC_Log::write( 'Encryption library', 'public key exists but private key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); - return false; - } else if ( !$this->view->file_exists( $this->publicKeyPath ) && $this->view->file_exists( $this->privateKeyPath ) ) { - \OC_Log::write( 'Encryption library', 'private key exists but public key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); + if ($this->view->file_exists($this->publicKeyPath) && !$this->view->file_exists($this->privateKeyPath)) { + \OCP\Util::writeLog('Encryption library', + 'public key exists but private key is missing for "' . $this->userId . '"', \OCP\Util::FATAL); return false; + } else { + if (!$this->view->file_exists($this->publicKeyPath) && $this->view->file_exists($this->privateKeyPath) + ) { + \OCP\Util::writeLog('Encryption library', + 'private key exists but public key is missing for "' . $this->userId . '"', \OCP\Util::FATAL); + return false; + } } } // If there's no record for this user's encryption preferences - if ( false === $this->recoveryEnabledForUser() ) { + if (false === $this->recoveryEnabledForUser()) { // create database configuration $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array( $this->userId, 'server-side', 0 ); - $query = \OCP\DB::prepare( $sql ); - $query->execute( $args ); + $args = array( + $this->userId, + 'server-side', + 0 + ); + $query = \OCP\DB::prepare($sql); + $query->execute($args); } @@ -276,32 +289,29 @@ class Util */ public function recoveryEnabledForUser() { - $sql = 'SELECT - recovery_enabled - FROM - `*PREFIX*encryption` - WHERE - uid = ?'; + $sql = 'SELECT `recovery_enabled` FROM `*PREFIX*encryption` WHERE uid = ?'; - $args = array( $this->userId ); + $args = array($this->userId); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - $result = $query->execute( $args ); + $result = $query->execute($args); $recoveryEnabled = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - if( isset( $row['recovery_enabled'] ) ) { - $recoveryEnabled[] = $row['recovery_enabled']; + if($result->numRows() > 0) { + $row = $result->fetchRow(); + if (isset($row['recovery_enabled'])) { + $recoveryEnabled[] = $row['recovery_enabled']; + } } } // If no record is found - if ( empty( $recoveryEnabled ) ) { + if (empty($recoveryEnabled)) { return false; @@ -319,36 +329,36 @@ class Util * @param bool $enabled Whether to enable or disable recovery * @return bool */ - public function setRecoveryForUser( $enabled ) { + public function setRecoveryForUser($enabled) { $recoveryStatus = $this->recoveryEnabledForUser(); // If a record for this user already exists, update it - if ( false === $recoveryStatus ) { + if (false === $recoveryStatus) { - $sql = 'INSERT INTO `*PREFIX*encryption` - (`uid`,`mode`,`recovery_enabled`) - VALUES (?,?,?)'; + $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array( $this->userId, 'server-side', $enabled ); + $args = array( + $this->userId, + 'server-side', + $enabled + ); // Create a new record instead } else { - $sql = 'UPDATE - *PREFIX*encryption - SET - recovery_enabled = ? - WHERE - uid = ?'; + $sql = 'UPDATE `*PREFIX*encryption` SET recovery_enabled = ? WHERE uid = ?'; - $args = array( $enabled, $this->userId ); + $args = array( + $enabled, + $this->userId + ); } - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - if ( $query->execute( $args ) ) { + if ($query->execute($args)) { return true; @@ -363,50 +373,55 @@ class Util /** * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search + * @param bool $found the founded files if called again * @return mixed false if 0 found, array on success. Keys: name, path * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findEncFiles( $directory, &$found = false ) { + public function findEncFiles($directory, &$found = false) { // Disable proxy - we don't want files to be decrypted before // we handle them \OC_FileProxy::$enabled = false; - if ( $found == false ) { - $found = array( 'plain' => array(), 'encrypted' => array(), 'legacy' => array() ); + if ($found == false) { + $found = array( + 'plain' => array(), + 'encrypted' => array(), + 'legacy' => array() + ); } if ( - $this->view->is_dir( $directory ) - && $handle = $this->view->opendir( $directory ) + $this->view->is_dir($directory) + && $handle = $this->view->opendir($directory) ) { - while ( false !== ( $file = readdir( $handle ) ) ) { + while (false !== ($file = readdir($handle))) { if ( $file != "." && $file != ".." ) { - $filePath = $directory . '/' . $this->view->getRelativePath( '/' . $file ); - $relPath = $this->stripUserFilesPath( $filePath ); + $filePath = $directory . '/' . $this->view->getRelativePath('/' . $file); + $relPath = $this->stripUserFilesPath($filePath); // If the path is a directory, search // its contents - if ( $this->view->is_dir( $filePath ) ) { + if ($this->view->is_dir($filePath)) { - $this->findEncFiles( $filePath, $found ); + $this->findEncFiles($filePath, $found); // If the path is a file, determine // its encryption status - } elseif ( $this->view->is_file( $filePath ) ) { + } elseif ($this->view->is_file($filePath)) { // Disable proxies again, some- // where they got re-enabled :/ \OC_FileProxy::$enabled = false; - $data = $this->view->file_get_contents( $filePath ); + $data = $this->view->file_get_contents($filePath); // If the file is encrypted // NOTE: If the userId is @@ -416,22 +431,31 @@ class Util // scanning every file like this // will eat server resources :( if ( - Keymanager::getFileKey( $this->view, $this->userId, $relPath ) - && Crypt::isCatfileContent( $data ) + Keymanager::getFileKey($this->view, $this->userId, $relPath) + && Crypt::isCatfileContent($data) ) { - $found['encrypted'][] = array( 'name' => $file, 'path' => $filePath ); + $found['encrypted'][] = array( + 'name' => $file, + 'path' => $filePath + ); // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { + } elseif (Crypt::isLegacyEncryptedContent($this->tail($filePath, 3), $relPath)) { - $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); + $found['legacy'][] = array( + 'name' => $file, + 'path' => $filePath + ); // If the file is not encrypted } else { - $found['plain'][] = array( 'name' => $file, 'path' => $relPath ); + $found['plain'][] = array( + 'name' => $file, + 'path' => $relPath + ); } @@ -443,7 +467,7 @@ class Util \OC_FileProxy::$enabled = true; - if ( empty( $found ) ) { + if (empty($found)) { return false; @@ -466,38 +490,38 @@ class Util * @note Safe to use on large files; does not read entire file to memory * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php */ - public function tail( $filename, $numLines ) { + public function tail($filename, $numLines) { \OC_FileProxy::$enabled = false; $text = ''; $pos = -1; - $handle = $this->view->fopen( $filename, 'r' ); + $handle = $this->view->fopen($filename, 'r'); - while ( $numLines > 0 ) { + while ($numLines > 0) { --$pos; - if ( fseek( $handle, $pos, SEEK_END ) !== 0 ) { + if (fseek($handle, $pos, SEEK_END) !== 0) { - rewind( $handle ); + rewind($handle); $numLines = 0; - } elseif ( fgetc( $handle ) === "\n" ) { + } elseif (fgetc($handle) === "\n") { --$numLines; } - $block_size = ( -$pos ) % 8192; - if ( $block_size === 0 || $numLines === 0 ) { + $block_size = (-$pos) % 8192; + if ($block_size === 0 || $numLines === 0) { - $text = fread( $handle, ( $block_size === 0 ? 8192 : $block_size ) ) . $text; + $text = fread($handle, ($block_size === 0 ? 8192 : $block_size)) . $text; } } - fclose( $handle ); + fclose($handle); \OC_FileProxy::$enabled = true; @@ -509,7 +533,7 @@ class Util * @param $path * @return boolean */ - public function isEncryptedPath( $path ) { + public function isEncryptedPath($path) { // Disable encryption proxy so data retrieved is in its // original form @@ -518,15 +542,15 @@ class Util // we only need 24 byte from the last chunk $data = ''; - $handle = $this->view->fopen( $path, 'r' ); - if ( !fseek( $handle, -24, SEEK_END ) ) { - $data = fgets( $handle ); + $handle = $this->view->fopen($path, 'r'); + if (!fseek($handle, -24, SEEK_END)) { + $data = fgets($handle); } // re-enable proxy \OC_FileProxy::$enabled = $proxyStatus; - return Crypt::isCatfileContent( $data ); + return Crypt::isCatfileContent($data); } @@ -535,7 +559,7 @@ class Util * @param string $path absolute path * @return bool */ - public function getFileSize( $path ) { + public function getFileSize($path) { $result = 0; @@ -544,33 +568,33 @@ class Util \OC_FileProxy::$enabled = false; // Reformat path for use with OC_FSV - $pathSplit = explode( '/', $path ); - $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + $pathSplit = explode('/', $path); + $pathRelative = implode('/', array_slice($pathSplit, 3)); - if ( $pathSplit[2] == 'files' && $this->view->file_exists( $path ) && $this->isEncryptedPath( $path ) ) { + if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { // get the size from filesystem - $fullPath = $this->view->getLocalFile( $path ); - $size = filesize( $fullPath ); + $fullPath = $this->view->getLocalFile($path); + $size = filesize($fullPath); // calculate last chunk nr - $lastChunkNr = floor( $size / 8192 ); + $lastChunkNr = floor($size / 8192); // open stream - $stream = fopen( 'crypt://' . $pathRelative, "r" ); + $stream = fopen('crypt://' . $pathRelative, "r"); - if ( is_resource( $stream ) ) { + if (is_resource($stream)) { // calculate last chunk position - $lastChunckPos = ( $lastChunkNr * 8192 ); + $lastChunckPos = ($lastChunkNr * 8192); // seek to end - fseek( $stream, $lastChunckPos ); + fseek($stream, $lastChunckPos); // get the content of the last chunk - $lastChunkContent = fread( $stream, 8192 ); + $lastChunkContent = fread($stream, 8192); // calc the real file size with the size of the last chunk - $realSize = ( ( $lastChunkNr * 6126 ) + strlen( $lastChunkContent ) ); + $realSize = (($lastChunkNr * 6126) + strlen($lastChunkContent)); // store file size $result = $realSize; @@ -584,10 +608,10 @@ class Util /** * @brief fix the file size of the encrypted file - * @param $path absolute path - * @return true / false if file is encrypted + * @param string $path absolute path + * @return boolean true / false if file is encrypted */ - public function fixFileSize( $path ) { + public function fixFileSize($path) { $result = false; @@ -595,18 +619,18 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $realSize = $this->getFileSize( $path ); + $realSize = $this->getFileSize($path); - if ( $realSize > 0 ) { + if ($realSize > 0) { - $cached = $this->view->getFileInfo( $path ); + $cached = $this->view->getFileInfo($path); $cached['encrypted'] = true; // set the size $cached['unencrypted_size'] = $realSize; // put file info - $this->view->putFileInfo( $path, $cached ); + $this->view->putFileInfo($path, $cached); $result = true; @@ -621,12 +645,12 @@ class Util * @brief Format a path to be relative to the /user/files/ directory * @note e.g. turns '/admin/files/test.txt' into 'test.txt' */ - public function stripUserFilesPath( $path ) { + public function stripUserFilesPath($path) { - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 2 ); - $relPath = implode( '/', $sliced ); + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + $sliced = array_slice($split, 2); + $relPath = implode('/', $sliced); return $relPath; @@ -636,12 +660,12 @@ class Util * @param $path * @return bool */ - public function isSharedPath( $path ) { + public function isSharedPath($path) { - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); - if ( $split[2] == "Shared" ) { + if ($split[2] == "Shared") { return true; @@ -661,15 +685,15 @@ class Util * @return bool * @note Encryption is recursive */ - public function encryptAll( $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { + public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) { - if ( $found = $this->findEncFiles( $dirPath ) ) { + if ($found = $this->findEncFiles($dirPath)) { // Disable proxy to prevent file being encrypted twice \OC_FileProxy::$enabled = false; // Encrypt unencrypted files - foreach ( $found['plain'] as $plainFile ) { + foreach ($found['plain'] as $plainFile) { //relative to data//file $relPath = $plainFile['path']; @@ -678,80 +702,87 @@ class Util $rawPath = $this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); + $plainHandle1 = $this->view->fopen($rawPath, 'rb'); // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); + $plainHandle2 = $this->view->fopen($rawPath . '.plaintmp', 'wb'); // Move plain file to a temporary location - stream_copy_to_stream( $plainHandle1, $plainHandle2 ); + stream_copy_to_stream($plainHandle1, $plainHandle2); // Close access to original file // $this->view->fclose( $plainHandle1 ); // not implemented in view{} // Delete original plain file so we can rename enc file later - $this->view->unlink( $rawPath ); + $this->view->unlink($rawPath); // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); + $encHandle = fopen('crypt://' . $relPath, 'wb'); // Save data from plain stream to new encrypted file via enc stream // NOTE: Stream{} will be invoked for handling // the encryption, and should handle all keys // and their generation etc. automatically - stream_copy_to_stream( $plainHandle2, $encHandle ); + stream_copy_to_stream($plainHandle2, $encHandle); // get file size - $size = $this->view->filesize( $rawPath . '.plaintmp' ); + $size = $this->view->filesize($rawPath . '.plaintmp'); // Delete temporary plain copy of file - $this->view->unlink( $rawPath . '.plaintmp' ); + $this->view->unlink($rawPath . '.plaintmp'); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); + \OC\Files\Filesystem::putFileInfo($plainFile['path'], array( + 'encrypted' => true, + 'size' => $size, + 'unencrypted_size' => $size + )); } // Encrypt legacy encrypted files if ( - !empty( $legacyPassphrase ) - && !empty( $newPassphrase ) + !empty($legacyPassphrase) + && !empty($newPassphrase) ) { - foreach ( $found['legacy'] as $legacyFile ) { + foreach ($found['legacy'] as $legacyFile) { // Fetch data from file - $legacyData = $this->view->file_get_contents( $legacyFile['path'] ); + $legacyData = $this->view->file_get_contents($legacyFile['path']); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ( $this->view->file_exists( $legacyFile['path'] ) ) { - $uniqueUserIds = $this->getSharingUsersArray( $sharingEnabled, $legacyFile['path'], $this->userId ); + if ($this->view->file_exists($legacyFile['path'])) { + $uniqueUserIds = $this->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); } else { $uniqueUserIds[] = $this->userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $this->view, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path'] ); + $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path']); $rawPath = $legacyFile['path']; - $relPath = $this->stripUserFilesPath( $rawPath ); + $relPath = $this->stripUserFilesPath($rawPath); // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['filekey'] ); + Keymanager::setFileKey($this->view, $relPath, $this->userId, $recrypted['filekey']); // Save sharekeys to user folders - Keymanager::setShareKeys( $this->view, $relPath, $recrypted['sharekeys'] ); + Keymanager::setShareKeys($this->view, $relPath, $recrypted['sharekeys']); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents( $rawPath, $recrypted['data'] ); + $this->view->file_put_contents($rawPath, $recrypted['data']); - $size = strlen( $recrypted['data'] ); + $size = strlen($recrypted['data']); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $rawPath, array( 'encrypted' => true, 'size' => $size ), '' ); + \OC\Files\Filesystem::putFileInfo($rawPath, array( + 'encrypted' => true, + 'size' => $size + ), ''); } } @@ -771,9 +802,9 @@ class Util * @param string $pathName Name of the directory to return the path of * @return string path */ - public function getPath( $pathName ) { + public function getPath($pathName) { - switch ( $pathName ) { + switch ($pathName) { case 'publicKeyDir': @@ -815,20 +846,22 @@ class Util * @param int $fileId id of the file * @return string path of the file */ - public static function fileIdToPath( $fileId ) { + public static function fileIdToPath($fileId) { - $query = \OC_DB::prepare( 'SELECT `path`' - . ' FROM `*PREFIX*filecache`' - . ' WHERE `fileid` = ?' ); + $sql = 'SELECT `path` FROM `*PREFIX*filecache` WHERE `fileid` = ?'; - $result = $query->execute( array( $fileId ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($fileId)); $path = false; - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - $path = substr( $row['path'], strlen('files') ); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + $path = substr($row['path'], strlen('files')); + } } return $path; @@ -838,17 +871,17 @@ class Util /** * @brief Filter an array of UIDs to return only ones ready for sharing * @param array $unfilteredUsers users to be checked for sharing readiness - * @return multi-dimensional array. keys: ready, unready + * @return array as multi-dimensional array. keys: ready, unready */ - public function filterShareReadyUsers( $unfilteredUsers ) { + public function filterShareReadyUsers($unfilteredUsers) { // This array will collect the filtered IDs $readyIds = $unreadyIds = array(); // Loop through users and create array of UIDs that need new keyfiles - foreach ( $unfilteredUsers as $user ) { + foreach ($unfilteredUsers as $user) { - $util = new Util( $this->view, $user ); + $util = new Util($this->view, $user); // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) @@ -868,7 +901,8 @@ class Util // Log warning; we can't do necessary setup here // because we don't have the user passphrase - \OC_Log::write( 'Encryption library', '"' . $user . '" is not setup for encryption', \OC_Log::WARN ); + \OCP\Util::writeLog('Encryption library', + '"' . $user . '" is not setup for encryption', \OCP\Util::WARN); } @@ -891,31 +925,31 @@ class Util * @note This was used when 2 types of encryption for keyfiles was used, * but now we've switched to exclusively using openssl_seal() */ - public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { + public function decryptUnknownKeyfile($filePath, $fileOwner, $privateKey) { // Get the encrypted keyfile // NOTE: the keyfile format depends on how it was encrypted! At // this stage we don't know how it was encrypted - $encKeyfile = Keymanager::getFileKey( $this->view, $this->userId, $filePath ); + $encKeyfile = Keymanager::getFileKey($this->view, $this->userId, $filePath); // We need to decrypt the keyfile // Has the file been shared yet? if ( $this->userId == $fileOwner - && !Keymanager::getShareKey( $this->view, $this->userId, $filePath ) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true + && !Keymanager::getShareKey($this->view, $this->userId, $filePath) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true ) { // The file has no shareKey, and its keyfile must be // decrypted conventionally - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + $plainKeyfile = Crypt::keyDecrypt($encKeyfile, $privateKey); } else { // The file has a shareKey and must use it for decryption - $shareKey = Keymanager::getShareKey( $this->view, $this->userId, $filePath ); + $shareKey = Keymanager::getShareKey($this->view, $this->userId, $filePath); - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); } @@ -930,22 +964,24 @@ class Util * @param string $filePath path of the file to be shared * @return bool */ - public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { + public function setSharedFileKeyfiles(Session $session, array $users, $filePath) { // Make sure users are capable of sharing - $filteredUids = $this->filterShareReadyUsers( $users ); + $filteredUids = $this->filterShareReadyUsers($users); // If we're attempting to share to unready users - if ( !empty( $filteredUids['unready'] ) ) { + if (!empty($filteredUids['unready'])) { - \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"' . print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); + \OCP\Util::writeLog('Encryption library', + 'Sharing to these user(s) failed as they are unready for encryption:"' + . print_r($filteredUids['unready'], 1), \OCP\Util::WARN); return false; } // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); // Note proxy status then disable it $proxyStatus = \OC_FileProxy::$enabled; @@ -954,22 +990,23 @@ class Util // Get the current users's private key for decrypting existing keyfile $privateKey = $session->getPrivateKey(); - $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); + $fileOwner = \OC\Files\Filesystem::getOwner($filePath); // Decrypt keyfile - $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); + $plainKeyfile = $this->decryptUnknownKeyfile($filePath, $fileOwner, $privateKey); // Re-enc keyfile to (additional) sharekeys - $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory if ( - !Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) - || !Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) + !Keymanager::setFileKey($this->view, $filePath, $fileOwner, $multiEncKey['data']) + || !Keymanager::setShareKeys($this->view, $filePath, $multiEncKey['keys']) ) { - \OC_Log::write( 'Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR ); + \OCP\Util::writeLog('Encryption library', + 'Keyfiles could not be saved for users sharing ' . $filePath, \OCP\Util::ERROR); return false; @@ -985,11 +1022,11 @@ class Util * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle */ - public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { + public function getSharingUsersArray($sharingEnabled, $filePath, $currentUserId = false) { // Check if key recovery is enabled if ( - \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) + \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled') && $this->recoveryEnabledForUser() ) { @@ -1002,15 +1039,15 @@ class Util } // Make sure that a share key is generated for the owner too - list( $owner, $ownerPath ) = $this->getUidAndFilename( $filePath ); + list($owner, $ownerPath) = $this->getUidAndFilename($filePath); $userIds = array(); - if ( $sharingEnabled ) { + if ($sharingEnabled) { // Find out who, if anyone, is sharing the file - $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner, true, true, true ); + $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, true, true, true); $userIds = $result['users']; - if ( $result['public'] ) { + if ($result['public']) { $userIds[] = $this->publicShareKeyId; } @@ -1018,10 +1055,10 @@ class Util // If recovery is enabled, add the // Admin UID to list of users to share to - if ( $recoveryEnabled ) { + if ($recoveryEnabled) { // Find recoveryAdmin user ID - $recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + $recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // Add recoveryAdmin to list of users sharing $userIds[] = $recoveryKeyId; @@ -1029,14 +1066,14 @@ class Util } // add current user if given - if ( $currentUserId != false ) { + if ($currentUserId != false) { $userIds[] = $currentUserId; } // Remove duplicate UIDs - $uniqueUserIds = array_unique( $userIds ); + $uniqueUserIds = array_unique($userIds); return $uniqueUserIds; @@ -1047,20 +1084,18 @@ class Util * @param $status * @return bool */ - public function setMigrationStatus( $status ) { + public function setMigrationStatus($status) { - $sql = 'UPDATE - *PREFIX*encryption - SET - migration_status = ? - WHERE - uid = ?'; + $sql = 'UPDATE `*PREFIX*encryption` SET migration_status = ? WHERE uid = ?'; - $args = array( $status, $this->userId ); + $args = array( + $status, + $this->userId + ); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - if ( $query->execute( $args ) ) { + if ($query->execute($args)) { return true; @@ -1080,32 +1115,29 @@ class Util */ public function getMigrationStatus() { - $sql = 'SELECT - migration_status - FROM - `*PREFIX*encryption` - WHERE - uid = ?'; + $sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE uid = ?'; - $args = array( $this->userId ); + $args = array($this->userId); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - $result = $query->execute( $args ); + $result = $query->execute($args); $migrationStatus = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - if( isset( $row['migration_status'] ) ) { - $migrationStatus[] = $row['migration_status']; + if($result->numRows() > 0) { + $row = $result->fetchRow(); + if (isset($row['migration_status'])) { + $migrationStatus[] = $row['migration_status']; + } } } // If no record is found - if ( empty( $migrationStatus ) ) { + if (empty($migrationStatus)) { return false; @@ -1125,44 +1157,51 @@ class Util * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename( $path ) { + public function getUidAndFilename($path) { - $view = new \OC\Files\View( $this->userFilesDir ); - $fileOwnerUid = $view->getOwner( $path ); + $view = new \OC\Files\View($this->userFilesDir); + $fileOwnerUid = $view->getOwner($path); // handle public access - if ( $this->isPublic ) { + if ($this->isPublic) { $filename = $path; $fileOwnerUid = $GLOBALS['fileOwner']; - return array( $fileOwnerUid, $filename ); + return array( + $fileOwnerUid, + $filename + ); } else { // Check that UID is valid - if ( !\OCP\User::userExists( $fileOwnerUid ) ) { - throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); + if (!\OCP\User::userExists($fileOwnerUid)) { + throw new \Exception( + 'Could not find owner (UID = "' . var_export($fileOwnerUid, 1) . '") of file "' . $path . '"'); } // NOTE: Bah, this dependency should be elsewhere - \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); + \OC\Files\Filesystem::initMountPoints($fileOwnerUid); // If the file owner is the currently logged in user - if ( $fileOwnerUid == $this->userId ) { + if ($fileOwnerUid == $this->userId) { // Assume the path supplied is correct $filename = $path; } else { - $info = $view->getFileInfo( $path ); - $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); + $info = $view->getFileInfo($path); + $ownerView = new \OC\Files\View('/' . $fileOwnerUid . '/files'); // Fetch real file path from DB - $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir + $filename = $ownerView->getPath($info['fileid']); // TODO: Check that this returns a path without including the user data dir } - return array( $fileOwnerUid, $filename ); + return array( + $fileOwnerUid, + $filename + ); } @@ -1173,26 +1212,26 @@ class Util * @param string $dir relative to the users files folder * @return array with list of files relative to the users files folder */ - public function getAllFiles( $dir ) { + public function getAllFiles($dir) { $result = array(); - $content = $this->view->getDirectoryContent( $this->userFilesDir . $dir ); + $content = $this->view->getDirectoryContent($this->userFilesDir . $dir); // handling for re shared folders - $path_split = explode( '/', $dir ); + $path_split = explode('/', $dir); - foreach ( $content as $c ) { + foreach ($content as $c) { - $sharedPart = $path_split[sizeof( $path_split ) - 1]; - $targetPathSplit = array_reverse( explode( '/', $c['path'] ) ); + $sharedPart = $path_split[sizeof($path_split) - 1]; + $targetPathSplit = array_reverse(explode('/', $c['path'])); $path = ''; // rebuild path - foreach ( $targetPathSplit as $pathPart ) { + foreach ($targetPathSplit as $pathPart) { - if ( $pathPart !== $sharedPart ) { + if ($pathPart !== $sharedPart) { $path = '/' . $pathPart . $path; @@ -1206,9 +1245,9 @@ class Util $path = $dir . $path; - if ( $c['type'] === "dir" ) { + if ($c['type'] === "dir") { - $result = array_merge( $result, $this->getAllFiles( $path ) ); + $result = array_merge($result, $this->getAllFiles($path)); } else { @@ -1226,19 +1265,21 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getShareParent( $id ) { + public static function getShareParent($id) { - $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' - . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?' ); + $sql = 'SELECT `file_target`, `item_type` FROM `*PREFIX*share` WHERE `id` = ?'; - $result = $query->execute( array( $id ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($id)); $row = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + } } return $row; @@ -1250,19 +1291,21 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getParentFromShare( $id ) { + public static function getParentFromShare($id) { - $query = \OC_DB::prepare( 'SELECT `parent`' - . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?' ); + $sql = 'SELECT `parent` FROM `*PREFIX*share` WHERE `id` = ?'; - $result = $query->execute( array( $id ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($id)); $row = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + } } return $row; @@ -1275,39 +1318,43 @@ class Util * @internal param int $Id of a share * @return string owner */ - public function getOwnerFromSharedFile( $id ) { + public function getOwnerFromSharedFile($id) { - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $result = $query->execute( array( $id ) ); + $result = $query->execute(array($id)); $source = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $source = $result->fetchRow(); + if($result->numRows() > 0) { + $source = $result->fetchRow(); + } } $fileOwner = false; - if ( isset( $source['parent'] ) ) { + if (isset($source['parent'])) { $parent = $source['parent']; - while ( isset( $parent ) ) { + while (isset($parent)) { - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $result = $query->execute( array( $parent ) ); + $result = $query->execute(array($parent)); $item = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $item = $result->fetchRow(); + if($result->numRows() > 0) { + $item = $result->fetchRow(); + } } - if ( isset( $item['parent'] ) ) { + if (isset($item['parent'])) { $parent = $item['parent']; @@ -1348,7 +1395,7 @@ class Util * @param $password * @return bool */ - public function checkRecoveryPassword( $password ) { + public function checkRecoveryPassword($password) { $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; $pathControlData = '/control-file/controlfile.enc'; @@ -1356,16 +1403,16 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $recoveryKey = $this->view->file_get_contents( $pathKey ); + $recoveryKey = $this->view->file_get_contents($pathKey); - $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent( $recoveryKey, $password ); + $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent($recoveryKey, $password); - $controlData = $this->view->file_get_contents( $pathControlData ); - $decryptedControlData = Crypt::keyDecrypt( $controlData, $decryptedRecoveryKey ); + $controlData = $this->view->file_get_contents($pathControlData); + $decryptedControlData = Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); \OC_FileProxy::$enabled = $proxyStatus; - if ( $decryptedControlData === 'ownCloud' ) { + if ($decryptedControlData === 'ownCloud') { return true; } @@ -1382,19 +1429,19 @@ class Util /** * @brief add recovery key to all encrypted files */ - public function addRecoveryKeys( $path = '/' ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { + public function addRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { // get relative path from files_encryption/keyfiles/ - $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); - if ( $item['type'] == 'dir' ) { - $this->addRecoveryKeys( $filePath . '/' ); + $filePath = substr($item['path'], strlen('files_encryption/keyfiles')); + if ($item['type'] == 'dir') { + $this->addRecoveryKeys($filePath . '/'); } else { - $session = new Session( new \OC_FilesystemView( '/' ) ); + $session = new Session(new \OC_FilesystemView('/')); $sharingEnabled = \OCP\Share::isEnabled(); - $file = substr( $filePath, 0, -4 ); - $usersSharing = $this->getSharingUsersArray( $sharingEnabled, $file ); - $this->setSharedFileKeyfiles( $session, $usersSharing, $file ); + $file = substr($filePath, 0, -4); + $usersSharing = $this->getSharingUsersArray($sharingEnabled, $file); + $this->setSharedFileKeyfiles($session, $usersSharing, $file); } } } @@ -1402,16 +1449,16 @@ class Util /** * @brief remove recovery key to all encrypted files */ - public function removeRecoveryKeys( $path = '/' ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { + public function removeRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { // get relative path from files_encryption/keyfiles - $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); - if ( $item['type'] == 'dir' ) { - $this->removeRecoveryKeys( $filePath . '/' ); + $filePath = substr($item['path'], strlen('files_encryption/keyfiles')); + if ($item['type'] == 'dir') { + $this->removeRecoveryKeys($filePath . '/'); } else { - $file = substr( $filePath, 0, -4 ); - $this->view->unlink( $this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey' ); + $file = substr($filePath, 0, -4); + $this->view->unlink($this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey'); } } } @@ -1421,39 +1468,43 @@ class Util * @param string $file * @param string $privateKey recovery key to decrypt the file */ - private function recoverFile( $file, $privateKey ) { + private function recoverFile($file, $privateKey) { $sharingEnabled = \OCP\Share::isEnabled(); // Find out who, if anyone, is sharing the file - if ( $sharingEnabled ) { - $result = \OCP\Share::getUsersSharingFile( $file, $this->userId, true, true, true ); + if ($sharingEnabled) { + $result = \OCP\Share::getUsersSharingFile($file, $this->userId, true, true, true); $userIds = $result['users']; $userIds[] = $this->recoveryKeyId; - if ( $result['public'] ) { + if ($result['public']) { $userIds[] = $this->publicShareKeyId; } } else { - $userIds = array( $this->userId, $this->recoveryKeyId ); + $userIds = array( + $this->userId, + $this->recoveryKeyId + ); } - $filteredUids = $this->filterShareReadyUsers( $userIds ); + $filteredUids = $this->filterShareReadyUsers($userIds); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //decrypt file key - $encKeyfile = $this->view->file_get_contents( $this->keyfilesPath . $file . ".key" ); - $shareKey = $this->view->file_get_contents( $this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey" ); - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $encKeyfile = $this->view->file_get_contents($this->keyfilesPath . $file . ".key"); + $shareKey = $this->view->file_get_contents( + $this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey"); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // encrypt file key again to all users, this time with the new public key for the recovered use - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); - $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); // write new keys to filesystem TDOO! - $this->view->file_put_contents( $this->keyfilesPath . $file . '.key', $multiEncKey['data'] ); - foreach ( $multiEncKey['keys'] as $userId => $shareKey ) { + $this->view->file_put_contents($this->keyfilesPath . $file . '.key', $multiEncKey['data']); + foreach ($multiEncKey['keys'] as $userId => $shareKey) { $shareKeyPath = $this->shareKeysPath . $file . '.' . $userId . '.shareKey'; - $this->view->file_put_contents( $shareKeyPath, $shareKey ); + $this->view->file_put_contents($shareKeyPath, $shareKey); } // Return proxy to original status @@ -1465,15 +1516,15 @@ class Util * @param string $path to look for files keys * @param string $privateKey private recovery key which is used to decrypt the files */ - private function recoverAllFiles( $path, $privateKey ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { - $filePath = substr( $item['path'], 25 ); - if ( $item['type'] == 'dir' ) { - $this->recoverAllFiles( $filePath . '/', $privateKey ); + private function recoverAllFiles($path, $privateKey) { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { + $filePath = substr($item['path'], 25); + if ($item['type'] == 'dir') { + $this->recoverAllFiles($filePath . '/', $privateKey); } else { - $file = substr( $filePath, 0, -4 ); - $this->recoverFile( $file, $privateKey ); + $file = substr($filePath, 0, -4); + $this->recoverFile($file, $privateKey); } } } @@ -1482,18 +1533,19 @@ class Util * @brief recover users files in case of password lost * @param string $recoveryPassword */ - public function recoverUsersFiles( $recoveryPassword ) { + public function recoverUsersFiles($recoveryPassword) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $recoveryPassword ); + $encryptedKey = $this->view->file_get_contents( + '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $recoveryPassword); \OC_FileProxy::$enabled = $proxyStatus; - $this->recoverAllFiles( '/', $privateKey ); + $this->recoverAllFiles('/', $privateKey); } } From d408cd7f376c6b6841fd849758c1dbb6d9f12806 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 15:24:37 +0200 Subject: [PATCH 344/575] fix https://github.com/owncloud/core/issues/3320 --- apps/files_trashbin/js/trash.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index eed253d660..63baa83f52 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -117,6 +117,7 @@ $(document).ready(function() { }); $('.delete').click('click',function(event) { + event.preventDefault(); console.log("delete selected"); var spinner = ''; var files=getSelectedFiles('file'); From 1a3f7891ea86f108fbd984b12fe047ffacb20efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 15:31:26 +0200 Subject: [PATCH 345/575] remove unused varaibles --- apps/files_encryption/lib/crypt.php | 4 +--- apps/files_encryption/lib/util.php | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index f5b7a8a0a4..8e3522917d 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -640,11 +640,9 @@ class Crypt * @param $legacyEncryptedContent * @param $legacyPassphrase * @param $publicKeys - * @param $newPassphrase - * @param $path * @return array */ - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys ) { $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index cac67d496e..7f34d21682 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -720,7 +720,7 @@ class Util $publicKeys = Keymanager::getPublicKeys( $this->view, $uniqueUserIds ); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path'] ); + $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys ); $rawPath = $legacyFile['path']; $relPath = $this->stripUserFilesPath( $rawPath ); From 710e9c2d14c8f25cfedf5cc04fa4ca0e12fc2f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 15:34:57 +0200 Subject: [PATCH 346/575] fix tests, after unused variables are removed --- apps/files_encryption/tests/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 74b4252a1d..fa2a2984d5 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -575,7 +575,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyKeyRecryptKeyfileEncrypt($crypted) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey)); $this->assertNotEquals($this->dataLong, $recrypted['data']); From 841b420bc49d0a50e030279b68c27f6c05446c34 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 16:37:43 +0200 Subject: [PATCH 347/575] add event.preventDefault to undelete function --- apps/files_trashbin/js/trash.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 63baa83f52..691642811b 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -93,6 +93,7 @@ $(document).ready(function() { }); $('.undelete').click('click',function(event) { + event.preventDefault(); var spinner = ''; var files=getSelectedFiles('file'); var fileslist = JSON.stringify(files); From 5d32e214b7c91d3710c46f522d82104cbad5b837 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 27 May 2013 17:26:58 +0200 Subject: [PATCH 348/575] reformat code --- apps/files_encryption/ajax/adminrecovery.php | 13 +- .../ajax/changeRecoveryPassword.php | 8 +- apps/files_encryption/ajax/userrecovery.php | 22 +- apps/files_encryption/appinfo/app.php | 8 +- apps/files_encryption/hooks/hooks.php | 356 +++++++++--------- apps/files_encryption/lib/crypt.php | 205 +++++----- apps/files_encryption/lib/helper.php | 84 ++--- apps/files_encryption/lib/keymanager.php | 227 +++++------ apps/files_encryption/lib/proxy.php | 198 +++++----- apps/files_encryption/lib/session.php | 57 +-- apps/files_encryption/lib/stream.php | 142 +++---- 11 files changed, 677 insertions(+), 643 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 6d7953b563..d532bb62b6 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -13,7 +13,7 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -$l=OC_L10N::get('files_encryption'); +$l = OC_L10N::get('files_encryption'); $return = false; @@ -21,7 +21,7 @@ $return = false; $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); -if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ +if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1) { $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); $action = "enable"; @@ -37,7 +37,12 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ // Return success or failure if ($return) { - \OCP\JSON::success(array("data" => array( "message" => $l->t('Recovery key successfully ' . $action.'d')))); + \OCP\JSON::success(array("data" => array("message" => $l->t('Recovery key successfully ' . $action . 'd')))); } else { - \OCP\JSON::error(array("data" => array( "message" => $l->t('Could not '.$action.' recovery key. Please check your recovery key password!')))); + \OCP\JSON::error(array( + "data" => array( + "message" => $l->t( + 'Could not ' . $action . ' recovery key. Please check your recovery key password!') + ) + )); } diff --git a/apps/files_encryption/ajax/changeRecoveryPassword.php b/apps/files_encryption/ajax/changeRecoveryPassword.php index d990796a4f..0103d93375 100644 --- a/apps/files_encryption/ajax/changeRecoveryPassword.php +++ b/apps/files_encryption/ajax/changeRecoveryPassword.php @@ -6,7 +6,7 @@ * See the COPYING-README file. * * @brief Script to change recovery key password - * + * */ use OCA\Encryption; @@ -15,7 +15,7 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -$l=OC_L10N::get('core'); +$l = OC_L10N::get('core'); $return = false; @@ -46,7 +46,7 @@ if ($result) { // success or failure if ($return) { - \OCP\JSON::success(array("data" => array( "message" => $l->t('Password successfully changed.')))); + \OCP\JSON::success(array("data" => array("message" => $l->t('Password successfully changed.')))); } else { - \OCP\JSON::error(array("data" => array( "message" => $l->t('Could not change the password. Maybe the old password was not correct.')))); + \OCP\JSON::error(array("data" => array("message" => $l->t('Could not change the password. Maybe the old password was not correct.')))); } \ No newline at end of file diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index 1f42b376e4..4b364121e3 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -10,32 +10,32 @@ use OCA\Encryption; \OCP\JSON::checkLoggedIn(); -\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -if ( - isset( $_POST['userEnableRecovery'] ) - && ( 0 == $_POST['userEnableRecovery'] || 1 == $_POST['userEnableRecovery'] ) +if ( + isset($_POST['userEnableRecovery']) + && (0 == $_POST['userEnableRecovery'] || 1 == $_POST['userEnableRecovery']) ) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new \OCA\Encryption\Util( $view, $userId ); - + $view = new \OC_FilesystemView('/'); + $util = new \OCA\Encryption\Util($view, $userId); + // Save recovery preference to DB - $return = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); + $return = $util->setRecoveryForUser($_POST['userEnableRecovery']); if ($_POST['userEnableRecovery'] == "1") { $util->addRecoveryKeys(); } else { $util->removeRecoveryKeys(); } - + } else { $return = false; - + } // Return success or failure -( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file +($return) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 7d01696e08..d9bb4d5e74 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -10,7 +10,7 @@ OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php'; OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php'; OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php'; -OC_FileProxy::register( new OCA\Encryption\Proxy() ); +OC_FileProxy::register(new OCA\Encryption\Proxy()); // User related hooks OCA\Encryption\Helper::registerUserHooks(); @@ -21,7 +21,7 @@ OCA\Encryption\Helper::registerShareHooks(); // Filesystem related hooks OCA\Encryption\Helper::registerFilesystemHooks(); -stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); +stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); // check if we are logged in if (OCP\User::isLoggedIn()) { @@ -46,6 +46,6 @@ if (OCP\User::isLoggedIn()) { } // Register settings scripts -OCP\App::registerAdmin( 'files_encryption', 'settings-admin' ); -OCP\App::registerPersonal( 'files_encryption', 'settings-personal' ); +OCP\App::registerAdmin('files_encryption', 'settings-admin'); +OCP\App::registerPersonal('files_encryption', 'settings-personal'); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2066300a16..f0d0856d6e 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -37,108 +37,108 @@ class Hooks { * @brief Startup encryption backend upon user login * @note This method should never be called for users using client side encryption */ - public static function login( $params ) { - + public static function login($params) { + // Manually initialise Filesystem{} singleton with correct // fake root path, in order to avoid fatal webdav errors - // NOTE: disabled because this give errors on webdav! + // NOTE: disabled because this give errors on webdav! //\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); - - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $params['uid'] ); + $view = new \OC_FilesystemView('/'); - // setup user, if user not ready force relogin - if(Helper::setupUser($util, $params['password']) === false) { - return false; - } + $util = new Util($view, $params['uid']); - $encryptedKey = Keymanager::getPrivateKey( $view, $params['uid'] ); - - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); + // setup user, if user not ready force relogin + if (Helper::setupUser($util, $params['password']) === false) { + return false; + } + + $encryptedKey = Keymanager::getPrivateKey($view, $params['uid']); + + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $params['password']); + + $session = new Session($view); + + $session->setPrivateKey($privateKey, $params['uid']); - $session = new Session( $view ); - - $session->setPrivateKey( $privateKey, $params['uid'] ); - // Check if first-run file migration has already been performed $migrationCompleted = $util->getMigrationStatus(); - + // If migration not yet done - if ( ! $migrationCompleted ) { - - $userView = new \OC_FilesystemView( '/' . $params['uid'] ); - + if (!$migrationCompleted) { + + $userView = new \OC_FilesystemView('/' . $params['uid']); + // Set legacy encryption key if it exists, to support // depreciated encryption system if ( - $userView->file_exists( 'encryption.key' ) - && $encLegacyKey = $userView->file_get_contents( 'encryption.key' ) + $userView->file_exists('encryption.key') + && $encLegacyKey = $userView->file_get_contents('encryption.key') ) { - - $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); - - $session->setLegacyKey( $plainLegacyKey ); - + + $plainLegacyKey = Crypt::legacyDecrypt($encLegacyKey, $params['password']); + + $session->setLegacyKey($plainLegacyKey); + } - $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); - + $publicKey = Keymanager::getPublicKey($view, $params['uid']); + // Encrypt existing user files: // This serves to upgrade old versions of the encryption // app (see appinfo/spec.txt) if ( - $util->encryptAll( '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) + $util->encryptAll('/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password']) ) { - - \OC_Log::write( + + \OC_Log::write( 'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" completed' - , \OC_Log::INFO + , \OC_Log::INFO ); - + } // Register successful migration in DB - $util->setMigrationStatus( 1 ); - + $util->setMigrationStatus(1); + } return true; } - /** - * @brief setup encryption backend upon user created - * @note This method should never be called for users using client side encryption - */ - public static function postCreateUser( $params ) { - $view = new \OC_FilesystemView( '/' ); + /** + * @brief setup encryption backend upon user created + * @note This method should never be called for users using client side encryption + */ + public static function postCreateUser($params) { + $view = new \OC_FilesystemView('/'); - $util = new Util( $view, $params['uid'] ); + $util = new Util($view, $params['uid']); - Helper::setupUser($util, $params['password']); - } + Helper::setupUser($util, $params['password']); + } - /** - * @brief cleanup encryption backend upon user deleted - * @note This method should never be called for users using client side encryption - */ - public static function postDeleteUser( $params ) { - $view = new \OC_FilesystemView( '/' ); + /** + * @brief cleanup encryption backend upon user deleted + * @note This method should never be called for users using client side encryption + */ + public static function postDeleteUser($params) { + $view = new \OC_FilesystemView('/'); - // cleanup public key - $publicKey = '/public-keys/' . $params['uid'] . '.public.key'; + // cleanup public key + $publicKey = '/public-keys/' . $params['uid'] . '.public.key'; - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $view->unlink($publicKey); + $view->unlink($publicKey); - \OC_FileProxy::$enabled = $proxyStatus; - } + \OC_FileProxy::$enabled = $proxyStatus; + } - /** + /** * @brief Change a user's encryption passphrase * @param array $params keys: uid, password */ @@ -167,10 +167,10 @@ class Hooks { // NOTE: Session does not need to be updated as the // private key has not changed, only the passphrase // used to decrypt it has changed - - + + } else { // admin changed the password for a different user, create new keys and reencrypt file keys - + $user = $params['uid']; $recoveryPassword = $params['recoveryPassword']; $newUserPassword = $params['password']; @@ -181,21 +181,22 @@ class Hooks { \OC\Files\Filesystem::initMountPoints($user); $keypair = Crypt::createKeypair(); - + // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Save public key - $view->file_put_contents( '/public-keys/'.$user.'.public.key', $keypair['publicKey'] ); + $view->file_put_contents('/public-keys/' . $user . '.public.key', $keypair['publicKey']); // Encrypt private key empty passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $newUserPassword ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword); // Save private key - $view->file_put_contents( '/'.$user.'/files_encryption/'.$user.'.private.key', $encryptedPrivateKey ); + $view->file_put_contents( + '/' . $user . '/files_encryption/' . $user . '.private.key', $encryptedPrivateKey); - if ( $recoveryPassword ) { // if recovery key is set we can re-encrypt the key files + if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files $util = new Util($view, $user); $util->recoverUsersFiles($recoveryPassword); } @@ -233,16 +234,17 @@ class Hooks { } } - if($error) - // Set flag var 'run' to notify emitting + if ($error) // Set flag var 'run' to notify emitting // script that hook execution failed + { $params['run']->run = false; - // TODO: Make sure files_sharing provides user - // feedback on failed share + } + // TODO: Make sure files_sharing provides user + // feedback on failed share } /** - * @brief + * @brief */ public static function postShared($params) { @@ -336,15 +338,15 @@ class Hooks { foreach ($allFiles as $path) { $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path); - $util->setSharedFileKeyfiles( $session, $usersSharing, $path ); + $util->setSharedFileKeyfiles($session, $usersSharing, $path); } } } - + /** - * @brief + * @brief */ - public static function postUnshare( $params ) { + public static function postUnshare($params) { // NOTE: $params has keys: // [itemType] => file @@ -353,40 +355,40 @@ class Hooks { // [shareWith] => test1 // [itemParent] => - if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { + if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId); - $path = $util->fileIdToPath( $params['itemSource'] ); + $util = new Util($view, $userId); + $path = $util->fileIdToPath($params['itemSource']); // check if this is a re-share - if ( $params['itemParent'] ) { + if ($params['itemParent']) { // get the parent from current share - $parent = $util->getShareParent( $params['itemParent'] ); + $parent = $util->getShareParent($params['itemParent']); // get target path - $targetPath = $util->fileIdToPath( $params['itemSource'] ); - $targetPathSplit = array_reverse( explode( '/', $targetPath ) ); + $targetPath = $util->fileIdToPath($params['itemSource']); + $targetPathSplit = array_reverse(explode('/', $targetPath)); // init values $path = ''; - $sharedPart = ltrim( $parent['file_target'], '/' ); + $sharedPart = ltrim($parent['file_target'], '/'); // rebuild path - foreach ( $targetPathSplit as $pathPart ) { - - if ( $pathPart !== $sharedPart ) { - + foreach ($targetPathSplit as $pathPart) { + + if ($pathPart !== $sharedPart) { + $path = '/' . $pathPart . $path; - + } else { - + break; - + } - + } // prefix path with Shared @@ -394,118 +396,124 @@ class Hooks { } // for group shares get a list of the group members - if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP ) { + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP) { $userIds = \OC_Group::usersInGroup($params['shareWith']); - } else if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_LINK ){ - $userIds = array( $util->getPublicShareKeyId() ); } else { - $userIds = array( $params['shareWith'] ); + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_LINK) { + $userIds = array($util->getPublicShareKeyId()); + } else { + $userIds = array($params['shareWith']); + } } // if we unshare a folder we need a list of all (sub-)files - if ( $params['itemType'] === 'folder' ) { - - $allFiles = $util->getAllFiles( $path ); - + if ($params['itemType'] === 'folder') { + + $allFiles = $util->getAllFiles($path); + } else { - - $allFiles = array( $path ); + + $allFiles = array($path); } - foreach ( $allFiles as $path ) { + foreach ($allFiles as $path) { // check if the user still has access to the file, otherwise delete share key - $sharingUsers = $util->getSharingUsersArray( true, $path ); + $sharingUsers = $util->getSharingUsersArray(true, $path); // Unshare every user who no longer has access to the file - $delUsers = array_diff( $userIds, $sharingUsers); + $delUsers = array_diff($userIds, $sharingUsers); // delete share key - Keymanager::delShareKey( $view, $delUsers, $path ); + Keymanager::delShareKey($view, $delUsers, $path); } } } - + /** - * @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing - * @param array with oldpath and newpath - * - * This function is connected to the rename signal of OC_Filesystem and adjust the name and location - * of the stored versions along the actual file - */ - public static function postRename($params) { - // Disable encryption proxy to prevent recursive calls - $proxyStatus = \OC_FileProxy::$enabled; - \OC_FileProxy::$enabled = false; + * @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing + * @param array with oldpath and newpath + * + * This function is connected to the rename signal of OC_Filesystem and adjust the name and location + * of the stored versions along the actual file + */ + public static function postRename($params) { + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView('/'); - $session = new Session($view); - $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); + $view = new \OC_FilesystemView('/'); + $session = new Session($view); + $userId = \OCP\User::getUser(); + $util = new Util($view, $userId); - // Format paths to be relative to user files dir - $oldKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']); - $newKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']); + // Format paths to be relative to user files dir + $oldKeyfilePath = \OC\Files\Filesystem::normalizePath( + $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']); + $newKeyfilePath = \OC\Files\Filesystem::normalizePath( + $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']); - // add key ext if this is not an folder - if (!$view->is_dir($oldKeyfilePath)) { - $oldKeyfilePath .= '.key'; - $newKeyfilePath .= '.key'; + // add key ext if this is not an folder + if (!$view->is_dir($oldKeyfilePath)) { + $oldKeyfilePath .= '.key'; + $newKeyfilePath .= '.key'; - // handle share-keys - $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$params['oldpath']); - $matches = glob(preg_quote($localKeyPath).'*.shareKey'); - foreach ($matches as $src) { - $dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src)); + // handle share-keys + $localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $params['oldpath']); + $matches = glob(preg_quote($localKeyPath) . '*.shareKey'); + foreach ($matches as $src) { + $dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src)); - // create destination folder if not exists - if(!file_exists(dirname($dst))) { - mkdir(dirname($dst), 0750, true); - } + // create destination folder if not exists + if (!file_exists(dirname($dst))) { + mkdir(dirname($dst), 0750, true); + } - rename($src, $dst); - } + rename($src, $dst); + } - } else { - // handle share-keys folders - $oldShareKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']); - $newShareKeyfilePath = \OC\Files\Filesystem::normalizePath($userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']); + } else { + // handle share-keys folders + $oldShareKeyfilePath = \OC\Files\Filesystem::normalizePath( + $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']); + $newShareKeyfilePath = \OC\Files\Filesystem::normalizePath( + $userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']); - // create destination folder if not exists - if(!$view->file_exists(dirname($newShareKeyfilePath))) { - $view->mkdir(dirname($newShareKeyfilePath), 0750, true); - } + // create destination folder if not exists + if (!$view->file_exists(dirname($newShareKeyfilePath))) { + $view->mkdir(dirname($newShareKeyfilePath), 0750, true); + } - $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); - } + $view->rename($oldShareKeyfilePath, $newShareKeyfilePath); + } - // Rename keyfile so it isn't orphaned - if($view->file_exists($oldKeyfilePath)) { + // Rename keyfile so it isn't orphaned + if ($view->file_exists($oldKeyfilePath)) { - // create destination folder if not exists - if(!$view->file_exists(dirname($newKeyfilePath))) { - $view->mkdir(dirname($newKeyfilePath), 0750, true); - } + // create destination folder if not exists + if (!$view->file_exists(dirname($newKeyfilePath))) { + $view->mkdir(dirname($newKeyfilePath), 0750, true); + } - $view->rename($oldKeyfilePath, $newKeyfilePath); - } + $view->rename($oldKeyfilePath, $newKeyfilePath); + } - // build the path to the file - $newPath = '/' . $userId . '/files' .$params['newpath']; - $newPathRelative = $params['newpath']; + // build the path to the file + $newPath = '/' . $userId . '/files' . $params['newpath']; + $newPathRelative = $params['newpath']; - if($util->fixFileSize($newPath)) { - // get sharing app state - $sharingEnabled = \OCP\Share::isEnabled(); + if ($util->fixFileSize($newPath)) { + // get sharing app state + $sharingEnabled = \OCP\Share::isEnabled(); - // get users - $usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative); + // get users + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative); - // update sharing-keys - $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); - } + // update sharing-keys + $util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative); + } - \OC_FileProxy::$enabled = $proxyStatus; - } + \OC_FileProxy::$enabled = $proxyStatus; + } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 8e3522917d..11b9298b44 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -26,21 +26,20 @@ namespace OCA\Encryption; //require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); /** * Class for common cryptography functionality */ -class Crypt -{ +class Crypt { /** * @brief return encryption mode client or server side encryption * @param string $user name (use system wide setting if name=null) * @return string 'client' or 'server' */ - public static function mode( $user = null ) { + public static function mode($user = null) { return 'server'; @@ -52,17 +51,20 @@ class Crypt */ public static function createKeypair() { - $res = openssl_pkey_new( array( 'private_key_bits' => 4096 ) ); + $res = openssl_pkey_new(array('private_key_bits' => 4096)); // Get private key - openssl_pkey_export( $res, $privateKey ); + openssl_pkey_export($res, $privateKey); // Get public key - $publicKey = openssl_pkey_get_details( $res ); + $publicKey = openssl_pkey_get_details($res); $publicKey = $publicKey['key']; - return ( array( 'publicKey' => $publicKey, 'privateKey' => $privateKey ) ); + return (array( + 'publicKey' => $publicKey, + 'privateKey' => $privateKey + )); } @@ -75,7 +77,7 @@ class Crypt * blocks with encryption alone, hence padding is added to achieve the * required length. */ - public static function addPadding( $data ) { + public static function addPadding($data) { $padded = $data . 'xx'; @@ -88,11 +90,11 @@ class Crypt * @param string $padded padded data to remove padding from * @return string unpadded data on success, false on error */ - public static function removePadding( $padded ) { + public static function removePadding($padded) { - if ( substr( $padded, -2 ) == 'xx' ) { + if (substr($padded, -2) == 'xx') { - $data = substr( $padded, 0, -2 ); + $data = substr($padded, 0, -2); return $data; @@ -111,26 +113,26 @@ class Crypt * @return boolean * @note see also OCA\Encryption\Util->isEncryptedPath() */ - public static function isCatfileContent( $content ) { + public static function isCatfileContent($content) { - if ( !$content ) { + if (!$content) { return false; } - $noPadding = self::removePadding( $content ); + $noPadding = self::removePadding($content); // Fetch encryption metadata from end of file - $meta = substr( $noPadding, -22 ); + $meta = substr($noPadding, -22); // Fetch IV from end of file - $iv = substr( $meta, -16 ); + $iv = substr($meta, -16); // Fetch identifier from start of metadata - $identifier = substr( $meta, 0, 6 ); + $identifier = substr($meta, 0, 6); - if ( $identifier == '00iv00' ) { + if ($identifier == '00iv00') { return true; @@ -147,15 +149,15 @@ class Crypt * @param string $path * @return bool */ - public static function isEncryptedMeta( $path ) { + public static function isEncryptedMeta($path) { // TODO: Use DI to get \OC\Files\Filesystem out of here // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $path ); + $metadata = \OC\Files\Filesystem::getFileInfo($path); // Return encryption status - return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; + return isset($metadata['encrypted']) and ( bool )$metadata['encrypted']; } @@ -166,18 +168,18 @@ class Crypt * e.g. filename or /Docs/filename, NOT admin/files/filename * @return boolean */ - public static function isLegacyEncryptedContent( $data, $relPath ) { + public static function isLegacyEncryptedContent($data, $relPath) { // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); + $metadata = \OC\Files\Filesystem::getFileInfo($relPath, ''); // If a file is flagged with encryption in DB, but isn't a // valid content + IV combination, it's probably using the // legacy encryption system if ( - isset( $metadata['encrypted'] ) + isset($metadata['encrypted']) and $metadata['encrypted'] === true - and !self::isCatfileContent( $data ) + and !self::isCatfileContent($data) ) { return true; @@ -197,15 +199,15 @@ class Crypt * @param string $passphrase * @return string encrypted file content */ - public static function encrypt( $plainContent, $iv, $passphrase = '' ) { + public static function encrypt($plainContent, $iv, $passphrase = '') { - if ( $encryptedContent = openssl_encrypt( $plainContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + if ($encryptedContent = openssl_encrypt($plainContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $encryptedContent; } else { - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR); return false; @@ -221,15 +223,15 @@ class Crypt * @throws \Exception * @return string decrypted file content */ - public static function decrypt( $encryptedContent, $iv, $passphrase ) { + public static function decrypt($encryptedContent, $iv, $passphrase) { - if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + if ($plainContent = openssl_decrypt($encryptedContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $plainContent; } else { - throw new \Exception( 'Encryption library: Decryption (symmetric) of content failed' ); + throw new \Exception('Encryption library: Decryption (symmetric) of content failed'); } @@ -241,7 +243,7 @@ class Crypt * @param string $iv IV to be concatenated * @returns string concatenated content */ - public static function concatIv( $content, $iv ) { + public static function concatIv($content, $iv) { $combined = $content . '00iv00' . $iv; @@ -254,20 +256,21 @@ class Crypt * @param string $catFile concatenated data to be split * @returns array keys: encrypted, iv */ - public static function splitIv( $catFile ) { + public static function splitIv($catFile) { // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); + $meta = substr($catFile, -22); // Fetch IV from end of file - $iv = substr( $meta, -16 ); + $iv = substr($meta, -16); // Remove IV and IV identifier text to expose encrypted content - $encrypted = substr( $catFile, 0, -22 ); + $encrypted = substr($catFile, 0, -22); $split = array( 'encrypted' => $encrypted - , 'iv' => $iv + , + 'iv' => $iv ); return $split; @@ -283,9 +286,9 @@ class Crypt * @note IV need not be specified, as it will be stored in the returned keyfile * and remain accessible therein. */ - public static function symmetricEncryptFileContent( $plainContent, $passphrase = '' ) { + public static function symmetricEncryptFileContent($plainContent, $passphrase = '') { - if ( !$plainContent ) { + if (!$plainContent) { return false; @@ -293,18 +296,18 @@ class Crypt $iv = self::generateIv(); - if ( $encryptedContent = self::encrypt( $plainContent, $iv, $passphrase ) ) { + if ($encryptedContent = self::encrypt($plainContent, $iv, $passphrase)) { // Combine content to encrypt with IV identifier and actual IV - $catfile = self::concatIv( $encryptedContent, $iv ); + $catfile = self::concatIv($encryptedContent, $iv); - $padded = self::addPadding( $catfile ); + $padded = self::addPadding($catfile); return $padded; } else { - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR); return false; @@ -326,21 +329,21 @@ class Crypt * * This function decrypts a file */ - public static function symmetricDecryptFileContent( $keyfileContent, $passphrase = '' ) { + public static function symmetricDecryptFileContent($keyfileContent, $passphrase = '') { - if ( !$keyfileContent ) { + if (!$keyfileContent) { - throw new \Exception( 'Encryption library: no data provided for decryption' ); + throw new \Exception('Encryption library: no data provided for decryption'); } // Remove padding - $noPadding = self::removePadding( $keyfileContent ); + $noPadding = self::removePadding($keyfileContent); // Split into enc data and catfile - $catfile = self::splitIv( $noPadding ); + $catfile = self::splitIv($noPadding); - if ( $plainContent = self::decrypt( $catfile['encrypted'], $catfile['iv'], $passphrase ) ) { + if ($plainContent = self::decrypt($catfile['encrypted'], $catfile['iv'], $passphrase)) { return $plainContent; @@ -358,11 +361,11 @@ class Crypt * * This function decrypts a file */ - public static function symmetricEncryptFileContentKeyfile( $plainContent ) { + public static function symmetricEncryptFileContentKeyfile($plainContent) { $key = self::generateKey(); - if ( $encryptedContent = self::symmetricEncryptFileContent( $plainContent, $key ) ) { + if ($encryptedContent = self::symmetricEncryptFileContent($plainContent, $key)) { return array( 'key' => $key, @@ -384,13 +387,13 @@ class Crypt * @returns array keys: keys (array, key = userId), data * @note symmetricDecryptFileContent() can decrypt files created using this method */ - public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { + public static function multiKeyEncrypt($plainContent, array $publicKeys) { // openssl_seal returns false without errors if $plainContent // is empty, so trigger our own error - if ( empty( $plainContent ) ) { + if (empty($plainContent)) { - throw new \Exception( 'Cannot mutliKeyEncrypt empty plain content' ); + throw new \Exception('Cannot mutliKeyEncrypt empty plain content'); } @@ -399,13 +402,13 @@ class Crypt $shareKeys = array(); $mappedShareKeys = array(); - if ( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { + if (openssl_seal($plainContent, $sealed, $shareKeys, $publicKeys)) { $i = 0; // Ensure each shareKey is labelled with its // corresponding userId - foreach ( $publicKeys as $userId => $publicKey ) { + foreach ($publicKeys as $userId => $publicKey) { $mappedShareKeys[$userId] = $shareKeys[$i]; $i++; @@ -437,21 +440,21 @@ class Crypt * * This function decrypts a file */ - public static function multiKeyDecrypt( $encryptedContent, $shareKey, $privateKey ) { + public static function multiKeyDecrypt($encryptedContent, $shareKey, $privateKey) { - if ( !$encryptedContent ) { + if (!$encryptedContent) { return false; } - if ( openssl_open( $encryptedContent, $plainContent, $shareKey, $privateKey ) ) { + if (openssl_open($encryptedContent, $plainContent, $shareKey, $privateKey)) { return $plainContent; } else { - \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR); return false; @@ -463,9 +466,9 @@ class Crypt * @brief Asymetrically encrypt a string using a public key * @return string encrypted file */ - public static function keyEncrypt( $plainContent, $publicKey ) { + public static function keyEncrypt($plainContent, $publicKey) { - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); + openssl_public_encrypt($plainContent, $encryptedContent, $publicKey); return $encryptedContent; @@ -475,11 +478,11 @@ class Crypt * @brief Asymetrically decrypt a file using a private key * @return string decrypted file */ - public static function keyDecrypt( $encryptedContent, $privatekey ) { + public static function keyDecrypt($encryptedContent, $privatekey) { - $result = @openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); + $result = @openssl_private_decrypt($encryptedContent, $plainContent, $privatekey); - if ( $result ) { + if ($result) { return $plainContent; } @@ -493,24 +496,24 @@ class Crypt */ public static function generateIv() { - if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { + if ($random = openssl_random_pseudo_bytes(12, $strong)) { - if ( !$strong ) { + if (!$strong) { // If OpenSSL indicates randomness is insecure, log error - \OC_Log::write( 'Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN ); + \OC_Log::write('Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN); } // We encode the iv purely for string manipulation // purposes - it gets decoded before use - $iv = base64_encode( $random ); + $iv = base64_encode($random); return $iv; } else { - throw new \Exception( 'Generating IV failed' ); + throw new \Exception('Generating IV failed'); } @@ -523,12 +526,12 @@ class Crypt public static function generateKey() { // Generate key - if ( $key = base64_encode( openssl_random_pseudo_bytes( 183, $strong ) ) ) { + if ($key = base64_encode(openssl_random_pseudo_bytes(183, $strong))) { - if ( !$strong ) { + if (!$strong) { // If OpenSSL indicates randomness is insecure, log error - throw new \Exception( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); + throw new \Exception('Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()'); } @@ -549,11 +552,11 @@ class Crypt * * if the key is left out, the default handeler will be used */ - public static function getBlowfish( $key = '' ) { + public static function getBlowfish($key = '') { - if ( $key ) { + if ($key) { - return new \Crypt_Blowfish( $key ); + return new \Crypt_Blowfish($key); } else { @@ -567,13 +570,13 @@ class Crypt * @param $passphrase * @return mixed */ - public static function legacyCreateKey( $passphrase ) { + public static function legacyCreateKey($passphrase) { // Generate a random integer - $key = mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ); + $key = mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999); // Encrypt the key with the passphrase - $legacyEncKey = self::legacyEncrypt( $key, $passphrase ); + $legacyEncKey = self::legacyEncrypt($key, $passphrase); return $legacyEncKey; @@ -589,11 +592,11 @@ class Crypt * * This function encrypts an content */ - public static function legacyEncrypt( $content, $passphrase = '' ) { + public static function legacyEncrypt($content, $passphrase = '') { - $bf = self::getBlowfish( $passphrase ); + $bf = self::getBlowfish($passphrase); - return $bf->encrypt( $content ); + return $bf->encrypt($content); } @@ -607,13 +610,13 @@ class Crypt * * This function decrypts an content */ - public static function legacyDecrypt( $content, $passphrase = '' ) { + public static function legacyDecrypt($content, $passphrase = '') { - $bf = self::getBlowfish( $passphrase ); + $bf = self::getBlowfish($passphrase); - $decrypted = $bf->decrypt( $content ); + $decrypted = $bf->decrypt($content); - return rtrim( $decrypted, "\0" );; + return rtrim($decrypted, "\0");; } @@ -623,16 +626,16 @@ class Crypt * @param int $maxLength * @return string */ - private static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { + private static function legacyBlockDecrypt($data, $key = '', $maxLength = 0) { $result = ''; - while ( strlen( $data ) ) { - $result .= self::legacyDecrypt( substr( $data, 0, 8192 ), $key ); - $data = substr( $data, 8192 ); + while (strlen($data)) { + $result .= self::legacyDecrypt(substr($data, 0, 8192), $key); + $data = substr($data, 8192); } - if ( $maxLength > 0 ) { - return substr( $result, 0, $maxLength ); + if ($maxLength > 0) { + return substr($result, 0, $maxLength); } else { - return rtrim( $result, "\0" ); + return rtrim($result, "\0"); } } @@ -642,17 +645,21 @@ class Crypt * @param $publicKeys * @return array */ - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys ) { + public static function legacyKeyRecryptKeyfile($legacyEncryptedContent, $legacyPassphrase, $publicKeys) { - $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); + $decrypted = self::legacyBlockDecrypt($legacyEncryptedContent, $legacyPassphrase); // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); + $cryptedData = self::symmetricEncryptFileContentKeyfile($decrypted); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt($cryptedData['key'], $publicKeys); - return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); + return array( + 'data' => $cryptedData['encrypted'], + 'filekey' => $multiEncrypted['data'], + 'sharekeys' => $multiEncrypted['keys'] + ); } diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 7a2d19eed5..b946f69513 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -30,8 +30,7 @@ namespace OCA\Encryption; * Class Helper * @package OCA\Encryption */ -class Helper -{ +class Helper { /** * @brief register share related hooks @@ -39,9 +38,9 @@ class Helper */ public static function registerShareHooks() { - \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); + \OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared'); + \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared'); + \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare'); } /** @@ -50,10 +49,10 @@ class Helper */ public static function registerUserHooks() { - \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); - \OCP\Util::connectHook( 'OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); - \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); - \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); + \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); + \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); + \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); + \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); } /** @@ -62,7 +61,7 @@ class Helper */ public static function registerFilesystemHooks() { - \OCP\Util::connectHook( 'OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename' ); + \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); } /** @@ -72,13 +71,14 @@ class Helper * @param string $password * @return bool */ - public static function setupUser( $util, $password ) { + public static function setupUser($util, $password) { // Check files_encryption infrastructure is ready for action - if ( !$util->ready() ) { + if (!$util->ready()) { - \OC_Log::write( 'Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); + \OC_Log::write('Encryption library', 'User account "' . $util->getUserId() + . '" is not ready for encryption; configuration started', \OC_Log::DEBUG); - if ( !$util->setupServerSide( $password ) ) { + if (!$util->setupServerSide($password)) { return false; } } @@ -95,21 +95,21 @@ class Helper * @internal param string $password * @return bool */ - public static function adminEnableRecovery( $recoveryKeyId, $recoveryPassword ) { - $view = new \OC\Files\View( '/' ); + public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { + $view = new \OC\Files\View('/'); - if ( $recoveryKeyId === null ) { - $recoveryKeyId = 'recovery_' . substr( md5( time() ), 0, 8 ); - \OC_Appconfig::setValue( 'files_encryption', 'recoveryKeyId', $recoveryKeyId ); + if ($recoveryKeyId === null) { + $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); } - if ( !$view->is_dir( '/owncloud_private_key' ) ) { - $view->mkdir( '/owncloud_private_key' ); + if (!$view->is_dir('/owncloud_private_key')) { + $view->mkdir('/owncloud_private_key'); } if ( - ( !$view->file_exists( "/public-keys/" . $recoveryKeyId . ".public.key" ) - || !$view->file_exists( "/owncloud_private_key/" . $recoveryKeyId . ".private.key" ) ) + (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") + || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) ) { $keypair = \OCA\Encryption\Crypt::createKeypair(); @@ -118,37 +118,37 @@ class Helper // Save public key - if ( !$view->is_dir( '/public-keys' ) ) { - $view->mkdir( '/public-keys' ); + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); } - $view->file_put_contents( '/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey'] ); + $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); // Encrypt private key empthy passphrase - $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $recoveryPassword ); + $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword); // Save private key - $view->file_put_contents( '/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey ); + $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt( "ownCloud", $keypair['publicKey'] ); - if ( !$view->is_dir( '/control-file' ) ) { - $view->mkdir( '/control-file' ); + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); + if (!$view->is_dir('/control-file')) { + $view->mkdir('/control-file'); } - $view->file_put_contents( '/control-file/controlfile.enc', $encryptedControlData ); + $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); \OC_FileProxy::$enabled = true; // Set recoveryAdmin as enabled - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); $return = true; } else { // get recovery key and check the password - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); - $return = $util->checkRecoveryPassword( $recoveryPassword ); - if ( $return ) { - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($recoveryPassword); + if ($return) { + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); } } @@ -162,13 +162,13 @@ class Helper * @param $recoveryPassword * @return bool */ - public static function adminDisableRecovery( $recoveryPassword ) { - $util = new Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); - $return = $util->checkRecoveryPassword( $recoveryPassword ); + public static function adminDisableRecovery($recoveryPassword) { + $util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($recoveryPassword); - if ( $return ) { + if ($return) { // Set recoveryAdmin as disabled - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 0 ); + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); } return $return; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index aaa2e4ba1b..49e76b2dc8 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -27,8 +27,7 @@ namespace OCA\Encryption; * @brief Class to manage storage and retrieval of encryption keys * @note Where a method requires a view object, it's root must be '/' */ -class Keymanager -{ +class Keymanager { /** * @brief retrieve the ENCRYPTED private key from a user @@ -38,14 +37,14 @@ class Keymanager * @return string private key or false (hopefully) * @note the key returned by this method must be decrypted before use */ - public static function getPrivateKey( \OC_FilesystemView $view, $user ) { + public static function getPrivateKey(\OC_FilesystemView $view, $user) { $path = '/' . $user . '/' . 'files_encryption' . '/' . $user . '.private.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $key = $view->file_get_contents( $path ); + $key = $view->file_get_contents($path); \OC_FileProxy::$enabled = $proxyStatus; @@ -58,12 +57,12 @@ class Keymanager * @param $userId * @return string public key or false */ - public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + public static function getPublicKey(\OC_FilesystemView $view, $userId) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); + $result = $view->file_get_contents('/public-keys/' . $userId . '.public.key'); \OC_FileProxy::$enabled = $proxyStatus; @@ -77,11 +76,12 @@ class Keymanager * @param $userId * @return array keys: privateKey, publicKey */ - public static function getUserKeys( \OC_FilesystemView $view, $userId ) { + public static function getUserKeys(\OC_FilesystemView $view, $userId) { return array( - 'publicKey' => self::getPublicKey( $view, $userId ) - , 'privateKey' => self::getPrivateKey( $view, $userId ) + 'publicKey' => self::getPublicKey($view, $userId) + , + 'privateKey' => self::getPrivateKey($view, $userId) ); } @@ -92,13 +92,13 @@ class Keymanager * @param array $userIds * @return array of public keys for the specified users */ - public static function getPublicKeys( \OC_FilesystemView $view, array $userIds ) { + public static function getPublicKeys(\OC_FilesystemView $view, array $userIds) { $keys = array(); - foreach ( $userIds as $userId ) { + foreach ($userIds as $userId) { - $keys[$userId] = self::getPublicKey( $view, $userId ); + $keys[$userId] = self::getPublicKey($view, $userId); } @@ -118,40 +118,41 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + public static function setFileKey(\OC_FilesystemView $view, $path, $userId, $catfile) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + $util = new Util($view, \OCP\User::getUser()); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/keyfiles'; - $targetPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); + $targetPath = self::keySetPreparation($view, $filename, $basePath, $owner); - if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { + if (!$view->is_dir($basePath . '/' . $targetPath)) { // create all parent folders - $info = pathinfo( $basePath . '/' . $targetPath ); - $keyfileFolderName = $view->getLocalFolder( $info['dirname'] ); + $info = pathinfo($basePath . '/' . $targetPath); + $keyfileFolderName = $view->getLocalFolder($info['dirname']); - if ( !file_exists( $keyfileFolderName ) ) { + if (!file_exists($keyfileFolderName)) { - mkdir( $keyfileFolderName, 0750, true ); + mkdir($keyfileFolderName, 0750, true); } } // try reusing key file if part file - if ( self::isPartialFilePath( $targetPath ) ) { + if (self::isPartialFilePath($targetPath)) { - $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath( $targetPath ) . '.key', $catfile ); + $result = $view->file_put_contents( + $basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile); } else { - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + $result = $view->file_put_contents($basePath . '/' . $targetPath . '.key', $catfile); } @@ -167,12 +168,12 @@ class Keymanager * @return string File path without .part extension * @note this is needed for reusing keys */ - public static function fixPartialFilePath( $path ) { + public static function fixPartialFilePath($path) { - if ( preg_match( '/\.part$/', $path ) ) { + if (preg_match('/\.part$/', $path)) { - $newLength = strlen( $path ) - 5; - $fPath = substr( $path, 0, $newLength ); + $newLength = strlen($path) - 5; + $fPath = substr($path, 0, $newLength); return $fPath; @@ -189,9 +190,9 @@ class Keymanager * @param string $path Path that may identify a .part file * @return bool */ - public static function isPartialFilePath( $path ) { + public static function isPartialFilePath($path) { - if ( preg_match( '/\.part$/', $path ) ) { + if (preg_match('/\.part$/', $path)) { return true; @@ -213,14 +214,14 @@ class Keymanager * @note The keyfile returned is asymmetrically encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getFileKey(\OC_FilesystemView $view, $userId, $filePath) { // try reusing key file if part file - if ( self::isPartialFilePath( $filePath ) ) { + if (self::isPartialFilePath($filePath)) { - $result = self::getFileKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); + $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); - if ( $result ) { + if ($result) { return $result; @@ -228,19 +229,19 @@ class Keymanager } - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); - $filePath_f = ltrim( $filename, '/' ); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $filePath_f = ltrim($filename, '/'); $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ( $view->file_exists( $keyfilePath ) ) { + if ($view->file_exists($keyfilePath)) { - $result = $view->file_get_contents( $keyfilePath ); + $result = $view->file_get_contents($keyfilePath); } else { @@ -264,26 +265,29 @@ class Keymanager * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT * /data/admin/files/mydoc.txt */ - public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { + public static function deleteFileKey(\OC_FilesystemView $view, $userId, $path) { - $trimmed = ltrim( $path, '/' ); + $trimmed = ltrim($path, '/'); $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; $result = false; - if ( $view->is_dir( $keyPath ) ) { + if ($view->is_dir($keyPath)) { - $result = $view->unlink( $keyPath ); + $result = $view->unlink($keyPath); - } else if ( $view->file_exists( $keyPath . '.key' ) ) { + } else { + if ($view->file_exists($keyPath . '.key')) { - $result = $view->unlink( $keyPath . '.key' ); + $result = $view->unlink($keyPath . '.key'); + } } - if ( !$result ) { + if (!$result) { - \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); + \OC_Log::write('Encryption library', + 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR); } @@ -298,19 +302,19 @@ class Keymanager * @note Encryption of the private key must be performed by client code * as no encryption takes place here */ - public static function setPrivateKey( $key ) { + public static function setPrivateKey($key) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); + $view = new \OC_FilesystemView('/' . $user . '/files_encryption'); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ( !$view->file_exists( '' ) ) - $view->mkdir( '' ); + if (!$view->file_exists('')) + $view->mkdir(''); - $result = $view->file_put_contents( $user . '.private.key', $key ); + $result = $view->file_put_contents($user . '.private.key', $key); \OC_FileProxy::$enabled = $proxyStatus; @@ -331,21 +335,21 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + public static function setShareKey(\OC_FilesystemView $view, $path, $userId, $shareKey) { // Here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/share-keys'; - $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); + $shareKeyPath = self::keySetPreparation($view, $filename, $basePath, $owner); // try reusing key file if part file - if ( self::isPartialFilePath( $shareKeyPath ) ) { + if (self::isPartialFilePath($shareKeyPath)) { - $writePath = $basePath . '/' . self::fixPartialFilePath( $shareKeyPath ) . '.' . $userId . '.shareKey'; + $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; } else { @@ -356,12 +360,12 @@ class Keymanager $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_put_contents( $writePath, $shareKey ); + $result = $view->file_put_contents($writePath, $shareKey); \OC_FileProxy::$enabled = $proxyStatus; if ( - is_int( $result ) + is_int($result) && $result > 0 ) { @@ -382,16 +386,16 @@ class Keymanager * @param array $shareKeys * @return bool */ - public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { + public static function setShareKeys(\OC_FilesystemView $view, $path, array $shareKeys) { // $shareKeys must be an array with the following format: // [userId] => [encrypted key] $result = true; - foreach ( $shareKeys as $userId => $shareKey ) { + foreach ($shareKeys as $userId => $shareKey) { - if ( !self::setShareKey( $view, $path, $userId, $shareKey ) ) { + if (!self::setShareKey($view, $path, $userId, $shareKey)) { // If any of the keys are not set, flag false $result = false; @@ -415,14 +419,14 @@ class Keymanager * @note The sharekey returned is encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getShareKey(\OC_FilesystemView $view, $userId, $filePath) { // try reusing key file if part file - if ( self::isPartialFilePath( $filePath ) ) { + if (self::isPartialFilePath($filePath)) { - $result = self::getShareKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); + $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); - if ( $result ) { + if ($result) { return $result; @@ -434,14 +438,15 @@ class Keymanager \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); - $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey' ); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $shareKeyPath = \OC\Files\Filesystem::normalizePath( + '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); - if ( $view->file_exists( $shareKeyPath ) ) { + if ($view->file_exists($shareKeyPath)) { - $result = $view->file_get_contents( $shareKeyPath ); + $result = $view->file_get_contents($shareKeyPath); } else { @@ -461,17 +466,18 @@ class Keymanager * @param string $userId owner of the file * @param string $filePath path to the file, relative to the owners file dir */ - public static function delAllShareKeys( \OC_FilesystemView $view, $userId, $filePath ) { + public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) { - if ( $view->is_dir( $userId . '/files/' . $filePath ) ) { - $view->unlink( $userId . '/files_encryption/share-keys/' . $filePath ); + if ($view->is_dir($userId . '/files/' . $filePath)) { + $view->unlink($userId . '/files_encryption/share-keys/' . $filePath); } else { - $localKeyPath = $view->getLocalFile( $userId . '/files_encryption/share-keys/' . $filePath ); - $matches = glob( preg_quote( $localKeyPath ) . '*.shareKey' ); - foreach ( $matches as $ma ) { - $result = unlink( $ma ); - if ( !$result ) { - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $filePath . '"', \OC_Log::ERROR ); + $localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $filePath); + $matches = glob(preg_quote($localKeyPath) . '*.shareKey'); + foreach ($matches as $ma) { + $result = unlink($ma); + if (!$result) { + \OC_Log::write('Encryption library', + 'Keyfile or shareKey could not be deleted for file "' . $filePath . '"', \OC_Log::ERROR); } } } @@ -480,29 +486,31 @@ class Keymanager /** * @brief Delete a single user's shareKey for a single file */ - public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { + public static function delShareKey(\OC_FilesystemView $view, $userIds, $filePath) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); + list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename ); + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename); - if ( $view->is_dir( $shareKeyPath ) ) { + if ($view->is_dir($shareKeyPath)) { - $localPath = \OC\Files\Filesystem::normalizePath( $view->getLocalFolder( $shareKeyPath ) ); - self::recursiveDelShareKeys( $localPath, $userIds ); + $localPath = \OC\Files\Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); + self::recursiveDelShareKeys($localPath, $userIds); } else { - foreach ( $userIds as $userId ) { + foreach ($userIds as $userId) { - if ( !$view->unlink( $shareKeyPath . '.' . $userId . '.shareKey' ) ) { - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId . '.shareKey"', \OC_Log::ERROR ); + if (!$view->unlink($shareKeyPath . '.' . $userId . '.shareKey')) { + \OC_Log::write('Encryption library', + 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId + . '.shareKey"', \OC_Log::ERROR); } } @@ -517,42 +525,43 @@ class Keymanager * @param string $dir directory * @param array $userIds user ids for which the share keys should be deleted */ - private static function recursiveDelShareKeys( $dir, $userIds ) { - foreach ( $userIds as $userId ) { - $matches = glob( preg_quote( $dir ) . '/*' . preg_quote( '.' . $userId . '.shareKey' ) ); + private static function recursiveDelShareKeys($dir, $userIds) { + foreach ($userIds as $userId) { + $matches = glob(preg_quote($dir) . '/*' . preg_quote('.' . $userId . '.shareKey')); } /** @var $matches array */ - foreach ( $matches as $ma ) { - if ( !unlink( $ma ) ) { - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR ); + foreach ($matches as $ma) { + if (!unlink($ma)) { + \OC_Log::write('Encryption library', + 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR); } } - $subdirs = $directories = glob( preg_quote( $dir ) . '/*', GLOB_ONLYDIR ); - foreach ( $subdirs as $subdir ) { - self::recursiveDelShareKeys( $subdir, $userIds ); + $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR); + foreach ($subdirs as $subdir) { + self::recursiveDelShareKeys($subdir, $userIds); } } /** * @brief Make preparations to vars and filesystem for saving a keyfile */ - public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { + public static function keySetPreparation(\OC_FilesystemView $view, $path, $basePath, $userId) { - $targetPath = ltrim( $path, '/' ); + $targetPath = ltrim($path, '/'); - $path_parts = pathinfo( $targetPath ); + $path_parts = pathinfo($targetPath); // If the file resides within a subdirectory, create it if ( - isset( $path_parts['dirname'] ) - && !$view->file_exists( $basePath . '/' . $path_parts['dirname'] ) + isset($path_parts['dirname']) + && !$view->file_exists($basePath . '/' . $path_parts['dirname']) ) { - $sub_dirs = explode( DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname'] ); + $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']); $dir = ''; - foreach ( $sub_dirs as $sub_dir ) { + foreach ($sub_dirs as $sub_dir) { $dir .= '/' . $sub_dir; - if ( !$view->is_dir( $dir ) ) { - $view->mkdir( $dir ); + if (!$view->is_dir($dir)) { + $view->mkdir($dir); } } } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index eaaeae9b61..0efe0a7911 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -34,8 +34,7 @@ namespace OCA\Encryption; * Class Proxy * @package OCA\Encryption */ -class Proxy extends \OC_FileProxy -{ +class Proxy extends \OC_FileProxy { private static $blackList = null; //mimetypes blacklisted from encryption @@ -48,12 +47,12 @@ class Proxy extends \OC_FileProxy * * Tests if server side encryption is enabled, and file is allowed by blacklists */ - private static function shouldEncrypt( $path ) { + private static function shouldEncrypt($path) { - if ( is_null( self::$enableEncryption ) ) { + if (is_null(self::$enableEncryption)) { if ( - \OCP\Config::getAppValue( 'files_encryption', 'enable_encryption', 'true' ) == 'true' + \OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true') == 'true' && Crypt::mode() == 'server' ) { @@ -67,27 +66,27 @@ class Proxy extends \OC_FileProxy } - if ( !self::$enableEncryption ) { + if (!self::$enableEncryption) { return false; } - if ( is_null( self::$blackList ) ) { + if (is_null(self::$blackList)) { - self::$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); + self::$blackList = explode(',', \OCP\Config::getAppValue('files_encryption', 'type_blacklist', '')); } - if ( Crypt::isCatfileContent( $path ) ) { + if (Crypt::isCatfileContent($path)) { return true; } - $extension = substr( $path, strrpos( $path, '.' ) + 1 ); + $extension = substr($path, strrpos($path, '.') + 1); - if ( array_search( $extension, self::$blackList ) === false ) { + if (array_search($extension, self::$blackList) === false) { return true; @@ -101,34 +100,34 @@ class Proxy extends \OC_FileProxy * @param $data * @return bool */ - public function preFile_put_contents( $path, &$data ) { + public function preFile_put_contents($path, &$data) { - if ( self::shouldEncrypt( $path ) ) { + if (self::shouldEncrypt($path)) { // Stream put contents should have been converted to fopen - if ( !is_resource( $data ) ) { + if (!is_resource($data)) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); - $session = new Session( $view ); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); + $session = new Session($view); $privateKey = $session->getPrivateKey(); - $filePath = $util->stripUserFilesPath( $path ); + $filePath = $util->stripUserFilesPath($path); // Set the filesize for userland, before encrypting - $size = strlen( $data ); + $size = strlen($data); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Check if there is an existing key we can reuse - if ( $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ) ) { + if ($encKeyfile = Keymanager::getFileKey($view, $userId, $filePath)) { // Fetch shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); + $shareKey = Keymanager::getShareKey($view, $userId, $filePath); // Decrypt the keyfile - $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKey = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); } else { @@ -138,37 +137,41 @@ class Proxy extends \OC_FileProxy } // Encrypt data - $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); + $encData = Crypt::symmetricEncryptFileContent($data, $plainKey); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ( $view->file_exists( $path ) ) { - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); + if ($view->file_exists($path)) { + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $filePath, $userId); } else { $uniqueUserIds[] = $userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($view, $uniqueUserIds); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt($plainKey, $publicKeys); // Save sharekeys to user folders - Keymanager::setShareKeys( $view, $filePath, $multiEncrypted['keys'] ); + Keymanager::setShareKeys($view, $filePath, $multiEncrypted['keys']); // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $view, $filePath, $userId, $encKey ); + Keymanager::setFileKey($view, $filePath, $userId, $encKey); // Replace plain content with encrypted content by reference $data = $encData; // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted' => true, 'size' => strlen( $data ), 'unencrypted_size' => $size ), '' ); + \OC\Files\Filesystem::putFileInfo($filePath, array( + 'encrypted' => true, + 'size' => strlen($data), + 'unencrypted_size' => $size + ), ''); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; @@ -184,51 +187,51 @@ class Proxy extends \OC_FileProxy * @param string $path Path of file from which has been read * @param string $data Data that has been read from file */ - public function postFile_get_contents( $path, $data ) { + public function postFile_get_contents($path, $data) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); - $relPath = $util->stripUserFilesPath( $path ); + $relPath = $util->stripUserFilesPath($path); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // init session - $session = new Session( $view ); + $session = new Session($view); // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfileContent( $data ) + && Crypt::isCatfileContent($data) ) { - $privateKey = $session->getPrivateKey( $userId ); + $privateKey = $session->getPrivateKey($userId); // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $relPath ); + $encKeyfile = Keymanager::getFileKey($view, $userId, $relPath); // Attempt to fetch the user's shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); + $shareKey = Keymanager::getShareKey($view, $userId, $relPath); // Decrypt keyfile with shareKey - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); - $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); + $plainData = Crypt::symmetricDecryptFileContent($data, $plainKeyfile); } elseif ( Crypt::mode() == 'server' - && isset( $_SESSION['legacyenckey'] ) - && Crypt::isEncryptedMeta( $path ) + && isset($_SESSION['legacyenckey']) + && Crypt::isEncryptedMeta($path) ) { - $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); + $plainData = Crypt::legacyDecrypt($data, $session->getLegacyKey()); } \OC_FileProxy::$enabled = $proxyStatus; - if ( !isset( $plainData ) ) { + if (!isset($plainData)) { $plainData = $data; @@ -241,10 +244,10 @@ class Proxy extends \OC_FileProxy /** * @brief When a file is deleted, remove its keyfile also */ - public function preUnlink( $path ) { + public function preUnlink($path) { // let the trashbin handle this - if ( \OCP\App::isEnabled( 'files_trashbin' ) ) { + if (\OCP\App::isEnabled('files_trashbin')) { return true; } @@ -252,23 +255,24 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); $userId = \OCP\USER::getUser(); - $util = new Util( $view, $userId ); + $util = new Util($view, $userId); // Format path to be relative to user files dir - $relPath = $util->stripUserFilesPath( $path ); + $relPath = $util->stripUserFilesPath($path); - list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); + list($owner, $ownerPath) = $util->getUidAndFilename($relPath); // Delete keyfile & shareKey so it isn't orphaned - if ( !Keymanager::deleteFileKey( $view, $owner, $ownerPath ) ) { - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR ); + if (!Keymanager::deleteFileKey($view, $owner, $ownerPath)) { + \OC_Log::write('Encryption library', + 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR); } - Keymanager::delAllShareKeys( $view, $owner, $ownerPath ); + Keymanager::delAllShareKeys($view, $owner, $ownerPath); \OC_FileProxy::$enabled = $proxyStatus; @@ -282,8 +286,8 @@ class Proxy extends \OC_FileProxy * @param $path * @return bool */ - public function postTouch( $path ) { - $this->handleFile( $path ); + public function postTouch($path) { + $this->handleFile($path); return true; } @@ -293,20 +297,20 @@ class Proxy extends \OC_FileProxy * @param $result * @return resource */ - public function postFopen( $path, &$result ) { + public function postFopen($path, &$result) { - if ( !$result ) { + if (!$result) { return $result; } // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted - if ( count($path_split) >= 2 && $path_split[2] == 'cache' ) { + if (count($path_split) >= 2 && $path_split[2] == 'cache') { return $result; } @@ -314,31 +318,31 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $meta = stream_get_meta_data( $result ); + $meta = stream_get_meta_data($result); - $view = new \OC_FilesystemView( '' ); + $view = new \OC_FilesystemView(''); - $util = new Util( $view, \OCP\USER::getUser() ); + $util = new Util($view, \OCP\USER::getUser()); // If file is already encrypted, decrypt using crypto protocol if ( Crypt::mode() == 'server' - && $util->isEncryptedPath( $path ) + && $util->isEncryptedPath($path) ) { // Close the original encrypted file - fclose( $result ); + fclose($result); // Open the file using the crypto stream wrapper // protocol and let it do the decryption work instead - $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); + $result = fopen('crypt://' . $path_f, $meta['mode']); } elseif ( - self::shouldEncrypt( $path ) + self::shouldEncrypt($path) and $meta ['mode'] != 'r' - and $meta['mode'] != 'rb' + and $meta['mode'] != 'rb' ) { - $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); + $result = fopen('crypt://' . $path_f, $meta['mode']); } // Re-enable the proxy @@ -353,17 +357,17 @@ class Proxy extends \OC_FileProxy * @param $data * @return array */ - public function postGetFileInfo( $path, $data ) { + public function postGetFileInfo($path, $data) { // if path is a folder do nothing - if ( is_array( $data ) && array_key_exists( 'size', $data ) ) { + if (is_array($data) && array_key_exists('size', $data)) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get file size - $data['size'] = self::postFileSize( $path, $data['size'] ); + $data['size'] = self::postFileSize($path, $data['size']); // Re-enable the proxy \OC_FileProxy::$enabled = $proxyStatus; @@ -377,51 +381,51 @@ class Proxy extends \OC_FileProxy * @param $size * @return bool */ - public function postFileSize( $path, $size ) { + public function postFileSize($path, $size) { - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); // if path is a folder do nothing - if ( $view->is_dir( $path ) ) { + if ($view->is_dir($path)) { return $size; } // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // if path is empty we cannot resolve anything - if ( empty( $path_f ) ) { + if (empty($path_f)) { return $size; } $fileInfo = false; // get file info from database/cache if not .part file - if ( !Keymanager::isPartialFilePath( $path ) ) { - $fileInfo = $view->getFileInfo( $path ); + if (!Keymanager::isPartialFilePath($path)) { + $fileInfo = $view->getFileInfo($path); } // if file is encrypted return real file size - if ( is_array( $fileInfo ) && $fileInfo['encrypted'] === true ) { + if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { $size = $fileInfo['unencrypted_size']; } else { // self healing if file was removed from file cache - if ( !is_array( $fileInfo ) ) { + if (!is_array($fileInfo)) { $fileInfo = array(); } $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $fixSize = $util->getFileSize( $path ); - if ( $fixSize > 0 ) { + $util = new Util($view, $userId); + $fixSize = $util->getFileSize($path); + if ($fixSize > 0) { $size = $fixSize; $fileInfo['encrypted'] = true; $fileInfo['unencrypted_size'] = $size; // put file info if not .part file - if ( !Keymanager::isPartialFilePath( $path_f ) ) { - $view->putFileInfo( $path, $fileInfo ); + if (!Keymanager::isPartialFilePath($path_f)) { + $view->putFileInfo($path, $fileInfo); } } @@ -432,32 +436,32 @@ class Proxy extends \OC_FileProxy /** * @param $path */ - public function handleFile( $path ) { + public function handleFile($path) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView( '/' ); - $session = new Session( $view ); + $view = new \OC_FilesystemView('/'); + $session = new Session($view); $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); + $util = new Util($view, $userId); // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // only if file is on 'files' folder fix file size and sharing - if ( count($path_split) >= 2 && $path_split[2] == 'files' && $util->fixFileSize( $path ) ) { + if (count($path_split) >= 2 && $path_split[2] == 'files' && $util->fixFileSize($path)) { // get sharing app state $sharingEnabled = \OCP\Share::isEnabled(); // get users - $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path_f ); + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); // update sharing-keys - $util->setSharedFileKeyfiles( $session, $usersSharing, $path_f ); + $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); } \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 2ddad0a15d..ba52a43365 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -26,8 +26,7 @@ namespace OCA\Encryption; * Class for handling encryption related session data */ -class Session -{ +class Session { private $view; @@ -37,26 +36,26 @@ class Session * * @note The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ - public function __construct( $view ) { + public function __construct($view) { $this->view = $view; - if ( !$this->view->is_dir( 'owncloud_private_key' ) ) { + if (!$this->view->is_dir('owncloud_private_key')) { - $this->view->mkdir( 'owncloud_private_key' ); + $this->view->mkdir('owncloud_private_key'); } - $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - if ( $publicShareKeyId === null ) { - $publicShareKeyId = 'pubShare_' . substr( md5( time() ), 0, 8 ); - \OC_Appconfig::setValue( 'files_encryption', 'publicShareKeyId', $publicShareKeyId ); + if ($publicShareKeyId === null) { + $publicShareKeyId = 'pubShare_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); } if ( - !$this->view->file_exists( "/public-keys/" . $publicShareKeyId . ".public.key" ) - || !$this->view->file_exists( "/owncloud_private_key/" . $publicShareKeyId . ".private.key" ) + !$this->view->file_exists("/public-keys/" . $publicShareKeyId . ".public.key") + || !$this->view->file_exists("/owncloud_private_key/" . $publicShareKeyId . ".private.key") ) { $keypair = Crypt::createKeypair(); @@ -67,33 +66,35 @@ class Session // Save public key - if ( !$view->is_dir( '/public-keys' ) ) { - $view->mkdir( '/public-keys' ); + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); } - $this->view->file_put_contents( '/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey'] ); + $this->view->file_put_contents('/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey']); // Encrypt private key empty passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], ''); // Save private key - $this->view->file_put_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey ); + $this->view->file_put_contents( + '/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey); \OC_FileProxy::$enabled = $proxyStatus; } - if ( \OCP\USER::getUser() === false || - ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && - isset( $_GET['t'] ) ) + if (\OCP\USER::getUser() === false + || (isset($_GET['service']) && $_GET['service'] == 'files' + && isset($_GET['t'])) ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); - $this->setPrivateKey( $privateKey ); + $encryptedKey = $this->view->file_get_contents( + '/owncloud_private_key/' . $publicShareKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, ''); + $this->setPrivateKey($privateKey); \OC_FileProxy::$enabled = $proxyStatus; } @@ -104,7 +105,7 @@ class Session * @param string $privateKey * @return bool */ - public function setPrivateKey( $privateKey ) { + public function setPrivateKey($privateKey) { $_SESSION['privateKey'] = $privateKey; @@ -120,8 +121,8 @@ class Session public function getPrivateKey() { if ( - isset( $_SESSION['privateKey'] ) - && !empty( $_SESSION['privateKey'] ) + isset($_SESSION['privateKey']) + && !empty($_SESSION['privateKey']) ) { return $_SESSION['privateKey']; @@ -139,7 +140,7 @@ class Session * @param $legacyKey * @return bool */ - public function setLegacyKey( $legacyKey ) { + public function setLegacyKey($legacyKey) { $_SESSION['legacyKey'] = $legacyKey; @@ -154,8 +155,8 @@ class Session public function getLegacyKey() { if ( - isset( $_SESSION['legacyKey'] ) - && !empty( $_SESSION['legacyKey'] ) + isset($_SESSION['legacyKey']) + && !empty($_SESSION['legacyKey']) ) { return $_SESSION['legacyKey']; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index fa9df02f08..88a06c0965 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -48,8 +48,7 @@ namespace OCA\Encryption; * previous version deleted, this is handled by OC\Files\View, and thus the * encryption proxies are used and keyfiles deleted. */ -class Stream -{ +class Stream { private $plainKey; private $encKeyfiles; @@ -77,18 +76,18 @@ class Stream * @param $opened_path * @return bool */ - public function stream_open( $path, $mode, $options, &$opened_path ) { + public function stream_open($path, $mode, $options, &$opened_path) { - if ( !isset( $this->rootView ) ) { - $this->rootView = new \OC_FilesystemView( '/' ); + if (!isset($this->rootView)) { + $this->rootView = new \OC_FilesystemView('/'); } - $util = new Util( $this->rootView, \OCP\USER::getUser() ); + $util = new Util($this->rootView, \OCP\USER::getUser()); $this->userId = $util->getUserId(); // Strip identifier text from path, this gives us the path relative to data//files - $this->relPath = \OC\Files\Filesystem::normalizePath( str_replace( 'crypt://', '', $path ) ); + $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace('crypt://', '', $path)); // rawPath is relative to the data directory $this->rawPath = $util->getUserFilesDir() . $this->relPath; @@ -110,25 +109,25 @@ class Stream } else { - $this->size = $this->rootView->filesize( $this->rawPath, $mode ); + $this->size = $this->rootView->filesize($this->rawPath, $mode); } - $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); + $this->handle = $this->rootView->fopen($this->rawPath, $mode); \OC_FileProxy::$enabled = $proxyStatus; - if ( !is_resource( $this->handle ) ) { + if (!is_resource($this->handle)) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR ); + \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); } else { - $this->meta = stream_get_meta_data( $this->handle ); + $this->meta = stream_get_meta_data($this->handle); } - return is_resource( $this->handle ); + return is_resource($this->handle); } @@ -136,11 +135,11 @@ class Stream * @param $offset * @param int $whence */ - public function stream_seek( $offset, $whence = SEEK_SET ) { + public function stream_seek($offset, $whence = SEEK_SET) { $this->flush(); - fseek( $this->handle, $offset, $whence ); + fseek($this->handle, $offset, $whence); } @@ -149,36 +148,37 @@ class Stream * @return bool|string * @throws \Exception */ - public function stream_read( $count ) { + public function stream_read($count) { $this->writeCache = ''; - if ( $count != 8192 ) { + if ($count != 8192) { // $count will always be 8192 https://bugs.php.net/bug.php?id=21641 // This makes this function a lot simpler, but will break this class if the above 'bug' gets 'fixed' - \OCP\Util::writeLog( 'files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL ); + \OCP\Util::writeLog('files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); die(); } // Get the data from the file handle - $data = fread( $this->handle, 8192 ); + $data = fread($this->handle, 8192); $result = ''; - if ( strlen( $data ) ) { + if (strlen($data)) { - if ( !$this->getKey() ) { + if (!$this->getKey()) { // Error! We don't have a key to decrypt the file with - throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream' ); + throw new \Exception( + 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream'); } // Decrypt data - $result = Crypt::symmetricDecryptFileContent( $data, $this->plainKey ); + $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); } @@ -192,10 +192,10 @@ class Stream * @param string $key key to use for encryption * @return string encrypted data on success, false on failure */ - public function preWriteEncrypt( $plainData, $key ) { + public function preWriteEncrypt($plainData, $key) { // Encrypt data to 'catfile', which includes IV - if ( $encrypted = Crypt::symmetricEncryptFileContent( $plainData, $key ) ) { + if ($encrypted = Crypt::symmetricEncryptFileContent($plainData, $key)) { return $encrypted; @@ -215,7 +215,7 @@ class Stream public function getKey() { // Check if key is already set - if ( isset( $this->plainKey ) && isset( $this->encKeyfile ) ) { + if (isset($this->plainKey) && isset($this->encKeyfile)) { return true; @@ -223,18 +223,18 @@ class Stream // Fetch and decrypt keyfile // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); + $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->userId, $this->relPath); // If a keyfile already exists - if ( $this->encKeyfile ) { + if ($this->encKeyfile) { - $session = new Session( $this->rootView ); + $session = new Session($this->rootView); - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); - $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); + $shareKey = Keymanager::getShareKey($this->rootView, $this->userId, $this->relPath); - $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); + $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $privateKey); return true; @@ -255,7 +255,7 @@ class Stream * @note Padding is added to each encrypted block to ensure that the resulting block is exactly 8192 bytes. This is removed during stream_read * @note PHP automatically updates the file pointer after writing data to reflect it's length. There is generally no need to update the poitner manually using fseek */ - public function stream_write( $data ) { + public function stream_write($data) { // Disable the file proxies so that encryption is not // automatically attempted when the file is written to disk - @@ -265,16 +265,16 @@ class Stream \OC_FileProxy::$enabled = false; // Get the length of the unencrypted data that we are handling - $length = strlen( $data ); + $length = strlen($data); // Find out where we are up to in the writing of data to the // file - $pointer = ftell( $this->handle ); + $pointer = ftell($this->handle); // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile - if ( !$this->getKey() ) { + if (!$this->getKey()) { $this->plainKey = Crypt::generateKey(); @@ -282,7 +282,7 @@ class Stream // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block - if ( $this->writeCache ) { + if ($this->writeCache) { // Concat writeCache to start of $data $data = $this->writeCache . $data; @@ -294,15 +294,15 @@ class Stream } // While there still remains some data to be processed & written - while ( strlen( $data ) > 0 ) { + while (strlen($data) > 0) { // Remaining length for this iteration, not of the // entire file (may be greater than 8192 bytes) - $remainingLength = strlen( $data ); + $remainingLength = strlen($data); // If data remaining to be written is less than the // size of 1 6126 byte block - if ( $remainingLength < 6126 ) { + if ($remainingLength < 6126) { // Set writeCache to contents of $data // The writeCache will be carried over to the @@ -320,25 +320,25 @@ class Stream } else { // Read the chunk from the start of $data - $chunk = substr( $data, 0, 6126 ); + $chunk = substr($data, 0, 6126); - $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); + $encrypted = $this->preWriteEncrypt($chunk, $this->plainKey); // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes - fwrite( $this->handle, $encrypted ); + fwrite($this->handle, $encrypted); // Remove the chunk we just processed from // $data, leaving only unprocessed data in $data // var, for handling on the next round - $data = substr( $data, 6126 ); + $data = substr($data, 6126); } } - $this->size = max( $this->size, $pointer + $length ); + $this->size = max($this->size, $pointer + $length); $this->unencryptedSize += $length; \OC_FileProxy::$enabled = $proxyStatus; @@ -353,17 +353,17 @@ class Stream * @param $arg1 * @param $arg2 */ - public function stream_set_option( $option, $arg1, $arg2 ) { + public function stream_set_option($option, $arg1, $arg2) { $return = false; - switch ( $option ) { + switch ($option) { case STREAM_OPTION_BLOCKING: - $return = stream_set_blocking( $this->handle, $arg1 ); + $return = stream_set_blocking($this->handle, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - $return = stream_set_timeout( $this->handle, $arg1, $arg2 ); + $return = stream_set_timeout($this->handle, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - $return = stream_set_write_buffer( $this->handle, $arg1 ); + $return = stream_set_write_buffer($this->handle, $arg1); } return $return; @@ -373,14 +373,14 @@ class Stream * @return array */ public function stream_stat() { - return fstat( $this->handle ); + return fstat($this->handle); } /** * @param $mode */ - public function stream_lock( $mode ) { - return flock( $this->handle, $mode ); + public function stream_lock($mode) { + return flock($this->handle, $mode); } /** @@ -388,7 +388,7 @@ class Stream */ public function stream_flush() { - return fflush( $this->handle ); + return fflush($this->handle); // Not a typo: http://php.net/manual/en/function.fflush.php } @@ -397,19 +397,19 @@ class Stream * @return bool */ public function stream_eof() { - return feof( $this->handle ); + return feof($this->handle); } private function flush() { - if ( $this->writeCache ) { + if ($this->writeCache) { // Set keyfile property for file in question $this->getKey(); - $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->plainKey ); + $encrypted = $this->preWriteEncrypt($this->writeCache, $this->plainKey); - fwrite( $this->handle, $encrypted ); + fwrite($this->handle, $encrypted); $this->writeCache = ''; @@ -427,40 +427,40 @@ class Stream if ( $this->meta['mode'] != 'r' and $this->meta['mode'] != 'rb' - and $this->size > 0 + and $this->size > 0 ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Fetch user's public key - $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); + $this->publicKey = Keymanager::getPublicKey($this->rootView, $this->userId); // Check if OC sharing api is enabled $sharingEnabled = \OCP\Share::isEnabled(); - $util = new Util( $this->rootView, $this->userId ); + $util = new Util($this->rootView, $this->userId); // Get all users sharing the file includes current user - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId ); + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $this->relPath, $this->userId); // Fetch public keys for all sharing users - $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($this->rootView, $uniqueUserIds); // Encrypt enc key for all sharing users - $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); + $this->encKeyfiles = Crypt::multiKeyEncrypt($this->plainKey, $publicKeys); - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); // Save the new encrypted file key - Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); + Keymanager::setFileKey($this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data']); // Save the sharekeys - Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + Keymanager::setShareKeys($view, $this->relPath, $this->encKeyfiles['keys']); // get file info - $fileInfo = $view->getFileInfo( $this->rawPath ); - if ( !is_array( $fileInfo ) ) { + $fileInfo = $view->getFileInfo($this->rawPath); + if (!is_array($fileInfo)) { $fileInfo = array(); } @@ -473,10 +473,10 @@ class Stream $fileInfo['unencrypted_size'] = $this->unencryptedSize; // set fileinfo - $view->putFileInfo( $this->rawPath, $fileInfo ); + $view->putFileInfo($this->rawPath, $fileInfo); } - return fclose( $this->handle ); + return fclose($this->handle); } From 8b355788333f9078066b3f877c4e5c1c4001597c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 12:02:27 +0200 Subject: [PATCH 349/575] fix migration from old to new encryption --- apps/files_encryption/hooks/hooks.php | 2 -- apps/files_encryption/lib/crypt.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2066300a16..07072fb8c4 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -81,8 +81,6 @@ class Hooks { $session->setLegacyKey( $plainLegacyKey ); } - - $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); // Encrypt existing user files: // This serves to upgrade old versions of the encryption diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index f5b7a8a0a4..009a648016 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -613,7 +613,7 @@ class Crypt $decrypted = $bf->decrypt( $content ); - return rtrim( $decrypted, "\0" );; + return $decrypted; } From df22a7c4954acb67c9365f9900bd7a3f70f13487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 12:21:39 +0200 Subject: [PATCH 350/575] make legacyDecrypt() private als always call legacyBlockDecrypt() from other classes --- apps/files_encryption/hooks/hooks.php | 2 +- apps/files_encryption/lib/crypt.php | 2 +- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/tests/crypt.php | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 07072fb8c4..9af1f2c645 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -76,7 +76,7 @@ class Hooks { && $encLegacyKey = $userView->file_get_contents( 'encryption.key' ) ) { - $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); + $plainLegacyKey = Crypt::legacyBlockDecrypt( $encLegacyKey, $params['password'] ); $session->setLegacyKey( $plainLegacyKey ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 009a648016..9345712a45 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -607,7 +607,7 @@ class Crypt * * This function decrypts an content */ - public static function legacyDecrypt( $content, $passphrase = '' ) { + private static function legacyDecrypt( $content, $passphrase = '' ) { $bf = self::getBlowfish( $passphrase ); diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index eaaeae9b61..d9520810bf 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -223,7 +223,7 @@ class Proxy extends \OC_FileProxy && isset( $_SESSION['legacyenckey'] ) && Crypt::isEncryptedMeta( $path ) ) { - $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); + $plainData = Crypt::legacyBlockDecrypt( $data, $session->getLegacyKey() ); } \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 74b4252a1d..e9f155e264 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -515,7 +515,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyDecryptShort($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyBlockDecrypt($crypted, $this->pass); $this->assertEquals($this->dataShort, $decrypted); @@ -543,7 +543,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyDecryptLong($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyBlockDecrypt($crypted, $this->pass); $this->assertEquals($this->dataLong, $decrypted); @@ -560,7 +560,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $encKey = Encryption\Crypt::legacyCreateKey($this->pass); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); + $key = Encryption\Crypt::legacyBlockDecrypt($encKey, $this->pass); $this->assertTrue(is_numeric($key)); From 4c05259ccfbb7e2f0083794172eaa7c06f4b2592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 13:47:03 +0200 Subject: [PATCH 351/575] legacyBlockDecryprt() needs to be public --- apps/files_encryption/lib/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 9345712a45..33f9fc2060 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -623,7 +623,7 @@ class Crypt * @param int $maxLength * @return string */ - private static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { + public static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { $result = ''; while ( strlen( $data ) ) { $result .= self::legacyDecrypt( substr( $data, 0, 8192 ), $key ); From c81e34ef899617d4c0280bd3b19d5ef7da31d158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Mon, 27 May 2013 18:03:29 +0200 Subject: [PATCH 352/575] replace == with === --- apps/files_encryption/ajax/adminrecovery.php | 2 +- apps/files_encryption/ajax/userrecovery.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index d532bb62b6..9375e27913 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -21,7 +21,7 @@ $return = false; $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); -if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1) { +if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === "1") { $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); $action = "enable"; diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index 4b364121e3..4b971f2afb 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -15,7 +15,7 @@ use OCA\Encryption; if ( isset($_POST['userEnableRecovery']) - && (0 == $_POST['userEnableRecovery'] || 1 == $_POST['userEnableRecovery']) + && (0 == $_POST['userEnableRecovery'] || "1" === $_POST['userEnableRecovery']) ) { $userId = \OCP\USER::getUser(); @@ -25,7 +25,7 @@ if ( // Save recovery preference to DB $return = $util->setRecoveryForUser($_POST['userEnableRecovery']); - if ($_POST['userEnableRecovery'] == "1") { + if ($_POST['userEnableRecovery'] === "1") { $util->addRecoveryKeys(); } else { $util->removeRecoveryKeys(); From 58c9175a567fe8db0a3ed4711d8360526d3cdaf8 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 19:19:17 +0200 Subject: [PATCH 353/575] move check if internet connection is disabled on purpose to a dedicated method --- lib/util.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/util.php b/lib/util.php index 51f9fcffc4..5fadb8cb24 100755 --- a/lib/util.php +++ b/lib/util.php @@ -641,9 +641,8 @@ class OC_Util { * Check if the ownCloud server can connect to the internet */ public static function isinternetconnectionworking() { - // in case there is no internet connection on purpose there is no need to display a warning - if (!\OC_Config::getValue("has_internet_connection", true)) { + if (self::isinternetconnectionenabled() === false) { return false; } @@ -666,6 +665,13 @@ class OC_Util { } } + + /** + * Check if the connection to the internet is disabled on purpose + */ + public static function isinternetconnectionenabled(){ + return \OC_Config::getValue("has_internet_connection", true); + } /** * clear all levels of output buffering From 3f52393866eabc6d72023ddaf37cc3e0d066c224 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 19:19:47 +0200 Subject: [PATCH 354/575] don't show a warning if internet connection is disabled on purpose --- settings/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/admin.php b/settings/admin.php index 035cef5bf9..1f6c7ed37d 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -24,7 +24,7 @@ $tmpl->assign('loglevel', OC_Config::getValue( "loglevel", 2 )); $tmpl->assign('entries', $entries); $tmpl->assign('entriesremain', $entriesremain); $tmpl->assign('htaccessworking', $htaccessworking); -$tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionworking()); +$tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionenabled() ? OC_Util::isinternetconnectionworking() : 0); $tmpl->assign('islocaleworking', OC_Util::issetlocaleworking()); $tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking()); $tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded()); From d69b7e24d288f08bb7ebc73d46772a2939a0f31f Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 19:20:29 +0200 Subject: [PATCH 355/575] update comment --- lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index 5fadb8cb24..76309942cc 100755 --- a/lib/util.php +++ b/lib/util.php @@ -641,7 +641,7 @@ class OC_Util { * Check if the ownCloud server can connect to the internet */ public static function isinternetconnectionworking() { - // in case there is no internet connection on purpose there is no need to display a warning + // in case there is no internet connection on purpose return false if (self::isinternetconnectionenabled() === false) { return false; } From 557cc4c1ab29c005ab13b8bbefed108a928679a8 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 19:24:31 +0200 Subject: [PATCH 356/575] make method names camelCase --- lib/util.php | 6 +++--- settings/admin.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/util.php b/lib/util.php index 76309942cc..40075ef777 100755 --- a/lib/util.php +++ b/lib/util.php @@ -640,9 +640,9 @@ class OC_Util { /** * Check if the ownCloud server can connect to the internet */ - public static function isinternetconnectionworking() { + public static function isInternetconnectionWorking() { // in case there is no internet connection on purpose return false - if (self::isinternetconnectionenabled() === false) { + if (self::isInternetconnectionEnabled() === false) { return false; } @@ -669,7 +669,7 @@ class OC_Util { /** * Check if the connection to the internet is disabled on purpose */ - public static function isinternetconnectionenabled(){ + public static function isInternetconnectionEnabled(){ return \OC_Config::getValue("has_internet_connection", true); } diff --git a/settings/admin.php b/settings/admin.php index 1f6c7ed37d..67c7cdaa61 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -24,7 +24,7 @@ $tmpl->assign('loglevel', OC_Config::getValue( "loglevel", 2 )); $tmpl->assign('entries', $entries); $tmpl->assign('entriesremain', $entriesremain); $tmpl->assign('htaccessworking', $htaccessworking); -$tmpl->assign('internetconnectionworking', OC_Util::isinternetconnectionenabled() ? OC_Util::isinternetconnectionworking() : 0); +$tmpl->assign('internetconnectionworking', OC_Util::isInternetconnectionEnabled() ? OC_Util::isInternetconnectionWorking() : 0); $tmpl->assign('islocaleworking', OC_Util::issetlocaleworking()); $tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking()); $tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded()); From 183f8c90af7d4a855d806285f30f0b26c2d087ec Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 19:26:53 +0200 Subject: [PATCH 357/575] use false instead of 0 --- settings/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/admin.php b/settings/admin.php index 67c7cdaa61..c2be9aec87 100755 --- a/settings/admin.php +++ b/settings/admin.php @@ -24,7 +24,7 @@ $tmpl->assign('loglevel', OC_Config::getValue( "loglevel", 2 )); $tmpl->assign('entries', $entries); $tmpl->assign('entriesremain', $entriesremain); $tmpl->assign('htaccessworking', $htaccessworking); -$tmpl->assign('internetconnectionworking', OC_Util::isInternetconnectionEnabled() ? OC_Util::isInternetconnectionWorking() : 0); +$tmpl->assign('internetconnectionworking', OC_Util::isInternetconnectionEnabled() ? OC_Util::isInternetconnectionWorking() : false); $tmpl->assign('islocaleworking', OC_Util::issetlocaleworking()); $tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking()); $tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded()); From 3001db6b50c44d78b9f3eaf947b9a680c8b81dc5 Mon Sep 17 00:00:00 2001 From: kondou Date: Mon, 27 May 2013 20:13:13 +0200 Subject: [PATCH 358/575] Update jquery to 1.10.0 & add jquery-migrate 1.2.1 --- core/js/jquery-1.10.0.min.js | 6 ++++++ core/js/jquery-1.7.2.min.js | 4 ---- core/js/jquery-migrate-1.2.1.min.js | 2 ++ lib/base.php | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 core/js/jquery-1.10.0.min.js delete mode 100644 core/js/jquery-1.7.2.min.js create mode 100644 core/js/jquery-migrate-1.2.1.min.js diff --git a/core/js/jquery-1.10.0.min.js b/core/js/jquery-1.10.0.min.js new file mode 100644 index 0000000000..01c688164a --- /dev/null +++ b/core/js/jquery-1.10.0.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.0.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.0",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="
          ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
          a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
          t
          ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
          ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s; +if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
          ","
          "],area:[1,"",""],param:[1,"",""],thead:[1,"","
          "],tr:[2,"","
          "],col:[2,"","
          "],td:[3,"","
          "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
          ","
          "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}) +}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("