diff options
author | Sam Tuke <samtuke@owncloud.com> | 2013-01-22 16:50:20 +0000 |
---|---|---|
committer | Sam Tuke <samtuke@owncloud.com> | 2013-01-22 16:50:20 +0000 |
commit | 619780a67de6d4e1592e4c6e08e0689b022ec5c0 (patch) | |
tree | d18fa54a628b26540eaa0acb4313868d3d28e8cb /apps | |
parent | 3fbf362ba2f60917023833800e9e2dc47e190af1 (diff) | |
parent | cd802ed45bca8fabb0252e40ab14fa8bb0f935ec (diff) | |
download | nextcloud-server-619780a67de6d4e1592e4c6e08e0689b022ec5c0.tar.gz nextcloud-server-619780a67de6d4e1592e4c6e08e0689b022ec5c0.zip |
Merge branch 'master' into files_encryption
Diffstat (limited to 'apps')
35 files changed, 547 insertions, 319 deletions
diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php index 45cf1c2313d..e55c8811393 100644 --- a/apps/files/l10n/bn_BD.php +++ b/apps/files/l10n/bn_BD.php @@ -1,46 +1,71 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "%s āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻ¨āĻž - āĻāĻ āĻ¨āĻžāĻŽā§āĻ° āĻĢāĻžāĻāĻ˛ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨", +"Could not move %s" => "%s āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻ¨āĻž", +"Unable to rename file" => "āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻ¨āĻž", +"No file was uploaded. Unknown error" => "āĻā§āĻ¨ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšā§ āĻ¨āĻŋāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻā§āĻāĻžāĻ¤āĨ¤", "There is no error, the file uploaded with success" => "āĻā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§āĻ, āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻ¸ā§āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšā§ā§āĻā§", -"The uploaded file was only partially uploaded" => "āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻāĻļāĻŋāĻ āĻāĻĒāĻ˛ā§āĻĄ āĻšā§ā§āĻā§", +"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" => "āĻ
āĻ¸ā§āĻĨāĻžā§ā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻāĻŋ āĻā§ā§āĻž āĻāĻŋā§ā§āĻā§ ", -"Failed to write to disk" => "āĻĄāĻŋāĻ¸ā§āĻā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻž āĻā§āĻ˛ āĻ¨āĻž", +"Missing a temporary folder" => "āĻ
āĻ¸ā§āĻĨāĻžā§ā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻā§ā§āĻž āĻāĻŋā§ā§āĻā§", +"Failed to write to disk" => "āĻĄāĻŋāĻ¸ā§āĻā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻŦā§āĻ¯āĻ°ā§āĻĨ", +"Not enough space available" => "āĻ¯āĻĨā§āĻˇā§āĻ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨ā§āĻ", +"Invalid directory." => "āĻā§āĻ˛ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ", "Files" => "āĻĢāĻžāĻāĻ˛", -"Unshare" => "āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻŦāĻžāĻ¤āĻŋāĻ˛", +"Unshare" => "āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻŦāĻžāĻ¤āĻŋāĻ˛ ", "Delete" => "āĻŽā§āĻā§ āĻĢā§āĻ˛", "Rename" => "āĻĒā§āĻ¨āĻāĻ¨āĻžāĻŽāĻāĻ°āĻŖ", "{new_name} already exists" => "{new_name} āĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨", "replace" => "āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨", -"suggest name" => "āĻ¨āĻžāĻŽ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°", +"suggest name" => "āĻ¨āĻžāĻŽ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§āĻ¨", "cancel" => "āĻŦāĻžāĻ¤āĻŋāĻ˛", "replaced {new_name}" => "{new_name} āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšā§ā§āĻā§", "undo" => "āĻā§āĻ°āĻŋā§āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ°", "replaced {new_name} with {old_name}" => "{new_name} āĻā§ {old_name} āĻ¨āĻžāĻŽā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšā§ā§āĻā§", "unshared {files}" => "{files} āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°", "deleted {files}" => "{files} āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšā§ā§āĻā§", -"Upload Error" => "āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž", +"'.' is an invalid file name." => "āĻāĻŋ āĻāĻāĻāĻŋ āĻ
āĻ¨āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ¨āĻžāĻŽāĨ¤", +"File name cannot be empty." => "āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¨āĻžāĻŽāĻāĻŋ āĻĢāĻžāĻāĻāĻž āĻ°āĻžāĻāĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "āĻ¨āĻžāĻŽāĻāĻŋ āĻ¸āĻ āĻŋāĻ āĻ¨ā§, '\\', '/', '<', '>', ':', '\"', '|', '?' āĻāĻŦāĻ '*' āĻ
āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ¨ā§āĨ¤", +"generating ZIP-file, it may take some time." => "ZIP- āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°ā§ āĻāĻ°āĻž āĻšāĻā§āĻā§, āĻāĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻ¸āĻŽā§ āĻāĻŦāĻļā§āĻ¯āĻāĨ¤", +"Unable to upload your file as it is a directory or has 0 bytes" => "āĻāĻĒāĻ¨āĻžāĻ° āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻ¨āĻž, āĻā§āĻ¨āĻ¨āĻž āĻāĻāĻŋ āĻšā§ āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻāĻŋāĻāĻŦāĻž āĻāĻ° āĻāĻāĻžāĻ° ā§Ļ āĻŦāĻžāĻāĻ", +"Upload Error" => "āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž ", +"Close" => "āĻŦāĻ¨ā§āĻ§", "Pending" => "āĻŽā§āĻ˛āĻ¤ā§āĻŦāĻŋ", -"1 file uploading" => "ā§§ āĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻā§āĻā§", -"Upload cancelled." => "āĻāĻĒāĻ˛ā§āĻĄ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°āĻž āĻšā§ā§āĻā§ āĨ¤", +"1 file uploading" => "ā§§āĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻā§āĻā§", +"{count} files uploading" => "{count} āĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻā§āĻā§", +"Upload cancelled." => "āĻāĻĒāĻ˛ā§āĻĄ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°āĻž āĻšā§ā§āĻā§āĨ¤", +"File upload is in progress. Leaving the page now will cancel the upload." => "āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ˛āĻŽāĻžāĻ¨āĨ¤ āĻāĻ āĻĒā§āĻˇā§āĻ āĻž āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻžāĻ āĻāĻ°āĻ˛ā§ āĻāĻĒāĻ˛ā§āĻĄ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤", +"URL cannot be empty." => "URL āĻĢāĻžāĻāĻāĻž āĻ°āĻžāĻāĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽāĻāĻŋ āĻ¸āĻ āĻŋāĻ āĻ¨ā§āĨ¤ 'āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻāĻ°āĻž' āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Owncloud āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤āĨ¤", +"{count} files scanned" => "{count} āĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻž āĻšā§ā§āĻā§", "error while scanning" => "āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§āĻāĻž āĻĻāĻŋā§ā§āĻā§", "Name" => "āĻ¨āĻžāĻŽ", "Size" => "āĻāĻāĻžāĻ°", "Modified" => "āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤", -"File handling" => "āĻĢāĻžāĻāĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ", +"1 folder" => "ā§§āĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°", +"{count} folders" => "{count} āĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°", +"1 file" => "ā§§āĻāĻŋ āĻĢāĻžāĻāĻ˛", +"{count} files" => "{count} āĻāĻŋ āĻĢāĻžāĻāĻ˛", +"File handling" => "āĻĢāĻžāĻāĻ˛ āĻšā§āĻ¯āĻžāĻ°ā§āĻĄāĻ˛āĻŋāĻ", "Maximum upload size" => "āĻāĻĒāĻ˛ā§āĻĄā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻāĻāĻžāĻ°", -"max. possible: " => "āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ¸āĻ°ā§āĻŦā§āĻā§āĻāĻ", -"Needed for multi-file and folder downloads." => "āĻāĻāĻžāĻ§āĻŋāĻ āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŦāĻļā§āĻ¯āĻāĨ¤", -"Enable ZIP-download" => "āĻāĻŋāĻĒ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻ¸āĻā§āĻ°āĻŋā§ āĻāĻ°", -"0 is unlimited" => "ā§Ļ āĻāĻ° āĻ
āĻ°ā§āĻĨ āĻšāĻ˛ā§ āĻ
āĻ¸ā§āĻŽ", -"Maximum input size for ZIP files" => "āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻāĻ¨āĻĒā§āĻ", -"Save" => "āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°", +"max. possible: " => "āĻ
āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻāĻāĻžāĻ°", +"Needed for multi-file and folder downloads." => "āĻāĻāĻžāĻ§āĻŋāĻ āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻļā§āĻ¯āĻāĨ¤", +"Enable ZIP-download" => "ZIP āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻ¸āĻā§āĻ°āĻŋā§ āĻāĻ°", +"0 is unlimited" => "ā§Ļ āĻāĻ° āĻ
āĻ°ā§āĻĨ āĻ
āĻ¸ā§āĻŽ", +"Maximum input size for ZIP files" => "ZIP āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨āĻĒā§āĻā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻāĻāĻžāĻ°", +"Save" => "āĻ¸āĻāĻ°āĻā§āĻˇāĻ¨ āĻāĻ°", "New" => "āĻ¨āĻ¤ā§āĻ¨", "Text file" => "āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛", "Folder" => "āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°", +"From link" => " āĻ˛āĻŋāĻāĻ āĻĨā§āĻā§", "Upload" => "āĻāĻĒāĻ˛ā§āĻĄ", "Cancel upload" => "āĻāĻĒāĻ˛ā§āĻĄ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°", -"Nothing in here. Upload something!" => "āĻāĻāĻžāĻ¨ā§ āĻā§āĻ¨ āĻāĻŋāĻā§āĻ āĻ¨ā§āĻāĨ¤ āĻāĻŋāĻā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨ !", +"Nothing in here. Upload something!" => "āĻāĻāĻžāĻ¨ā§ āĻāĻŋāĻā§āĻ āĻ¨ā§āĻāĨ¤ āĻāĻŋāĻā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨ !", "Download" => "āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ", -"Upload too large" => "āĻāĻĒāĻ˛ā§āĻĄā§āĻ° āĻāĻāĻžāĻ° āĻ
āĻ¨ā§āĻ āĻŦā§", -"Files are being scanned, please wait." => "āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻā§āĻā§, āĻĻā§āĻž āĻāĻ°ā§ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨āĨ¤", +"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/ca.php b/apps/files/l10n/ca.php index df099c6331d..f6ddbcd8e18 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", +"Could not move %s" => " No s'ha pogut moure %s", +"Unable to rename file" => "No es pot canviar el nom del fitxer", "No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut", "There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Lâarxiu que voleu carregar supera el mà xim definit en la directiva upload_max_filesize del php.ini:", diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index 301a54c343a..65ac4b04931 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Nelze pÅesunout %s - existuje soubor se stejnÃŊm nÃĄzvem", +"Could not move %s" => "Nelze pÅesunout %s", +"Unable to rename file" => "Nelze pÅejmenovat soubor", "No file was uploaded. Unknown error" => "Soubor nebyl odeslÃĄn. NeznÃĄmÃĄ chyba", "There is no error, the file uploaded with success" => "Soubor byl odeslÃĄn ÃēspÄÅĄnÄ", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "OdesÃlanÃŊ soubor pÅesahuje velikost upload_max_filesize povolenou v php.ini:", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index 1c0af30be5c..089ce1c0a26 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.", +"Could not move %s" => "Konnte %s nicht verschieben", +"Unable to rename file" => "Konnte Datei nicht umbenennen", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", "There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei Ãŧberschreitet die upload_max_filesize Vorgabe in php.ini", @@ -8,7 +11,7 @@ "Missing a temporary folder" => "Temporärer Ordner fehlt.", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", "Not enough space available" => "Nicht genug Speicherplatz verfÃŧgbar", -"Invalid directory." => "UngÃŧltiges Verzeichnis.", +"Invalid directory." => "UngÃŧltiges Verzeichnis", "Files" => "Dateien", "Unshare" => "Nicht mehr freigeben", "Delete" => "LÃļschen", @@ -22,8 +25,8 @@ "replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}", "unshared {files}" => "Freigabe von {files} aufgehoben", "deleted {files}" => "{files} gelÃļscht", -"'.' is an invalid file name." => "'.' ist kein gÃŧltiger Dateiname.", -"File name cannot be empty." => "Der Dateiname darf nicht leer sein.", +"'.' is an invalid file name." => "'.' ist kein gÃŧltiger Dateiname", +"File name cannot be empty." => "Der Dateiname darf nicht leer sein", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "UngÃŧltiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.", "generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.", "Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groà ist.", @@ -34,7 +37,8 @@ "{count} files uploading" => "{count} Dateien werden hochgeladen", "Upload cancelled." => "Upload abgebrochen.", "File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.", -"URL cannot be empty." => "Die URL darf nicht leer sein.", +"URL cannot be empty." => "Die URL darf nicht leer sein", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "UngÃŧltiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.", "{count} files scanned" => "{count} Dateien wurden gescannt", "error while scanning" => "Fehler beim Scannen", "Name" => "Name", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php index a7526d35646..5cd4ef70425 100644 --- a/apps/files/l10n/de_DE.php +++ b/apps/files/l10n/de_DE.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits", +"Could not move %s" => "Konnte %s nicht verschieben", +"Unable to rename file" => "Konnte Datei nicht umbenennen", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", "There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei Ãŧberschreitet die upload_max_filesize Vorgabe in php.ini", @@ -35,6 +38,7 @@ "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.", "URL cannot be empty." => "Die URL darf nicht leer sein.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "UngÃŧltiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten", "{count} files scanned" => "{count} Dateien wurden gescannt", "error while scanning" => "Fehler beim Scannen", "Name" => "Name", diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index 7489d3b555e..885ed3770e9 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "No se puede mover %s - Ya existe un archivo con ese nombre", +"Could not move %s" => "No se puede mover %s", +"Unable to rename file" => "No se puede renombrar el archivo", "No file was uploaded. Unknown error" => "Fallo no se subiÃŗ el fichero", "There is no error, the file uploaded with success" => "No se ha producido ningÃēn error, el archivo se ha subido con Êxito", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaÃąo definido por la variable upload_max_filesize en php.ini", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index 3847590c99e..e7e4b044372 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa", +"Could not move %s" => "Kohteen %s siirto ei onnistunut", +"Unable to rename file" => "Tiedoston nimeäminen uudelleen ei onnistunut", "No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe", "There is no error, the file uploaded with success" => "Ei virheitä, tiedosto lähetettiin onnistuneesti", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index 9e911324d25..f14759ff8f0 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Impossible de dÊplacer %s - Un fichier possÊdant ce nom existe dÊjà ", +"Could not move %s" => "Impossible de dÊplacer %s", +"Unable to rename file" => "Impossible de renommer le fichier", "No file was uploaded. Unknown error" => "Aucun fichier n'a ÊtÊ chargÊ. Erreur inconnue", "There is no error, the file uploaded with success" => "Aucune erreur, le fichier a ÊtÊ tÊlÊversÊ avec succès", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyÊ dÊpasse la valeur upload_max_filesize situÊe dans le fichier php.ini:", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index 5bd30e95d17..c15066163cf 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Non se moveu %s - Xa existe un ficheiro con ese nome.", +"Could not move %s" => "Non se puido mover %s", +"Unable to rename file" => "Non se pode renomear o ficheiro", "No file was uploaded. Unknown error" => "Non se subiu ningÃēn ficheiro. Erro descoÃąecido.", "There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaÃąo_mÃĄximo_de_subida de php.ini", @@ -22,6 +25,8 @@ "replaced {new_name} with {old_name}" => "substituÃr {new_name} polo {old_name}", "unshared {files}" => "{files} sen compartir", "deleted {files}" => "{files} eliminados", +"'.' is an invalid file name." => "'.' Ê un nonme de ficheiro non vÃĄlido", +"File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non vÃĄlido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.", "generating ZIP-file, it may take some time." => "xerando un ficheiro ZIP, o que pode levar un anaco.", "Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou Ê un directorio ou ten 0 bytes", @@ -33,6 +38,7 @@ "Upload cancelled." => "Subida cancelada.", "File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro estÃĄ en curso. SaÃr agora da pÃĄxina cancelarÃĄ a subida.", "URL cannot be empty." => "URL non pode quedar baleiro.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non vÃĄlido. O uso de 'Shared' estÃĄ reservado por Owncloud", "{count} files scanned" => "{count} ficheiros escaneados", "error while scanning" => "erro mentres analizaba", "Name" => "Nome", diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php index b70d212c9c7..2eff686611a 100644 --- a/apps/files/l10n/is.php +++ b/apps/files/l10n/is.php @@ -1,4 +1,8 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Gat ekki fÃĻrt %s - SkrÃĄ með Þessu nafni er Þegar til", +"Could not move %s" => "Gat ekki fÃĻrt %s", +"Unable to rename file" => "Gat ekki endurskÃŊrt skrÃĄ", +"No file was uploaded. Unknown error" => "Engin skrÃĄ var send inn. ÃÞekkt villa.", "There is no error, the file uploaded with success" => "Engin villa, innsending heppnaðist", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Innsend skrÃĄ er stÃĻrri en upload_max stillingin à php.ini:", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Innsenda skrÃĄin er stÃĻrri en MAX_FILE_SIZE sem skilgreint er à HTML sniðinu.", @@ -6,6 +10,8 @@ "No file was uploaded" => "Engin skrÃĄ skilaði sÊr", "Missing a temporary folder" => "Vantar brÃĄÃ°abirgðamÃļppu", "Failed to write to disk" => "TÃŗkst ekki að skrifa ÃĄ disk", +"Not enough space available" => "Ekki nÃĻgt plÃĄss tiltÃĻkt", +"Invalid directory." => "Ãgild mappa.", "Files" => "SkrÃĄr", "Unshare" => "HÃĻtta deilingu", "Delete" => "Eyða", @@ -19,6 +25,8 @@ "replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}", "unshared {files}" => "HÃĻtti við deilingu ÃĄ {files}", "deleted {files}" => "eyddi {files}", +"'.' is an invalid file name." => "'.' er ekki leyfilegt nafn.", +"File name cannot be empty." => "Nafn skrÃĄar mÃĄ ekki vera tÃŗmt", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ãgilt nafn, tÃĄknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð.", "generating ZIP-file, it may take some time." => "bÃŊ til ZIP skrÃĄ, Það gÃĻti tekið smÃĄ stund.", "Unable to upload your file as it is a directory or has 0 bytes" => "Innsending ÃĄ skrÃĄ mistÃŗkst, hugsanlega sendir ÞÃē mÃļppu eða skrÃĄin er 0 bÃĻti.", @@ -30,6 +38,7 @@ "Upload cancelled." => "HÃĻtt við innsendingu.", "File upload is in progress. Leaving the page now will cancel the upload." => "Innsending à gangi. Ef ÞÃē ferð af Þessari sÃðu mun innsending misheppnast.", "URL cannot be empty." => "VefslÃŗð mÃĄ ekki vera tÃŗm.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ãleyfilegt nafn ÃĄ mÃļppu. Nafnið 'Shared' er frÃĄtekið fyrir Owncloud", "{count} files scanned" => "{count} skrÃĄr skimaðar", "error while scanning" => "villa við skimun", "Name" => "Nafn", @@ -53,9 +62,9 @@ "From link" => "Af tengli", "Upload" => "Senda inn", "Cancel upload" => "HÃĻtta við innsendingu", -"Nothing in here. Upload something!" => "Ekkert hÊr. Sendu eitthvað inn!", +"Nothing in here. Upload something!" => "Ekkert hÊr. Settu eitthvað inn!", "Download" => "Niðurhal", -"Upload too large" => "Innsend skrÃĄ of stÃŗr", +"Upload too large" => "Innsend skrÃĄ er of stÃŗr", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "SkrÃĄrnar sem ÞÃē ert að senda inn eru stÃĻrri en hÃĄmarks innsendingarstÃĻrð ÃĄ Þessum netÞjÃŗni.", "Files are being scanned, please wait." => "Verið er að skima skrÃĄr, vinsamlegast hinkraðu.", "Current scanning" => "Er að skima" diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index 8c3173d5d50..a54e424694f 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "Impossibile spostare %s - un file con questo nome esiste già ", +"Could not move %s" => "Impossibile spostare %s", +"Unable to rename file" => "Impossibile rinominare il file", "No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto", "There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:", diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index eab693c3431..4621cc5d4ea 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "%s ãį§ģåã§ããžããã§ãã â ããŽååãŽããĄã¤ãĢã¯ãã§ãĢåå¨ããžã", +"Could not move %s" => "%s ãį§ģåã§ããžããã§ãã", +"Unable to rename file" => "ããĄã¤ãĢåãŽå¤æ´ãã§ããžãã", "No file was uploaded. Unknown error" => "ããĄã¤ãĢã¯äŊããĸããããŧããããĻããžãããä¸æãĒã¨ãŠãŧ", "There is no error, the file uploaded with success" => "ã¨ãŠãŧã¯ãããžãããããĄã¤ãĢãŽãĸããããŧãã¯æåããžãã", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ãĸããããŧããããããĄã¤ãĢã¯php.ini ㎠upload_max_filesize ãĢč¨åŽããããĩã¤ãēãčļ
ããĻããžã:", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index dd7df1c0862..928b7cbb7e4 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "%s íëĒŠė ė´ëėí¤ė§ ëĒģíėė - íėŧ ė´ëĻė´ ė´ë¯¸ ėĄ´ėŦí¨", +"Could not move %s" => "%s íëĒŠė ė´ëŠėí¤ė§ ëĒģíėė", +"Unable to rename file" => "íėŧ ė´ëĻë°ęž¸ę¸° í ė ėė", "No file was uploaded. Unknown error" => "íėŧė´ ė
ëĄëëė§ ėėėĩëë¤. ė ė ėë ė¤ëĨė
ëë¤", "There is no error, the file uploaded with success" => "ė
ëĄëė ėąęŗĩíėėĩëë¤.", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ė
ëĄëí íėŧė´ php.iniė upload_max_filesizeëŗ´ë¤ íŊëë¤:", @@ -35,6 +38,7 @@ "Upload cancelled." => "ė
ëĄëę° ėˇ¨ėëėėĩëë¤.", "File upload is in progress. Leaving the page now will cancel the upload." => "íėŧ ė
ëĄëę° ė§í ė¤ė
ëë¤. ė´ íė´ė§ëĨŧ ë˛ė´ë늴 ė
ëĄëę° ėˇ¨ėëŠëë¤.", "URL cannot be empty." => "URLė ė
ë Ĩí´ėŧ íŠëë¤.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "í´ë ė´ëĻė´ ė í¨íė§ ėėĩëë¤. ", "{count} files scanned" => "íėŧ {count}ę° ę˛ėë¨", "error while scanning" => "ę˛ė ė¤ ė¤ëĨ ë°ė", "Name" => "ė´ëĻ", diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index 447cd6bdeb6..fb22894b34e 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "NÃŖo foi possÃvel mover o ficheiro %s - JÃĄ existe um ficheiro com esse nome", +"Could not move %s" => "NÃŖo foi possÃvel move o ficheiro %s", +"Unable to rename file" => "NÃŖo foi possÃvel renomear o ficheiro", "No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido", "There is no error, the file uploaded with success" => "Sem erro, ficheiro enviado com sucesso", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize", @@ -35,6 +38,7 @@ "Upload cancelled." => "O envio foi cancelado.", "File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. IrÃĄ cancelar o envio se sair da pÃĄgina agora.", "URL cannot be empty." => "O URL nÃŖo pode estar vazio.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta invÃĄlido. O Uso de 'shared' Ê reservado para o ownCloud", "{count} files scanned" => "{count} ficheiros analisados", "error while scanning" => "erro ao analisar", "Name" => "Nome", diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index b816311fac7..c34a341e53f 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -1,4 +1,6 @@ <?php $TRANSLATIONS = array( +"Could not move %s" => "Nu s-a putut muta %s", +"Unable to rename file" => "Nu s-a putut redenumi fiČierul", "No file was uploaded. Unknown error" => "Nici un fiČier nu a fost ÃŽncÄrcat. Eroare necunoscutÄ", "There is no error, the file uploaded with success" => "Nicio eroare, fiČierul a fost ÃŽncÄrcat cu succes", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ", @@ -7,6 +9,8 @@ "No file was uploaded" => "Niciun fiČier ÃŽncÄrcat", "Missing a temporary folder" => "LipseČte un dosar temporar", "Failed to write to disk" => "Eroare la scriere pe disc", +"Not enough space available" => "Nu este suficient spaČiu disponibil", +"Invalid directory." => "Director invalid.", "Files" => "FiČiere", "Unshare" => "AnuleazÄ partajarea", "Delete" => "Čterge", @@ -20,6 +24,8 @@ "replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}", "unshared {files}" => "nedistribuit {files}", "deleted {files}" => "Sterse {files}", +"'.' is an invalid file name." => "'.' este un nume invalid de fiČier.", +"File name cannot be empty." => "Numele fiČierului nu poate rÄmÃĸne gol.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.", "generating ZIP-file, it may take some time." => "se generazÄ fiČierul ZIP, va dura ceva timp.", "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.", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index bbbeebc93d0..49ead61f67e 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -1,4 +1,7 @@ <?php $TRANSLATIONS = array( +"Could not move %s - File with this name already exists" => "ĐĐĩвОСĐŧĐžĐļĐŊĐž ĐŋĐĩŅĐĩĐŧĐĩŅŅиŅŅ %s - ŅĐ°ĐšĐģ Ņ ŅĐ°ĐēиĐŧ иĐŧĐĩĐŊĐĩĐŧ ŅĐļĐĩ ŅŅŅĐĩŅŅвŅĐĩŅ", +"Could not move %s" => "ĐĐĩвОСĐŧĐžĐļĐŊĐž ĐŋĐĩŅĐĩĐŧĐĩŅŅиŅŅ %s", +"Unable to rename file" => "ĐĐĩвОСĐŧĐžĐļĐŊĐž ĐŋĐĩŅĐĩиĐŧĐĩĐŊОваŅŅ ŅĐ°ĐšĐģ", "No file was uploaded. Unknown error" => "ФаКĐģ ĐŊĐĩ ĐąŅĐģ СаĐŗŅŅĐļĐĩĐŊ. ĐĐĩиСвĐĩŅŅĐŊĐ°Ņ ĐžŅийĐēĐ°", "There is no error, the file uploaded with success" => "ФаКĐģ ŅŅĐŋĐĩŅĐŊĐž СаĐŗŅŅĐļĐĩĐŊ", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ФаКĐģ ĐŋŅĐĩвŅŅĐ°ĐĩŅ ŅаСĐŧĐĩŅ ŅŅŅĐ°ĐŊОвĐģĐĩĐŊĐŊŅĐš upload_max_filesize в php.ini:", @@ -7,6 +10,8 @@ "No file was uploaded" => "ФаКĐģ ĐŊĐĩ ĐąŅĐģ СаĐŗŅŅĐļĐĩĐŊ", "Missing a temporary folder" => "ĐĐĩвОСĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅи вŅĐĩĐŧĐĩĐŊĐŊŅŅ ĐŋĐ°ĐŋĐēŅ", "Failed to write to disk" => "ĐŅийĐēĐ° СаĐŋиŅи ĐŊĐ° диŅĐē", +"Not enough space available" => "ĐĐĩĐ´ĐžŅŅĐ°ŅĐžŅĐŊĐž ŅвОйОдĐŊĐžĐŗĐž ĐŧĐĩŅŅĐ°", +"Invalid directory." => "ĐĐĩĐŋŅавиĐģŅĐŊŅĐš ĐēĐ°ŅĐ°ĐģĐžĐŗ.", "Files" => "ФаКĐģŅ", "Unshare" => "ĐŅĐŧĐĩĐŊиŅŅ ĐŋŅĐąĐģиĐēĐ°ŅиŅ", "Delete" => "ĐŖĐ´Đ°ĐģиŅŅ", @@ -20,6 +25,8 @@ "replaced {new_name} with {old_name}" => "СаĐŧĐĩĐŊĐĩĐŊĐž {new_name} ĐŊĐ° {old_name}", "unshared {files}" => "ĐŊĐĩ ĐžĐŋŅĐąĐģиĐēОваĐŊĐŊŅĐĩ {files}", "deleted {files}" => "ŅĐ´Đ°ĐģĐĩĐŊĐŊŅĐĩ {files}", +"'.' is an invalid file name." => "'.' - ĐŊĐĩĐŋŅавиĐģŅĐŊĐžĐĩ иĐŧŅ ŅĐ°ĐšĐģĐ°.", +"File name cannot be empty." => "ĐĐŧŅ ŅĐ°ĐšĐģĐ° ĐŊĐĩ ĐŧĐžĐļĐĩŅ ĐąŅŅŅ ĐŋŅŅŅŅĐŧ.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ĐĐĩĐŋŅавиĐģŅĐŊĐžĐĩ иĐŧŅ, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' ĐŊĐĩĐ´ĐžĐŋŅŅŅиĐŧŅ.", "generating ZIP-file, it may take some time." => "ŅОСдаĐŊиĐĩ ZIP-ŅĐ°ĐšĐģĐ°, ŅŅĐž ĐŧĐžĐļĐĩŅ СаĐŊŅŅŅ ĐŊĐĩĐēĐžŅĐžŅĐžĐĩ вŅĐĩĐŧŅ.", "Unable to upload your file as it is a directory or has 0 bytes" => "ĐĐĩ ŅĐ´Đ°ĐĩŅŅŅ СаĐŗŅŅСиŅŅ ŅĐ°ĐšĐģ ŅаСĐŧĐĩŅĐžĐŧ 0 йаКŅ в ĐēĐ°ŅĐ°ĐģĐžĐŗ", @@ -31,6 +38,7 @@ "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' СаŅĐĩСĐĩŅвиŅОваĐŊĐž.", "{count} files scanned" => "{count} ŅĐ°ĐšĐģОв ĐŋŅĐžŅĐēĐ°ĐŊиŅОваĐŊĐž", "error while scanning" => "ĐžŅийĐēĐ° вО вŅĐĩĐŧŅ ŅĐ°ĐŊиŅОваĐŊиŅ", "Name" => "ĐаСваĐŊиĐĩ", diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php index 03ced5f0cbf..7f0f44baca9 100644 --- a/apps/files/l10n/zh_TW.php +++ b/apps/files/l10n/zh_TW.php @@ -1,9 +1,12 @@ <?php $TRANSLATIONS = array( -"No file was uploaded. Unknown error" => "æ˛ææĒæĄčĸĢä¸åŗ. æĒįĨįé¯čĒ¤.", +"Could not move %s - File with this name already exists" => "įĄæŗį§ģå %s - ååįæĒæĄåˇ˛įļåå¨", +"Could not move %s" => "įĄæŗį§ģå %s", +"Unable to rename file" => "įĄæŗéæ°åŊåæĒæĄ", +"No file was uploaded. Unknown error" => "æ˛ææĒæĄčĸĢä¸åŗãæĒįĨįé¯čĒ¤ã", "There is no error, the file uploaded with success" => "įĄé¯čĒ¤īŧæĒæĄä¸åŗæå", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ä¸åŗįæĒæĄå¤§å°čļ
é php.ini įļä¸ upload_max_filesize åæ¸įč¨åŽīŧ", -"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" => "éēå¤ąæĢåčŗæ夞", "Failed to write to disk" => "å¯Ģå
ĨįĄŦįĸå¤ąæ", @@ -20,12 +23,12 @@ "replaced {new_name}" => "åˇ˛åäģŖ {new_name}", "undo" => "垊å", "replaced {new_name} with {old_name}" => "äŊŋį¨ {new_name} åäģŖ {old_name}", -"unshared {files}" => "åæĸåäēĢ {files}", +"unshared {files}" => "åˇ˛åæļåäēĢ {files}", "deleted {files}" => "åˇ˛åĒé¤ {files}", "'.' is an invalid file name." => "'.' æ¯ä¸åæŗįæĒåã", "File name cannot be empty." => "æĒåä¸čŊįēįŠēã", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "æĒåä¸åæŗīŧä¸å
訹 '\\', '/', '<', '>', ':', '\"', '|', '?' å '*' ã", -"generating ZIP-file, it may take some time." => "įĸįåŖį¸ŽæĒ, åŽå¯čŊéčĻä¸æŽĩæé.", +"generating ZIP-file, it may take some time." => "įĸį ZIP åŖį¸ŽæĒīŧéå¯čŊéčĻä¸æŽĩæéã", "Unable to upload your file as it is a directory or has 0 bytes" => "įĄæŗä¸åŗæ¨įæĒæĄå įēåŽå¯čŊæ¯ä¸åįŽéææĒæĄå¤§å°įē0", "Upload Error" => "ä¸åŗįŧįé¯čĒ¤", "Close" => "éé", @@ -33,8 +36,8 @@ "1 file uploading" => "1 åæĒæĄæŖå¨ä¸åŗ", "{count} files uploading" => "{count} åæĒæĄæŖå¨ä¸åŗ", "Upload cancelled." => "ä¸åŗåæļ", -"File upload is in progress. Leaving the page now will cancel the upload." => "æĒæĄä¸åŗä¸. éĸéæ¤é éĸå°æåæļä¸åŗ.", -"URL cannot be empty." => "URLä¸čŊįēįŠēįŊ.", +"File upload is in progress. Leaving the page now will cancel the upload." => "æĒæĄä¸åŗä¸ãéĸéæ¤é éĸå°æåæļä¸åŗã", +"URL cannot be empty." => "URL ä¸čŊįēįŠēįŊ.", "Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "įĄæįčŗæ夞åį¨ąīŧ'Shared' įäŊŋį¨čĸĢ Owncloud äŋį", "{count} files scanned" => "{count} åæĒæĄåˇ˛ææ", "error while scanning" => "æææįŧįé¯čĒ¤", @@ -46,12 +49,12 @@ "1 file" => "1 åæĒæĄ", "{count} files" => "{count} åæĒæĄ", "File handling" => "æĒæĄčį", -"Maximum upload size" => "æ大ä¸åŗ厚é", -"max. possible: " => "æ大å
訹: ", -"Needed for multi-file and folder downloads." => "éå°å¤æĒæĄåįŽéä¸čŧæ¯åŋ
åĄĢį", +"Maximum upload size" => "æ大ä¸åŗæĒæĄå¤§å°", +"max. possible: " => "æ大å
訹īŧ", +"Needed for multi-file and folder downloads." => "éå°å¤æĒæĄåįŽéä¸čŧæ¯åŋ
åĄĢįã", "Enable ZIP-download" => "åį¨ Zip ä¸čŧ", "0 is unlimited" => "0äģŖ襨æ˛æéåļ", -"Maximum input size for ZIP files" => "éå°ZIPæĒæĄæ大čŧ¸å
Ĩ大å°", +"Maximum input size for ZIP files" => "éå° ZIP æĒæĄæ大čŧ¸å
Ĩ大å°", "Save" => "å˛å", "New" => "æ°åĸ", "Text file" => "æåæĒ", @@ -59,10 +62,10 @@ "From link" => "åžéŖįĩ", "Upload" => "ä¸åŗ", "Cancel upload" => "åæļä¸åŗ", -"Nothing in here. Upload something!" => "æ˛æäģģäŊæąčĨŋãčĢä¸åŗå
§åŽš!", +"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." => "äŊ čŠĻåä¸åŗįæĒæĄåˇ˛čļ
éäŧēæå¨įæ大厚ééåļãã", +"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_encryption/l10n/bn_BD.php b/apps/files_encryption/l10n/bn_BD.php new file mode 100644 index 00000000000..c8f041d7622 --- /dev/null +++ b/apps/files_encryption/l10n/bn_BD.php @@ -0,0 +1,6 @@ +<?php $TRANSLATIONS = array( +"Encryption" => "āĻ¸āĻāĻā§āĻ¤āĻžā§āĻ¨", +"Enable Encryption" => "āĻ¸āĻāĻā§āĻ¤āĻžā§āĻ¨ āĻ¸āĻā§āĻ°āĻŋā§ āĻāĻ°", +"None" => "āĻā§āĻ¨āĻāĻŋāĻ āĻ¨ā§", +"Exclude the following file types from encryption" => "āĻ¸āĻāĻā§āĻ¤āĻžā§āĻ¨ āĻĨā§āĻā§ āĻ¨āĻŋāĻŽā§āĻ¨ā§āĻā§āĻ¤ āĻ§āĻ°āĻŖāĻ¸āĻŽā§āĻš āĻŦāĻžāĻĻ āĻĻāĻžāĻ" +); diff --git a/apps/files_external/l10n/bn_BD.php b/apps/files_external/l10n/bn_BD.php index ad983b52e43..a4a2b23030b 100644 --- a/apps/files_external/l10n/bn_BD.php +++ b/apps/files_external/l10n/bn_BD.php @@ -1,6 +1,24 @@ <?php $TRANSLATIONS = array( -"Backend" => "āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ", -"Groups" => "āĻā§āĻˇā§āĻ ā§", -"Users" => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°āĻŋāĻŦā§āĻ¨ā§āĻĻ", -"Delete" => "āĻŽā§āĻā§ āĻĢā§āĻ˛" +"Access granted" => "āĻ
āĻ§āĻŋāĻāĻŽāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ˛ā§", +"Error configuring Dropbox storage" => "Dropbox āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž ", +"Grant access" => "āĻ
āĻ§āĻŋāĻāĻŽāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°", +"Fill out all required fields" => "āĻāĻŦāĻļā§āĻ¯āĻŋāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨", +"Please provide a valid Dropbox app key and secret." => "āĻĻā§āĻž āĻāĻ°ā§ āĻ¸āĻ āĻŋāĻ āĻāĻŦāĻ āĻŦā§āĻ§ Dropbox app key and secret āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĻ¨āĨ¤", +"Error configuring Google Drive storage" => "Google Drive āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž ", +"External Storage" => "āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°", +"Mount point" => "āĻŽāĻžāĻāĻ¨ā§āĻ āĻĒā§ā§āĻ¨ā§āĻ", +"Backend" => "āĻĒāĻļā§āĻāĻžāĻĻāĻĒāĻ", +"Configuration" => "āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻ¸āĻ¨", +"Options" => "āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻ¸āĻŽā§āĻš", +"Applicable" => "āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯", +"Add mount point" => "āĻŽāĻžāĻāĻ¨ā§āĻ āĻĒā§ā§āĻ¨ā§āĻ āĻ¯ā§āĻ āĻāĻ°", +"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 785dfcd2f1d..c3af434ee29 100644 --- a/apps/files_sharing/l10n/bn_BD.php +++ b/apps/files_sharing/l10n/bn_BD.php @@ -1,6 +1,9 @@ <?php $TRANSLATIONS = array( "Password" => "āĻā§āĻāĻļāĻŦā§āĻĻ", -"Submit" => "āĻĒāĻžāĻ āĻžāĻ", +"Submit" => "āĻāĻŽāĻž āĻĻāĻžāĻ", +"%s shared the folder %s with you" => "%s āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ %s āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻāĻŋ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻāĻ°ā§āĻā§āĻ¨", +"%s shared the file %s with you" => "%s āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ %s āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻāĻ°ā§āĻā§āĻ¨", "Download" => "āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ", -"web services under your control" => "āĻā§ā§āĻŦ āĻ¸ā§āĻŦāĻžāĻ¸āĻŽā§āĻš āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ¤ā§āĻ° āĻŽā§āĻ ā§ā§" +"No preview available for" => "āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻĒā§āĻ°āĻžāĻāĻŦā§āĻā§āĻˇāĻŖ āĻ¸ā§āĻ˛āĻ āĻ¨ā§", +"web services under your control" => "āĻā§ā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻāĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ¤ā§āĻ° āĻŽā§āĻ ā§ā§" ); diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index fef0ed8a8c2..487b9e79961 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -7,7 +7,7 @@ OC_App::loadApps(); // support will be removed in OC 5.0,a if (isset($_GET['token'])) { unset($_GET['file']); - $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1'); + $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ?', 1); $filepath = $qry->execute(array($_GET['token']))->fetchOne(); if(isset($filepath)) { $info = OC_FileCache_Cached::get($filepath, ''); @@ -16,7 +16,9 @@ if (isset($_GET['token'])) { } else { $_GET['file'] = $filepath; } - \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN); + \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0.' + .' Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', + \OCP\Util::WARN); } } @@ -27,7 +29,10 @@ function getID($path) { $path_parts = explode('/', $path, 5); $user = $path_parts[1]; $intPath = '/'.$path_parts[4]; - $query = \OC_DB::prepare('SELECT `item_source` FROM `*PREFIX*share` WHERE `uid_owner` = ? AND `file_target` = ? '); + $query = \OC_DB::prepare('SELECT `item_source`' + .' FROM `*PREFIX*share`' + .' WHERE `uid_owner` = ?' + .' AND `file_target` = ? '); $result = $query->execute(array($user, $intPath)); $row = $result->fetchRow(); $fileSource = $row['item_source']; @@ -69,7 +74,8 @@ if (isset($_GET['t'])) { //if this is a reshare check the file owner also exists if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) { - OCP\Util::writeLog('share', 'original file owner '.$fileOwner.' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR); + OCP\Util::writeLog('share', 'original file owner '.$fileOwner + .' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR); header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); $tmpl->printPage(); @@ -134,7 +140,8 @@ if ($linkItem) { // Check Password $forcePortable = (CRYPT_BLOWFISH != 1); $hasher = new PasswordHash(8, $forcePortable); - if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $linkItem['share_with']))) { + if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), + $linkItem['share_with']))) { $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); $tmpl->assign('URL', $url); $tmpl->assign('error', true); @@ -145,19 +152,25 @@ if ($linkItem) { $_SESSION['public_link_authenticated'] = $linkItem['id']; } } else { - OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'].' for share id '.$linkItem['id'], \OCP\Util::ERROR); + OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'] + .' for share id '.$linkItem['id'], \OCP\Util::ERROR); header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); $tmpl->printPage(); exit(); } - // Check if item id is set in session - } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) { - // Prompt for password - $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); - $tmpl->assign('URL', $url); - $tmpl->printPage(); - exit(); + + } else { + // Check if item id is set in session + if (!isset($_SESSION['public_link_authenticated']) + || $_SESSION['public_link_authenticated'] !== $linkItem['id'] + ) { + // Prompt for password + $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); + $tmpl->assign('URL', $url); + $tmpl->printPage(); + exit(); + } } } $basePath = substr($pathAndUser['path'], strlen('/'.$fileOwner.'/files')); @@ -203,7 +216,9 @@ if ($linkItem) { $getPath = ''; } // - $urlLinkIdentifiers= (isset($token)?'&t='.$token:'').(isset($_GET['dir'])?'&dir='.$_GET['dir']:'').(isset($_GET['file'])?'&file='.$_GET['file']:''); + $urlLinkIdentifiers= (isset($token)?'&t='.$token:'') + .(isset($_GET['dir'])?'&dir='.$_GET['dir']:'') + .(isset($_GET['file'])?'&file='.$_GET['file']:''); // Show file list if (OC_Filesystem::is_dir($path)) { OCP\Util::addStyle('files', 'files'); @@ -260,13 +275,16 @@ if ($linkItem) { $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); $tmpl->assign('folder', $folder->fetchPage(), false); $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') + .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); } else { // Show file preview if viewer is available if ($type == 'file') { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download'); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') + .$urlLinkIdentifiers.'&download'); } else { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); + $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') + .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); } } $tmpl->printPage(); diff --git a/apps/files_versions/ajax/expireAll.php b/apps/files_versions/ajax/expireAll.php deleted file mode 100644 index 5c95885ffbd..00000000000 --- a/apps/files_versions/ajax/expireAll.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * ownCloud - user_migrate - * - * @author Sam Tuke - * @copyright 2012 Sam Tuke samtuke@owncloud.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -// TODO: Allow admins to expire versions of any user -// TODO: Provide feedback as to how many versions were deleted - -// Check user and app status -OCP\JSON::checkLoggedIn(); -OCP\App::checkAppEnabled('files_versions'); -OCP\JSON::callCheck(); - -$versions = new OCA_Versions\Storage(); - -if( $versions->expireAll() ) { - - OCP\JSON::success(); - die(); - -} else { - - OCP\JSON::error(); - die(); - -}
\ No newline at end of file diff --git a/apps/files_versions/ajax/getVersions.php b/apps/files_versions/ajax/getVersions.php index 8476e5e8a51..600e69cf798 100644 --- a/apps/files_versions/ajax/getVersions.php +++ b/apps/files_versions/ajax/getVersions.php @@ -4,10 +4,9 @@ OCP\JSON::checkAppEnabled('files_versions'); $userDirectory = "/".OCP\USER::getUser()."/files"; $source = $_GET['source']; -if( OCA_Versions\Storage::isversioned( $source ) ) { +$count = 5; //show the newest revisions +if( ($versions = OCA_Versions\Storage::getVersions( $source, $count)) ) { - $count=5; //show the newest revisions - $versions = OCA_Versions\Storage::getVersions( $source, $count); $versionsFormatted = array(); foreach ( $versions AS $version ) { diff --git a/apps/files_versions/ajax/rollbackVersion.php b/apps/files_versions/ajax/rollbackVersion.php index f1b02eb4b92..f2c211d9c1e 100644 --- a/apps/files_versions/ajax/rollbackVersion.php +++ b/apps/files_versions/ajax/rollbackVersion.php @@ -8,10 +8,9 @@ $userDirectory = "/".OCP\USER::getUser()."/files"; $file = $_GET['file']; $revision=(int)$_GET['revision']; -if( OCA_Versions\Storage::isversioned( $file ) ) { - if(OCA_Versions\Storage::rollback( $file, $revision )) { - OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file ))); - }else{ - OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file ))); - } +if(OCA_Versions\Storage::rollback( $file, $revision )) { + OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file ))); +}else{ + OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file ))); } + diff --git a/apps/files_versions/history.php b/apps/files_versions/history.php index d4c278ebd85..6e27f43d576 100644 --- a/apps/files_versions/history.php +++ b/apps/files_versions/history.php @@ -52,10 +52,8 @@ if ( isset( $_GET['path'] ) ) { } // show the history only if there is something to show - if( OCA_Versions\Storage::isversioned( $path ) ) { - - $count = 999; //show the newest revisions - $versions = OCA_Versions\Storage::getVersions( $path, $count); + $count = 999; //show the newest revisions + if( ($versions = OCA_Versions\Storage::getVersions( $path, $count)) ) { $tmpl->assign( 'versions', array_reverse( $versions ) ); diff --git a/apps/files_versions/js/settings-personal.js b/apps/files_versions/js/settings-personal.js deleted file mode 100644 index 1e6b036fdab..00000000000 --- a/apps/files_versions/js/settings-personal.js +++ /dev/null @@ -1,39 +0,0 @@ -// TODO: allow the button to be clicked only once - -$( document ).ready(function(){ - // - $( '#expireAllBtn' ).click( - - function( event ) { - - // Prevent page from reloading - event.preventDefault(); - - // Show loading gif - $('.expireAllLoading').show(); - - $.getJSON( - OC.filePath('files_versions','ajax','expireAll.php'), - function(result){ - if (result.status == 'success') { - $('.expireAllLoading').hide(); - $('#expireAllBtn').html('Expiration successful'); - } else { - - // Cancel loading - $('#expireAllBtn').html('Expiration failed'); - - // Show Dialog - OC.dialogs.alert( - 'Something went wrong, your files may not have been expired', - 'An error has occurred', - function(){ - $('#expireAllBtn').html(t('files_versions', 'Expire all versions')+'<img style="display: none;" class="loading" src="'+OC.filePath('core','img','loading.gif')+'" />'); - } - ); - } - } - ); - } - ); -});
\ No newline at end of file diff --git a/apps/files_versions/l10n/bn_BD.php b/apps/files_versions/l10n/bn_BD.php index d44ea131313..88349342fa9 100644 --- a/apps/files_versions/l10n/bn_BD.php +++ b/apps/files_versions/l10n/bn_BD.php @@ -1,3 +1,8 @@ <?php $TRANSLATIONS = array( -"Enable" => "āĻ¸āĻā§āĻ°āĻŋā§" +"Expire all versions" => "āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ°ā§āĻ¸āĻ¨ āĻŽā§ā§āĻžāĻĻā§āĻ¤ā§āĻ¤ā§āĻ°ā§āĻŖ", +"History" => "āĻāĻ¤āĻŋāĻšāĻžāĻ¸", +"Versions" => "āĻāĻžāĻ°ā§āĻ¸āĻ¨", +"This will delete all existing backup versions of your files" => "āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻžāĻ-āĻāĻĒ āĻāĻžāĻ°ā§āĻ¸āĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻŦā§āĨ¤", +"Files Versioning" => "āĻĢāĻžāĻāĻ˛ āĻāĻžāĻ°ā§āĻ¸āĻ¨ āĻāĻ°āĻž", +"Enable" => "āĻ¸āĻā§āĻ°āĻŋā§ " ); diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index e897a81f7af..5fb9dc3c3c5 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -39,15 +39,15 @@ class Hooks { * cleanup the versions directory if the actual file gets deleted */ public static function remove_hook($params) { - $versions_fileview = \OCP\Files::getStorage('files_versions'); - $rel_path = $params['path']; - $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_path.'.v'; - if(Storage::isversioned($rel_path)) { - $versions = Storage::getVersions($rel_path); - foreach ($versions as $v) { - unlink($abs_path . $v['version']); - } - } + if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
+ $path = $params[\OC_Filesystem::signal_param_path];
+
+ if($path<>'') $versions->delete( $path );
+
+ }
} /** @@ -58,18 +58,16 @@ class Hooks { * of the stored versions along the actual file */ public static function rename_hook($params) { - $versions_fileview = \OCP\Files::getStorage('files_versions'); - $rel_oldpath = $params['oldpath']; - $abs_oldpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_oldpath.'.v'; - $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$params['newpath'].'.v'; - if(Storage::isversioned($rel_oldpath)) { - $info=pathinfo($abs_newpath); - if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true); - $versions = Storage::getVersions($rel_oldpath); - foreach ($versions as $v) { - rename($abs_oldpath.$v['version'], $abs_newpath.$v['version']); - } + if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
+ $oldpath = $params['oldpath']; + $newpath = $params['newpath'];
+
+ if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
+
} } - + } diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 0ccaaf1095d..f938a2dbe84 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -1,6 +1,7 @@ <?php /** * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org> + * 2013 Bjoern Schiessle <schiessle@owncloud.com> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. @@ -16,24 +17,23 @@ namespace OCA_Versions; class Storage { - - // config.php configuration: - // - files_versions - // - files_versionsfolder - // - files_versionsblacklist - // - files_versionsmaxfilesize - // - files_versionsinterval - // - files_versionmaxversions - // - // todo: - // - finish porting to OC_FilesystemView to enable network transparency - // - add transparent compression. first test if it´s worth it. - const DEFAULTENABLED=true; - const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp'; - const DEFAULTMAXFILESIZE=1048576; // 10MB - const DEFAULTMININTERVAL=60; // 1 min - const DEFAULTMAXVERSIONS=50; + const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota + + private static $max_versions_per_interval = array( + 1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec + 'step' => 2), + 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
+ 'step' => 10), + 3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute + 'step' => 60), + 4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour + 'step' => 3600), + 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
+ 'step' => 86400), + 6 => array('intervalEndsAfter' => -1, //until the end one version per week
+ 'step' => 604800), + ); private static function getUidAndFilename($filename) { @@ -72,40 +72,11 @@ class Storage { return false; } - // check filetype blacklist - $blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST)); - foreach($blacklist as $bl) { - $parts=explode('.', $filename); - $ext=end($parts); - if(strtolower($ext)==$bl) { - return false; - } - } // we should have a source file to work with if (!$files_view->file_exists($filename)) { return false; } - // check filesize - if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) { - return false; - } - - - // check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval) - if ($uid == \OCP\User::getUser()) { - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); - $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); - $matches=glob($versionsName.'.v*'); - sort($matches); - $parts=explode('.v', end($matches)); - if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) { - return false; - } - } - - // create all parent folders $info=pathinfo($filename); if(!file_exists($versionsFolderName.'/'.$info['dirname'])) { @@ -113,15 +84,64 @@ class Storage { } // store a new version of a file - $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time()); - + $result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); + if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
+ } + $versionsSize += $users_view->filesize('files'.$filename); + // expire old revisions if necessary - Storage::expire($filename); + $newSize = self::expire($filename, $versionsSize); + + if ( $newSize != $versionsSize ) { + \OCP\Config::setAppValue('files_versions', 'size', $versionsSize); + } } } /** + * Delete versions of a file + */ + public static function delete($filename) { + list($uid, $filename) = self::getUidAndFilename($filename);
+ $versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions'); +
+ $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
+ if( ($versions = self::getVersions($filename)) ) {
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
+ }
+ foreach ($versions as $v) {
+ unlink($abs_path . $v['version']);
+ $versionsSize -= $v['size'];
+ }
+ \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+ } + } + + /**
+ * rename versions of a file
+ */
+ public static function rename($oldpath, $newpath) {
+ list($uid, $oldpath) = self::getUidAndFilename($oldpath); + list($uidn, $newpath) = self::getUidAndFilename($newpath);
+ $versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions'); + $files_view = new \OC_FilesystemView('/'.$uid .'/files');
+
+ if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) { + $versions_view->rename($oldpath, $newpath); + } else if ( ($versions = Storage::getVersions($oldpath)) ) {
+ $info=pathinfo($abs_newpath);
+ if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
+ $versions = Storage::getVersions($oldpath);
+ foreach ($versions as $v) { + $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
+ }
+ }
+ } + + /** * rollback to an old version of a file. */ public static function rollback($filename, $revision) { @@ -130,44 +150,27 @@ class Storage { list($uid, $filename) = self::getUidAndFilename($filename); $users_view = new \OC_FilesystemView('/'.$uid); + //first create a new version + $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename); + if ( !$users_view->file_exists($version)) { + $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); + $versionCreated = true; + } + // rollback if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) { - + $users_view->touch('files'.$filename, $revision); + Storage::expire($filename); return true; - }else{ - - return false; - + }else if ( $versionCreated ) { + $users_view->unlink($version); } - } + return false; } - /** - * check if old versions of a file exist. - */ - public static function isversioned($filename) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - - $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); - - // check for old versions - $matches=glob($versionsName.'.v*'); - if(count($matches)>0) { - return true; - }else{ - return false; - } - }else{ - return(false); - } - } - - /** * @brief get a list of all available versions of a file in descending chronological order @@ -187,92 +190,232 @@ class Storage { sort( $matches ); - $i = 0; - - $files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files'); + $files_view = new \OC_FilesystemView('/'.$uid.'/files'); $local_file = $files_view->getLocalFile($filename); - foreach( $matches as $ma ) { - $i++; - $versions[$i]['cur'] = 0; + foreach( $matches as $ma ) { $parts = explode( '.v', $ma ); - $versions[$i]['version'] = ( end( $parts ) ); + $version = ( end( $parts ) ); + $key = $version.'#'.$filename; + $versions[$key]['cur'] = 0; + $versions[$key]['version'] = $version; + $versions[$key]['path'] = $filename;
+ $versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version); // if file with modified date exists, flag it in array as currently enabled version - ( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 ); + ( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$key]['fileMatch'] = 1 : $versions[$key]['fileMatch'] = 0 ); } $versions = array_reverse( $versions ); foreach( $versions as $key => $value ) { - // flag the first matched file in array (which will have latest modification date) as current version if ( $value['fileMatch'] ) { - $value['cur'] = 1; break; - } - } $versions = array_reverse( $versions ); // only show the newest commits if( $count != 0 and ( count( $versions )>$count ) ) { - $versions = array_slice( $versions, count( $versions ) - $count ); - } return( $versions ); - } else { - // if versioning isn't enabled then return an empty array return( array() ); - } } + /**
+ * @brief get the size of all stored versions from a given user
+ * @param $uid id from the user
+ * @return size of vesions
+ */
+ private static function calculateSize($uid) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+ $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
+
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+
+ $size = 0; +
+ foreach ($iterator as $path) {
+ if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
+ $relpath = substr($path, strlen($versionsRoot)-1); + $size += $versions_fileview->filesize($relpath);
+ }
+ } + + return $size;
+ }
+ } + /** - * @brief Erase a file's versions which exceed the set quota + * @brief returns all stored file versions from a given user + * @param $uid id to the user + * @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename */ - public static function expire($filename) { - if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - list($uid, $filename) = self::getUidAndFilename($filename); + private static function getAllVersions($uid) { + if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - - $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); - - // check for old versions - $matches = glob( $versionsName.'.v*' ); - - if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) { - - $numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ); - - // delete old versions of a file - $deleteItems = array_slice( $matches, 0, $numberToDelete ); - - foreach( $deleteItems as $de ) { - - unlink( $versionsName.'.v'.$de ); - + $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); + + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+ + $versions = array(); + + foreach ($iterator as $path) { + if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) { + $relpath = substr($path, strlen($versionsRoot)-1); + $versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]); } + }
+ + ksort($versions); + + $i = 0; + + $result = array(); + + foreach( $versions as $key => $value ) {
+ $i++; + $size = $versions_fileview->filesize($value['path']); + $filename = substr($value['path'], 0, -strlen($value['timestamp'])-2); +
+ $result['all'][$key]['version'] = $value['timestamp']; + $result['all'][$key]['path'] = $filename;
+ $result['all'][$key]['size'] = $size; + + $filename = substr($value['path'], 0, -strlen($value['timestamp'])-2); + $result['by_file'][$filename][$key]['version'] = $value['timestamp']; + $result['by_file'][$filename][$key]['path'] = $filename;
+ $result['by_file'][$filename][$key]['size'] = $size; +
} + + return $result; } } /** - * @brief Erase all old versions of all user files - * @return true/false + * @brief Erase a file's versions which exceed the set quota */ - public function expireAll() { - $view = \OCP\Files::getStorage('files_versions'); - return $view->deleteAll('', true); + private static function expire($filename, $versionsSize = null) { + if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + list($uid, $filename) = self::getUidAndFilename($filename); + $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); + + // get available disk space for user + $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota')); + if ( $quota == null ) { + $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); + } + if ( $quota == null ) { + $quota = \OC_Filesystem::free_space('/'); + } + + // make sure that we have the current size of the version history + if ( $versionsSize === null ) { + if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { + $versionsSize = self::calculateSize($uid); + } + } + + // calculate available space for version history
+ $rootInfo = \OC_FileCache::get('', '/'. $uid . '/files'); + $free = $quota-$rootInfo['size']; // remaining free space for user + if ( $free > 0 ) { + $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions + } else { + $availableSpace = $free-$versionsSize; + } + + // after every 1000s run reduce the number of all versions not only for the current file + $random = rand(0, 1000); + if ($random == 0) { + $result = Storage::getAllVersions($uid); + $versions_by_file = $result['by_file']; + $all_versions = $result['all']; + } else { + $all_versions = Storage::getVersions($filename); + $versions_by_file[$filename] = $all_versions; + } + + $time = time(); + + // it is possible to expire versions from more than one file + // iterate through all given files + foreach ($versions_by_file as $filename => $versions) { + $versions = array_reverse($versions); // newest version first + + $interval = 1; + $step = Storage::$max_versions_per_interval[$interval]['step']; + if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) { + $nextInterval = -1; + } else { + $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; + } + + $firstVersion = reset($versions); + $firstKey = key($versions); + $prevTimestamp = $firstVersion['version']; + $nextVersion = $firstVersion['version'] - $step; + $remaining_versions[$firstKey] = $firstVersion; + unset($versions[$firstKey]); + + foreach ($versions as $key => $version) { + $newInterval = true; + while ( $newInterval ) { + if ( $nextInterval == -1 || $version['version'] >= $nextInterval ) { + if ( $version['version'] > $nextVersion ) { + //distance between two version too small, delete version + $versions_fileview->unlink($version['path'].'.v'.$version['version']); + $availableSpace += $version['size']; + $versionsSize -= $version['size']; + unset($all_versions[$key]); // update array with all versions + } else { + $nextVersion = $version['version'] - $step; + } + $newInterval = false; // version checked so we can move to the next one + } else { // time to move on to the next interval + $interval++; + $step = Storage::$max_versions_per_interval[$interval]['step']; + $nextVersion = $prevTimestamp - $step; + if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) { + $nextInterval = -1; + } else {
+ $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; + } + $newInterval = true; // we changed the interval -> check same version with new interval + } + } + $prevTimestamp = $version['version']; + } + } + + // check if enough space is available after versions are rearranged. + // if not we delete the oldest versions until we meet the size limit for versions + $numOfVersions = count($all_versions); + $i = 0; + while ($availableSpace < 0) { + if ($i = $numOfVersions-2) break; // keep at least the last version + $versions_fileview->unlink($all_versions[$i]['path'].'.v'.$all_versions[$i]['version']); + $versionsSize -= $all_versions[$i]['size']; + $availableSpace += $all_versions[$i]['size']; + $i++; + } + + return $versionsSize; // finally return the new size of the version history + } + + return false; } } diff --git a/apps/files_versions/settings-personal.php b/apps/files_versions/settings-personal.php deleted file mode 100644 index 6555bc99c3e..00000000000 --- a/apps/files_versions/settings-personal.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -$tmpl = new OCP\Template( 'files_versions', 'settings-personal'); - -OCP\Util::addscript('files_versions', 'settings-personal'); - -return $tmpl->fetchPage(); diff --git a/apps/files_versions/templates/settings-personal.php b/apps/files_versions/templates/settings-personal.php deleted file mode 100644 index 2b313a07c88..00000000000 --- a/apps/files_versions/templates/settings-personal.php +++ /dev/null @@ -1,12 +0,0 @@ -<form id="versions"> - <fieldset class="personalblock"> - <legend> - <strong><?php echo $l->t('Versions'); ?></strong> - </legend> - <button id="expireAllBtn"> - <?php echo $l->t('Expire all versions'); ?> - <img style="display: none;" class="expireAllLoading" src="<?php echo OCP\Util::imagePath('core', 'loading.gif'); ?>" /> - </button> - <br /><em><?php echo $l->t('This will delete all existing backup versions of your files'); ?></em> - </fieldset> -</form> diff --git a/apps/user_ldap/l10n/bn_BD.php b/apps/user_ldap/l10n/bn_BD.php index eca40c171f8..094b20cad2d 100644 --- a/apps/user_ldap/l10n/bn_BD.php +++ b/apps/user_ldap/l10n/bn_BD.php @@ -1,4 +1,37 @@ <?php $TRANSLATIONS = array( +"Host" => "āĻšā§āĻ¸ā§āĻ", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "SSL āĻāĻŦāĻļā§āĻ¯āĻ āĻ¨āĻž āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻĒā§āĻ°āĻā§āĻāĻ˛āĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĨ¤ āĻāĻ°āĻĒāĻ° āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ āĻāĻāĻž āĻĻāĻŋā§ā§ ldaps://", +"Base DN" => "āĻāĻŋāĻ¤ā§āĻ¤āĻŋ DN", +"You can specify Base DN for users and groups in the Advanced tab" => "āĻ¸ā§āĻāĻžāĻ°ā§ āĻā§āĻ¯āĻ
āĻŦā§ āĻāĻŋā§ā§ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻˇā§āĻ ā§āĻ¸āĻŽā§āĻšā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ DN āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤", +"User DN" => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°āĻŋ DN", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. āĻĒāĻ°āĻŋāĻā§ āĻā§āĻĒāĻ¨ āĻ°ā§āĻā§ āĻ
āĻ§āĻŋāĻāĻŽāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ DN āĻāĻŦāĻ āĻā§āĻāĻļāĻŦā§āĻĻāĻāĻŋ āĻĢāĻžāĻāĻāĻž āĻ°āĻžāĻā§āĻ¨āĨ¤", "Password" => "āĻā§āĻāĻļāĻŦā§āĻĻ", +"For anonymous access, leave DN and Password empty." => "āĻ
āĻā§āĻāĻžāĻ¤āĻā§āĻ˛āĻļā§āĻ˛ āĻ
āĻ§āĻŋāĻāĻŽāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ DN āĻāĻŦāĻ āĻā§āĻāĻļāĻŦā§āĻĻāĻāĻŋ āĻĢāĻžāĻāĻāĻž āĻ°āĻžāĻā§āĻ¨āĨ¤", +"User Login Filter" => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻžāĻāĻāĻ¨ā§", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽā§ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻžāĻāĻāĻ¨ā§āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦā§āĨ¤ āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻ¸āĻŽā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¨āĻžāĻŽāĻāĻŋ %%uid āĻĻāĻŋā§ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻŦā§āĨ¤", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "%%uid āĻ¸ā§āĻĨāĻžāĻ¨āĻ§āĻžāĻ°āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ \"uid=%%uid\"", +"User List Filter" => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻžāĻāĻāĻ¨ā§", +"Defines the filter to apply, when retrieving users." => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽā§ āĻĒā§āĻ°ā§ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻāĻāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦā§āĨ¤", +"without any placeholder, e.g. \"objectClass=person\"." => "āĻā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨āĻ§āĻžāĻ°āĻ āĻŦā§āĻ¯āĻ¤ā§āĻ¤, āĻ¯ā§āĻŽāĻ¨āĻ \"objectClass=person\"āĨ¤", +"Group Filter" => "āĻā§āĻˇā§āĻ ā§ āĻāĻžāĻāĻāĻ¨ā§", +"Defines the filter to apply, when retrieving groups." => "āĻā§āĻˇā§āĻ ā§āĻ¸āĻŽā§āĻš āĻāĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽā§ āĻĒā§āĻ°ā§ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻāĻāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦā§āĨ¤", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "āĻā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨ āĻ§āĻžāĻ°āĻ āĻŦā§āĻ¯āĻ¤ā§āĻ¤, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ\"objectClass=posixGroup\"āĨ¤", +"Port" => "āĻĒā§āĻ°ā§āĻ", +"Base User Tree" => "āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°āĻŋ āĻŦā§āĻā§āĻˇāĻžāĻāĻžāĻ°ā§", +"Base Group Tree" => "āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻā§āĻˇā§āĻ ā§ āĻŦā§āĻā§āĻˇāĻžāĻāĻžāĻ°ā§", +"Group-Member association" => "āĻā§āĻˇā§āĻ ā§-āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻĒāĻ¨", +"Use TLS" => "TLS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°", +"Do not use it for SSL connections, it will fail." => "SSL āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž, āĻ¤āĻžāĻšāĻ˛ā§ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻŦā§āĻ¨āĻāĨ¤", +"Case insensitve LDAP server (Windows)" => "āĻŦāĻ°ā§āĻŖ āĻ
āĻ¸āĻāĻŦā§āĻĻā§ LDAP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° (āĻāĻāĻ¨ā§āĻĄā§āĻ)", +"Turn off SSL certificate validation." => "SSL āĻ¸āĻ¨āĻĻāĻĒāĻ¤ā§āĻ° āĻ¯āĻžāĻāĻžāĻāĻāĻ°āĻŖ āĻŦāĻ¨ā§āĻ§ āĻ°āĻžāĻāĨ¤", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻĻāĻŋ āĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻšā§ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° ownCloud āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ LDAP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° SSL āĻ¸āĻ¨āĻĻāĻĒāĻ¤ā§āĻ°āĻāĻŋ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°ā§āĻ¨āĨ¤", +"Not recommended, use for testing only." => "āĻ
āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ¨ā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤", +"User Display Name Field" => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤āĻŦā§āĻ¯ āĻ¨āĻžāĻŽā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°", +"The LDAP attribute to use to generate the user`s ownCloud name." => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° ownCloud āĻ¨āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻāĻšā§āĻ¤ LDAP āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĨ¤", +"Group Display Name Field" => "āĻā§āĻˇā§āĻ ā§āĻ° āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤āĻŦā§āĻ¯ āĻ¨āĻžāĻŽā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "āĻā§āĻˇā§āĻ ā§āĻ° ownCloud āĻ¨āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻāĻšā§āĻ¤ LDAP āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĨ¤", +"in bytes" => "āĻŦāĻžāĻāĻā§", +"in seconds. A change empties the cache." => "āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§āĨ¤ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻā§āĻ¯āĻžāĻ¸ā§ āĻāĻžāĻ˛āĻŋ āĻāĻ°āĻŦā§āĨ¤", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¨āĻžāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻāĻž āĻ°āĻžāĻā§āĻ¨ (āĻĒā§āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤)āĨ¤ āĻ
āĻ¨ā§āĻ¯āĻĨāĻžā§, LDAP/AD āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§āĻ¨āĨ¤", "Help" => "āĻ¸āĻšāĻžā§āĻŋāĻāĻž" ); diff --git a/apps/user_ldap/l10n/he.php b/apps/user_ldap/l10n/he.php new file mode 100644 index 00000000000..d33ecaadf05 --- /dev/null +++ b/apps/user_ldap/l10n/he.php @@ -0,0 +1,12 @@ +<?php $TRANSLATIONS = array( +"Host" => "××ר×", +"User DN" => "DN ×׊×Ē×׊", +"Password" => "ץ×ץ××", +"For anonymous access, leave DN and Password empty." => "××××Š× ×× ×× ××××Ē, ×׊×ר ××Ē ×DM ××ץ×ץ×× ×¨×ק××.", +"User Login Filter" => "×Ą× × ×× ×ץ×Ē ×׊×Ē×׊", +"User List Filter" => "×Ą× × ×¨×Š×××Ē ×׊×Ē×׊××", +"Group Filter" => "×Ą× × ×§×××Ļ×", +"in bytes" => "×××Ē××", +"in seconds. A change empties the cache." => "××Š× ×××Ē. ׊×× ×× ×ר××§× ××Ē ××××××.", +"Help" => "×ĸ×ר×" +); diff --git a/apps/user_webdavauth/l10n/bn_BD.php b/apps/user_webdavauth/l10n/bn_BD.php new file mode 100644 index 00000000000..773e7f7eb76 --- /dev/null +++ b/apps/user_webdavauth/l10n/bn_BD.php @@ -0,0 +1,4 @@ +<?php $TRANSLATIONS = array( +"URL: http://" => "URL:http://", +"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." +); diff --git a/apps/user_webdavauth/l10n/fr.php b/apps/user_webdavauth/l10n/fr.php index 238c8d3a2fb..557a22e6c82 100644 --- a/apps/user_webdavauth/l10n/fr.php +++ b/apps/user_webdavauth/l10n/fr.php @@ -1,4 +1,4 @@ <?php $TRANSLATIONS = array( "URL: http://" => "URL : http://", -"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "Owncloud enverra les identifiants de sÊcuritÊ de l'utilisateur à cet URL et interprète les http 401 et 403 comme des erreurs d'identification et tous les autres codes seront considÊrÊs comme une identification valide." +"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "ownCloud " ); |