diff options
author | Robin Appelman <icewind@owncloud.com> | 2014-01-09 13:54:58 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2014-01-09 13:54:58 +0100 |
commit | 5d456c7cc21f7640435c4638932984a52b4cdbac (patch) | |
tree | 0227a865782fab4895f602a7c118d92e21998cbb | |
parent | d50c7391d8e78c9555b073fb9ccc6a91d5da34bc (diff) | |
parent | d8b8abb429d3d66598a16d25cf55f7dc19e3f996 (diff) | |
download | nextcloud-server-5d456c7cc21f7640435c4638932984a52b4cdbac.tar.gz nextcloud-server-5d456c7cc21f7640435c4638932984a52b4cdbac.zip |
Merge branch 'master' into memcache-public
96 files changed, 4265 insertions, 338 deletions
diff --git a/.htaccess b/.htaccess index 08e2a82facb..fa6263c7ffe 100755 --- a/.htaccess +++ b/.htaccess @@ -38,3 +38,6 @@ DirectoryIndex index.php index.html </IfModule> AddDefaultCharset utf-8 Options -Indexes +<IfModule pagespeed_module> + ModPagespeed Off +</IfModule> diff --git a/3rdparty b/3rdparty -Subproject 42efd966284debadf83b761367e529bc45f806d +Subproject 95ab25149c4903650a1113c01ccb1732fb089f1 diff --git a/apps/files/download.php b/apps/files/download.php index e3fe24e45d7..6b055e99a53 100644 --- a/apps/files/download.php +++ b/apps/files/download.php @@ -37,12 +37,7 @@ if(!\OC\Files\Filesystem::file_exists($filename)) { $ftype=\OC\Files\Filesystem::getMimeType( $filename ); header('Content-Type:'.$ftype); -if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { - header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' ); -} else { - header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) ) - . '; filename="' . rawurlencode( basename($filename) ) . '"' ); -} +OCP\Response::setContentDispositionHeader(basename($filename), 'attachment'); OCP\Response::disableCaching(); header('Content-Length: '.\OC\Files\Filesystem::filesize($filename)); diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index 98f74e1f001..fd031527738 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -6,6 +6,7 @@ $TRANSLATIONS = array( "File name must not contain \"/\". Please choose a different name." => "Faili nimi ei tohi sisaldada \"/\". Palun vali mõni teine nimi.", "The name %s is already used in the folder %s. Please choose a different name." => "Nimi %s on juba kasutusel kataloogis %s. Palun vali mõni teine nimi.", "Not a valid source" => "Pole korrektne lähteallikas", +"Server is not allowed to open URLs, please check the server configuration" => "Server ei võimalda URL-ide avamist, palun kontrolli serveri seadistust", "Error while downloading %s to %s" => "Viga %s allalaadimisel %s", "Error when creating the file" => "Viga faili loomisel", "Folder name cannot be empty." => "Kataloogi nimi ei saa olla tühi.", @@ -36,6 +37,7 @@ $TRANSLATIONS = array( "{new_name} already exists" => "{new_name} on juba olemas", "Could not create file" => "Ei suuda luua faili", "Could not create folder" => "Ei suuda luua kataloogi", +"Error fetching URL" => "Viga URL-i haaramisel", "Share" => "Jaga", "Delete permanently" => "Kustuta jäädavalt", "Rename" => "Nimeta ümber", diff --git a/apps/files/l10n/ur.php b/apps/files/l10n/ur.php new file mode 100644 index 00000000000..0157af093e9 --- /dev/null +++ b/apps/files/l10n/ur.php @@ -0,0 +1,7 @@ +<?php +$TRANSLATIONS = array( +"_%n folder_::_%n folders_" => array("",""), +"_%n file_::_%n files_" => array("",""), +"_Uploading %n file_::_Uploading %n files_" => array("","") +); +$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/apps/files_encryption/l10n/id.php b/apps/files_encryption/l10n/id.php index 32c348bd8ba..a719d445820 100644 --- a/apps/files_encryption/l10n/id.php +++ b/apps/files_encryption/l10n/id.php @@ -1,6 +1,41 @@ <?php $TRANSLATIONS = array( +"Recovery key successfully enabled" => "Kunci pemulihan berhasil diaktifkan", +"Could not enable recovery key. Please check your recovery key password!" => "Tidak dapat mengaktifkan kunci pemulihan. Silakan periksa sandi kunci pemulihan Anda!", +"Recovery key successfully disabled" => "Kunci pemulihan berhasil dinonaktifkan", +"Could not disable recovery key. Please check your recovery key password!" => "Tidak dapat menonaktifkan kunci pemulihan. Silakan periksa sandi kunci pemulihan Anda!", +"Password successfully changed." => "Sandi berhasil diubah", +"Could not change the password. Maybe the old password was not correct." => "Tidak dapat mengubah sandi. Kemungkinan sandi lama yang dimasukkan salah.", +"Private key password successfully updated." => "Sandi kunci privat berhasil diperbarui.", +"Could not update the private key password. Maybe the old password was not correct." => "Tidak dapat memperbarui sandi kunci privat. Kemungkinan sandi lama yang Anda masukkan salah.", +"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." => "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.", +"Unknown error please check your system settings or contact your administrator" => "Kesalahan tak dikenal, silakan periksa pengaturan sistem Anda atau hubungi admin.", +"Missing requirements." => "Persyaratan yang hilang.", +"Following users are not set up for encryption:" => "Pengguna berikut belum diatur untuk enkripsi:", +"Initial encryption started... This can take some time. Please wait." => "Inisial enskripsi dijalankan... Ini dapat memakan waktu. Silakan tunggu.", "Saving..." => "Menyimpan...", -"Encryption" => "Enkripsi" +"Go directly to your " => "Langsung ke anda", +"personal settings" => "pengaturan pribadi", +"Encryption" => "Enkripsi", +"Enable recovery key (allow to recover users files in case of password loss):" => "Aktifkan kunci pemulihan (memungkinkan pengguna untuk memulihkan berkas dalam kasus kehilangan sandi):", +"Recovery key password" => "Sandi kunci pemulihan", +"Repeat Recovery key password" => "Ulangi sandi kunci Pemulihan", +"Enabled" => "Diaktifkan", +"Disabled" => "Dinonaktifkan", +"Change recovery key password:" => "Ubah sandi kunci pemulihan:", +"Old Recovery key password" => "Sandi kunci Pemulihan Lama", +"New Recovery key password" => "Sandi kunci Pemulihan Baru", +"Repeat New Recovery key password" => "Ulangi sandi kunci Pemulihan baru", +"Change Password" => "Ubah sandi", +"Your private key password no longer match your log-in password:" => "Sandi kunci privat Anda tidak lagi cocok dengan sandi masuk:", +"Set your old private key password to your current log-in password." => "Atur sandi kunci privat lama Anda sebagai sandi masuk Anda saat ini.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Jika Anda tidak ingat sandi lama, Anda dapat meminta administrator Anda untuk memulihkan berkas.", +"Old log-in password" => "Sandi masuk yang lama", +"Current log-in password" => "Sandi masuk saat ini", +"Update Private Key Password" => "Perbarui Sandi Kunci Privat", +"Enable password recovery:" => "Aktifkan sandi pemulihan:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi", +"File recovery settings updated" => "Pengaturan pemulihan berkas diperbarui", +"Could not update file recovery" => "Tidak dapat memperbarui pemulihan berkas" ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index f78f3abf0fa..5b1cd86a170 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -9,6 +9,7 @@ OC::$CLASSPATH['OC\Files\Storage\StreamWrapper'] = 'files_external/lib/streamwrapper.php'; OC::$CLASSPATH['OC\Files\Storage\FTP'] = 'files_external/lib/ftp.php'; OC::$CLASSPATH['OC\Files\Storage\DAV'] = 'files_external/lib/webdav.php'; +OC::$CLASSPATH['OC\Files\Storage\OwnCloud'] = 'files_external/lib/owncloud.php'; OC::$CLASSPATH['OC\Files\Storage\Google'] = 'files_external/lib/google.php'; OC::$CLASSPATH['OC\Files\Storage\Swift'] = 'files_external/lib/swift.php'; OC::$CLASSPATH['OC\Files\Storage\SMB'] = 'files_external/lib/smb.php'; diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 122cc57debc..2abf7acb91e 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -114,14 +114,24 @@ class OC_Mount_Config { } } - if(OC_Mount_Config::checkcurl()) $backends['\OC\Files\Storage\DAV']=array( - 'backend' => 'ownCloud / WebDAV', - 'configuration' => array( - 'host' => 'URL', - 'user' => 'Username', - 'password' => '*Password', - 'root' => '&Root', - 'secure' => '!Secure https://')); + if(OC_Mount_Config::checkcurl()){ + $backends['\OC\Files\Storage\DAV']=array( + 'backend' => 'WebDAV', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'root' => '&Root', + 'secure' => '!Secure https://')); + $backends['\OC\Files\Storage\OwnCloud']=array( + 'backend' => 'ownCloud', + 'configuration' => array( + 'host' => 'URL', + 'user' => 'Username', + 'password' => '*Password', + 'root' => '&Remote subfolder', + 'secure' => '!Secure https://')); + } $backends['\OC\Files\Storage\SFTP']=array( 'backend' => 'SFTP', diff --git a/apps/files_external/lib/owncloud.php b/apps/files_external/lib/owncloud.php new file mode 100644 index 00000000000..98314102a64 --- /dev/null +++ b/apps/files_external/lib/owncloud.php @@ -0,0 +1,51 @@ +<?php +/** + * Copyright (c) 2013 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Storage; + +/** + * ownCloud backend for external storage based on DAV backend. + * + * The ownCloud URL consists of three parts: + * http://%host/%context/remote.php/webdav/%root + * + */ +class OwnCloud extends \OC\Files\Storage\DAV{ + const OC_URL_SUFFIX = 'remote.php/webdav'; + + public function __construct($params) { + // extract context path from host if specified + // (owncloud install path on host) + $host = $params['host']; + $contextPath = ''; + $hostSlashPos = strpos($host, '/'); + if ($hostSlashPos !== false){ + $contextPath = substr($host, $hostSlashPos); + $host = substr($host, 0, $hostSlashPos); + } + + if (substr($contextPath , 1) !== '/'){ + $contextPath .= '/'; + } + + if (isset($params['root'])){ + $root = $params['root']; + if (substr($root, 1) !== '/'){ + $root = '/' . $root; + } + } + else{ + $root = '/'; + } + + $params['host'] = $host; + $params['root'] = $contextPath . self::OC_URL_SUFFIX . $root; + + parent::__construct($params); + } +} diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php index 02f6cb5fc4f..cc7f3a5c9e2 100644 --- a/apps/files_external/lib/webdav.php +++ b/apps/files_external/lib/webdav.php @@ -79,7 +79,7 @@ class DAV extends \OC\Files\Storage\Common{ return 'webdav::' . $this->user . '@' . $this->host . '/' . $this->root; } - private function createBaseUri() { + protected function createBaseUri() { $baseUri='http'; if ($this->secure) { $baseUri.='s'; diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index a523809e2f9..e296bfcb5b2 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -23,6 +23,13 @@ return array( 'password'=>'test', 'root'=>'/owncloud/files/webdav.php', ), + 'owncloud'=>array( + 'run'=>true, + 'host'=>'localhost/owncloud', + 'user'=>'test', + 'password'=>'test', + 'root'=>'', + ), 'google'=>array( 'run'=> false, 'configured' => 'true', diff --git a/apps/files_external/tests/owncloud.php b/apps/files_external/tests/owncloud.php new file mode 100644 index 00000000000..408a55864f2 --- /dev/null +++ b/apps/files_external/tests/owncloud.php @@ -0,0 +1,31 @@ +<?php +/** + * Copyright (c) 2013 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Storage; + +class OwnCloud extends Storage { + + private $config; + + public function setUp() { + $id = uniqid(); + $this->config = include('files_external/tests/config.php'); + if ( ! is_array($this->config) or ! isset($this->config['owncloud']) or ! $this->config['owncloud']['run']) { + $this->markTestSkipped('ownCloud backend not configured'); + } + $this->config['owncloud']['root'] .= '/' . $id; //make sure we have an new empty folder to work in + $this->instance = new \OC\Files\Storage\OwnCloud($this->config['owncloud']); + $this->instance->mkdir('/'); + } + + public function tearDown() { + if ($this->instance) { + $this->instance->rmdir('/'); + } + } +} diff --git a/apps/files_sharing/l10n/el.php b/apps/files_sharing/l10n/el.php index 79387a91472..3ea666504b1 100644 --- a/apps/files_sharing/l10n/el.php +++ b/apps/files_sharing/l10n/el.php @@ -1,19 +1,19 @@ <?php $TRANSLATIONS = array( "This share is password-protected" => "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό", -"The password is wrong. Try again." => "Εσφαλμένο συνθηματικό. Προσπαθήστε ξανά.", -"Password" => "Συνθηματικό", +"The password is wrong. Try again." => "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά.", +"Password" => "Κωδικός πρόσβασης", "Sorry, this link doesn’t seem to work anymore." => "Συγγνώμη, αυτός ο σύνδεσμος μοιάζει να μην ισχύει πια.", "Reasons might be:" => "Οι λόγοι μπορεί να είναι:", "the item was removed" => "το αντικείμενο απομακρύνθηκε", "the link expired" => "ο σύνδεσμος έληξε", "sharing is disabled" => "ο διαμοιρασμός απενεργοποιήθηκε", "For more info, please ask the person who sent this link." => "Για περισσότερες πληροφορίες, παρακαλώ ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.", -"%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" => "Λήψη", "Upload" => "Μεταφόρτωση", -"Cancel upload" => "Ακύρωση αποστολής", +"Cancel upload" => "Ακύρωση μεταφόρτωσης", "No preview available for" => "Δεν υπάρχει διαθέσιμη προεπισκόπηση για", "Direct link" => "Άμεσος σύνδεσμος" ); diff --git a/apps/files_sharing/l10n/id.php b/apps/files_sharing/l10n/id.php index e91ef94bf38..865a951c2d2 100644 --- a/apps/files_sharing/l10n/id.php +++ b/apps/files_sharing/l10n/id.php @@ -1,11 +1,20 @@ <?php $TRANSLATIONS = array( +"This share is password-protected" => "Berbagi ini dilindungi sandi", +"The password is wrong. Try again." => "Sandi salah. Coba lagi", "Password" => "Sandi", +"Sorry, this link doesn’t seem to work anymore." => "Maaf, tautan ini tampaknya tidak berfungsi lagi.", +"Reasons might be:" => "Alasan mungkin:", +"the item was removed" => "item telah dihapus", +"the link expired" => "tautan telah kadaluarsa", +"sharing is disabled" => "berbagi dinonaktifkan", +"For more info, please ask the person who sent this link." => "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini.", "%s shared the folder %s with you" => "%s membagikan folder %s dengan Anda", -"%s shared the file %s with you" => "%s membagikan file %s dengan Anda", +"%s shared the file %s with you" => "%s membagikan berkas %s dengan Anda", "Download" => "Unduh", "Upload" => "Unggah", -"Cancel upload" => "Batal pengunggahan", -"No preview available for" => "Tidak ada pratinjau tersedia untuk" +"Cancel upload" => "Batal unggah", +"No preview available for" => "Tidak ada pratinjau yang tersedia untuk", +"Direct link" => "Tautan langsung" ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/apps/files_trashbin/download.php b/apps/files_trashbin/download.php deleted file mode 100644 index 60328e1dddb..00000000000 --- a/apps/files_trashbin/download.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -/** -* ownCloud - trash bin -* -* @author Bjoern Schiessle -* @copyright 2013 Bjoern Schiessle schiessle@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -// Check if we are a user -OCP\User::checkLoggedIn(); - -$filename = $_GET["file"]; - -$view = new OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin/files'); - -if(!$view->file_exists($filename)) { - header("HTTP/1.0 404 Not Found"); - $tmpl = new OCP\Template( '', '404', 'guest' ); - $tmpl->assign('file', $filename); - $tmpl->printPage(); - exit; -} - -$ftype=$view->getMimeType( $filename ); - -header('Content-Type:'.$ftype);if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { - header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' ); -} else { - header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) ) - . '; filename="' . rawurlencode( basename($filename) ) . '"' ); -} -OCP\Response::disableCaching(); -header('Content-Length: '. $view->filesize($filename)); - -OC_Util::obEnd(); -$view->readfile( $filename ); diff --git a/apps/files_trashbin/l10n/el.php b/apps/files_trashbin/l10n/el.php index ffeafb7e9d5..b4ee30c578d 100644 --- a/apps/files_trashbin/l10n/el.php +++ b/apps/files_trashbin/l10n/el.php @@ -3,11 +3,11 @@ $TRANSLATIONS = array( "Couldn't delete %s permanently" => "Αδύνατη η μόνιμη διαγραφή του %s", "Couldn't restore %s" => "Αδυναμία επαναφοράς %s", "Error" => "Σφάλμα", -"restored" => "έγινε επαναφορά", +"restored" => "επαναφέρθηκαν", "Nothing in here. Your trash bin is empty!" => "Δεν υπάρχει τίποτα εδώ. Ο κάδος σας είναι άδειος!", "Name" => "Όνομα", "Restore" => "Επαναφορά", -"Deleted" => "Διαγράφηκε", +"Deleted" => "Διαγραμμένα", "Delete" => "Διαγραφή", "Deleted Files" => "Διαγραμμένα Αρχεία" ); diff --git a/apps/files_versions/download.php b/apps/files_versions/download.php index 040a662e61b..2fe56d2e638 100644 --- a/apps/files_versions/download.php +++ b/apps/files_versions/download.php @@ -36,12 +36,7 @@ $view = new OC\Files\View('/'); $ftype = $view->getMimeType('/'.$uid.'/files/'.$filename); header('Content-Type:'.$ftype); -if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { - header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' ); -} else { - header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) ) - . '; filename="' . rawurlencode( basename($filename) ) . '"' ); -} +OCP\Response::setContentDispositionHeader(basename($filename), 'attachment'); OCP\Response::disableCaching(); header('Content-Length: '.$view->filesize($versionName)); diff --git a/apps/files_versions/l10n/el.php b/apps/files_versions/l10n/el.php index af608e7c042..5337f3b5a48 100644 --- a/apps/files_versions/l10n/el.php +++ b/apps/files_versions/l10n/el.php @@ -1,6 +1,6 @@ <?php $TRANSLATIONS = array( -"Could not revert: %s" => "Αδυναμία επαναφοράς του: %s", +"Could not revert: %s" => "Αδυναμία επαναφοράς: %s", "Versions" => "Εκδόσεις", "Failed to revert {file} to revision {timestamp}." => "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}.", "More versions..." => "Περισσότερες εκδόσεις...", diff --git a/apps/user_ldap/l10n/ur.php b/apps/user_ldap/l10n/ur.php new file mode 100644 index 00000000000..3a1e002311c --- /dev/null +++ b/apps/user_ldap/l10n/ur.php @@ -0,0 +1,6 @@ +<?php +$TRANSLATIONS = array( +"_%s group found_::_%s groups found_" => array("",""), +"_%s user found_::_%s users found_" => array("","") +); +$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index ecc74b6cf54..72f9c740921 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -634,6 +634,10 @@ class Access extends LDAPUtility { return $this->search($filter, $this->connection->ldapBaseUsers, $attr, $limit, $offset); } + public function countUsers($filter, $attr = array('dn'), $limit = null, $offset = null) { + return $this->count($filter, $this->connection->ldapBaseGroups, $attr, $limit, $offset); + } + /** * @brief executes an LDAP search, optimized for Groups * @param $filter the LDAP filter for the search @@ -647,61 +651,68 @@ class Access extends LDAPUtility { } /** - * @brief executes an LDAP search + * @brief prepares and executes an LDAP search operation * @param $filter the LDAP filter for the search * @param $base an array containing the LDAP subtree(s) that shall be searched * @param $attr optional, array, one or more attributes that shall be * retrieved. Results will according to the order in the array. - * @returns array with the search result - * - * Executes an LDAP search + * @param $limit optional, maximum results to be counted + * @param $offset optional, a starting point + * @returns array with the search result as first value and pagedSearchOK as + * second | false if not successful */ - private function search($filter, $base, $attr = null, $limit = null, $offset = null, $skipHandling = false) { + private function executeSearch($filter, $base, &$attr = null, $limit = null, $offset = null) { if(!is_null($attr) && !is_array($attr)) { $attr = array(mb_strtolower($attr, 'UTF-8')); } // See if we have a resource, in case not cancel with message - $link_resource = $this->connection->getConnectionResource(); - if(!$this->ldap->isResource($link_resource)) { + $cr = $this->connection->getConnectionResource(); + if(!$this->ldap->isResource($cr)) { // Seems like we didn't find any resource. // Return an empty array just like before. \OCP\Util::writeLog('user_ldap', 'Could not search, because resource is missing.', \OCP\Util::DEBUG); - return array(); + return false; } //check wether paged search should be attempted $pagedSearchOK = $this->initPagedSearch($filter, $base, $attr, $limit, $offset); - $linkResources = array_pad(array(), count($base), $link_resource); + $linkResources = array_pad(array(), count($base), $cr); $sr = $this->ldap->search($linkResources, $base, $filter, $attr); - $error = $this->ldap->errno($link_resource); + $error = $this->ldap->errno($cr); if(!is_array($sr) || $error !== 0) { \OCP\Util::writeLog('user_ldap', - 'Error when searching: '.$this->ldap->error($link_resource). - ' code '.$this->ldap->errno($link_resource), + 'Error when searching: '.$this->ldap->error($cr). + ' code '.$this->ldap->errno($cr), \OCP\Util::ERROR); \OCP\Util::writeLog('user_ldap', 'Attempt for Paging? '.print_r($pagedSearchOK, true), \OCP\Util::ERROR); - return array(); + return false; } - // Do the server-side sorting - foreach(array_reverse($attr) as $sortAttr){ - foreach($sr as $searchResource) { - $this->ldap->sort($link_resource, $searchResource, $sortAttr); - } - } + return array($sr, $pagedSearchOK); + } - $findings = array(); - foreach($sr as $key => $res) { - $findings = array_merge($findings, $this->ldap->getEntries($link_resource, $res )); - } + /** + * @brief processes an LDAP paged search operation + * @param $sr the array containing the LDAP search resources + * @param $filter the LDAP filter for the search + * @param $base an array containing the LDAP subtree(s) that shall be searched + * @param $iFoundItems number of results in the search operation + * @param $limit maximum results to be counted + * @param $offset a starting point + * @param $pagedSearchOK whether a paged search has been executed + * @param $skipHandling required for paged search when cookies to + * prior results need to be gained + * @returns array with the search result as first value and pagedSearchOK as + * second | false if not successful + */ + private function processPagedSearchStatus($sr, $filter, $base, $iFoundItems, $limit, $offset, $pagedSearchOK, $skipHandling) { if($pagedSearchOK) { - \OCP\Util::writeLog('user_ldap', 'Paged search successful', \OCP\Util::INFO); + $cr = $this->connection->getConnectionResource(); foreach($sr as $key => $res) { $cookie = null; - if($this->ldap->controlPagedResultResponse($link_resource, $res, $cookie)) { - \OCP\Util::writeLog('user_ldap', 'Set paged search cookie', \OCP\Util::INFO); + if($this->ldap->controlPagedResultResponse($cr, $res, $cookie)) { $this->setPagedResultCookie($base[$key], $filter, $limit, $offset, $cookie); } } @@ -713,7 +724,7 @@ class Access extends LDAPUtility { // if count is bigger, then the server does not support // paged search. Instead, he did a normal search. We set a // flag here, so the callee knows how to deal with it. - if($findings['count'] <= $limit) { + if($iFoundItems <= $limit) { $this->pagedSearchedSuccessful = true; } } else { @@ -721,6 +732,86 @@ class Access extends LDAPUtility { \OCP\Util::writeLog('user_ldap', 'Paged search failed :(', \OCP\Util::INFO); } } + } + + /** + * @brief executes an LDAP search, but counts the results only + * @param $filter the LDAP filter for the search + * @param $base an array containing the LDAP subtree(s) that shall be searched + * @param $attr optional, array, one or more attributes that shall be + * retrieved. Results will according to the order in the array. + * @param $limit optional, maximum results to be counted + * @param $offset optional, a starting point + * @param $skipHandling indicates whether the pages search operation is + * completed + * @returns int | false if the search could not be initialized + * + */ + private function count($filter, $base, $attr = null, $limit = null, $offset = null, $skipHandling = false) { + \OCP\Util::writeLog('user_ldap', 'Count filter: '.print_r($filter, true), \OCP\Util::DEBUG); + $search = $this->executeSearch($filter, $base, $attr, $limit, $offset); + if($search === false) { + return false; + } + list($sr, $pagedSearchOK) = $search; + $cr = $this->connection->getConnectionResource(); + $counter = 0; + foreach($sr as $key => $res) { + $count = $this->ldap->countEntries($cr, $res); + if($count !== false) { + $counter += $count; + } + } + + $this->processPagedSearchStatus($sr, $filter, $base, $counter, $limit, + $offset, $pagedSearchOK, $skipHandling); + + return $counter; + } + + /** + * @brief executes an LDAP search + * @param $filter the LDAP filter for the search + * @param $base an array containing the LDAP subtree(s) that shall be searched + * @param $attr optional, array, one or more attributes that shall be + * retrieved. Results will according to the order in the array. + * @returns array with the search result + * + * Executes an LDAP search + */ + private function search($filter, $base, $attr = null, $limit = null, $offset = null, $skipHandling = false) { + $search = $this->executeSearch($filter, $base, $attr, $limit, $offset); + if($search === false) { + return array(); + } + list($sr, $pagedSearchOK) = $search; + $cr = $this->connection->getConnectionResource(); + + if($skipHandling) { + //i.e. result do not need to be fetched, we just need the cookie + //thus pass 1 or any other value as $iFoundItems because it is not + //used + $this->processPagedSearchStatus($sr, $filter, $base, 1, $limit, + $offset, $pagedSearchOK, + $skipHandling); + return; + } + + // Do the server-side sorting + foreach(array_reverse($attr) as $sortAttr){ + foreach($sr as $searchResource) { + $this->ldap->sort($cr, $searchResource, $sortAttr); + } + } + + $findings = array(); + foreach($sr as $key => $res) { + $findings = array_merge($findings, $this->ldap->getEntries($cr , $res )); + } + + $this->processPagedSearchStatus($sr, $filter, $base, $findings['count'], + $limit, $offset, $pagedSearchOK, + $skipHandling); // if we're here, probably no connection resource is returned. // to make ownCloud behave nicely, we simply give back an empty array. diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index 6b9b8b3e185..9193a005ae5 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -408,4 +408,58 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { //no test for getDisplayNames, because it just invokes getUsers and //getDisplayName + + public function testCountUsers() { + $access = $this->getAccessMock(); + + $access->connection->expects($this->once()) + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'ldapLoginFilter') { + return 'uid=%uid'; + } + return null; + })); + + $access->expects($this->once()) + ->method('countUsers') + ->will($this->returnCallback(function($filter, $a, $b, $c) { + if($filter !== 'uid=*') { + return false; + } + return 5; + })); + + $backend = new UserLDAP($access); + + $result = $backend->countUsers(); + $this->assertEquals(5, $result); + } + + public function testCountUsersFailing() { + $access = $this->getAccessMock(); + + $access->connection->expects($this->once()) + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'ldapLoginFilter') { + return 'invalidFilter'; + } + return null; + })); + + $access->expects($this->once()) + ->method('countUsers') + ->will($this->returnCallback(function($filter, $a, $b, $c) { + if($filter !== 'uid=*') { + return false; + } + return 5; + })); + + $backend = new UserLDAP($access); + + $result = $backend->countUsers(); + $this->assertFalse($result); + } }
\ No newline at end of file diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 527a5c10b85..a19af86086c 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -363,7 +363,8 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { return (bool)((OC_USER_BACKEND_CHECK_PASSWORD | OC_USER_BACKEND_GET_HOME | OC_USER_BACKEND_GET_DISPLAYNAME - | OC_USER_BACKEND_PROVIDE_AVATAR) + | OC_USER_BACKEND_PROVIDE_AVATAR + | OC_USER_BACKEND_COUNT_USERS) & $actions); } @@ -373,4 +374,16 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { public function hasUserListings() { return true; } + + /** + * counts the users in LDAP + * + * @return int | bool + */ + public function countUsers() { + $filter = \OCP\Util::mb_str_replace( + '%uid', '*', $this->access->connection->ldapLoginFilter, 'UTF-8'); + $entries = $this->access->countUsers($filter); + return $entries; + } } diff --git a/apps/user_ldap/user_proxy.php b/apps/user_ldap/user_proxy.php index b073b143e74..5ad127197f3 100644 --- a/apps/user_ldap/user_proxy.php +++ b/apps/user_ldap/user_proxy.php @@ -210,4 +210,19 @@ class User_Proxy extends lib\Proxy implements \OCP\UserInterface { return $this->refBackend->hasUserListings(); } + /** + * @brief Count the number of users + * @returns int | bool + */ + public function countUsers() { + $users = false; + foreach($this->backends as $backend) { + $backendUsers = $backend->countUsers(); + if ($backendUsers !== false) { + $users += $backendUsers; + } + } + return $users; + } + } diff --git a/autotest.sh b/autotest.sh index 3562b0feb04..94fc692a94d 100755 --- a/autotest.sh +++ b/autotest.sh @@ -13,6 +13,7 @@ ADMINLOGIN=admin$EXECUTOR_NUMBER BASEDIR=$PWD DBCONFIGS="sqlite mysql pgsql oci" +PHPUNIT=$(which phpunit) function print_syntax { echo -e "Syntax: ./autotest.sh [dbconfigname] [testfile]\n" >&2 @@ -23,6 +24,20 @@ function print_syntax { echo -e "\nIf no arguments are specified, all tests will be run with all database configs" >&2 } +if ! [ -x $PHPUNIT ]; then + echo "phpunit executable not found, please install phpunit version >= 3.7" >&2 + exit 3 +fi + +PHPUNIT_VERSION=$($PHPUNIT --version | cut -d" " -f2) +PHPUNIT_MAJOR_VERSION=$(echo $PHPUNIT_VERSION | cut -d"." -f1) +PHPUNIT_MINOR_VERSION=$(echo $PHPUNIT_VERSION | cut -d"." -f2) + +if ! [ $PHPUNIT_MAJOR_VERSION -gt 3 -o \( $PHPUNIT_MAJOR_VERSION -eq 3 -a $PHPUNIT_MINOR_VERSION -ge 7 \) ]; then + echo "phpunit version >= 3.7 required. Version found: $PHPUNIT_VERSION" >&2 + exit 4 +fi + if ! [ -w config -a -w config/config.php ]; then echo "Please enable write permissions on config and config/config.php" >&2 exit 1 @@ -179,10 +194,10 @@ EOF mkdir coverage-html-$1 php -f enable_all.php if [ -z "$NOCOVERAGE" ]; then - phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 $2 $3 + $PHPUNIT --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 $2 $3 else echo "No coverage" - phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml $2 $3 + $PHPUNIT --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml $2 $3 fi } diff --git a/core/command/user/report.php b/core/command/user/report.php new file mode 100644 index 00000000000..f95ba251bcc --- /dev/null +++ b/core/command/user/report.php @@ -0,0 +1,61 @@ +<?php +/** + * Copyright (c) 2014 Arthur Schiwon <blizzz@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Core\Command\User; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Helper\TableHelper; + +class Report extends Command { + protected function configure() { + $this + ->setName('user:report') + ->setDescription('shows how many users have access'); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $table = $this->getHelperSet()->get('table'); + $table->setHeaders(array('User Report', '')); + $userCountArray = $this->countUsers(); + if(!empty($userCountArray)) { + $total = 0; + $rows = array(); + foreach($userCountArray as $classname => $users) { + $total += $users; + $rows[] = array($classname, $users); + } + + $rows[] = array(' '); + $rows[] = array('total users', $total); + } else { + $rows[] = array('No backend enabled that supports user counting', ''); + } + + $userDirectoryCount = $this->countUserDirectories(); + $rows[] = array(' '); + $rows[] = array('user directories', $userDirectoryCount); + + $table->setRows($rows); + $table->render($output); + } + + private function countUsers() { + \OC_App::loadApps(array('authentication')); + $userManager = \OC::$server->getUserManager(); + return $userManager->countUsers(); + } + + private function countUserDirectories() { + $dataview = new \OC\Files\View('/'); + $userDirectories = $dataview->getDirectoryContent('/', 'httpd/unix-directory'); + return count($userDirectories); + } +}
\ No newline at end of file diff --git a/core/l10n/da.php b/core/l10n/da.php index 8aa68335458..9c7fdc889f8 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -153,7 +153,7 @@ $TRANSLATIONS = array( "Database tablespace" => "Database tabelplads", "Database host" => "Databasehost", "Finish setup" => "Afslut opsætning", -"Finishing …" => "Færdigbehandling ...", +"Finishing …" => "Færdigbehandler ...", "This application requires JavaScript to be enabled for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and re-load this interface." => "Programmet forudsætter at JavaScript er aktiveret for at kunne afvikles korrekt. <a href=\"http://enable-javascript.com/\" target=\"_blank\">Aktiver JavaScript</a> og genindlæs siden..", "%s is available. Get more information on how to update." => "%s er tilgængelig. Få mere information om, hvordan du opdaterer.", "Log out" => "Log ud", diff --git a/core/l10n/ur.php b/core/l10n/ur.php new file mode 100644 index 00000000000..ffcdde48d47 --- /dev/null +++ b/core/l10n/ur.php @@ -0,0 +1,9 @@ +<?php +$TRANSLATIONS = array( +"_%n minute ago_::_%n minutes ago_" => array("",""), +"_%n hour ago_::_%n hours ago_" => array("",""), +"_%n day ago_::_%n days ago_" => array("",""), +"_%n month ago_::_%n months ago_" => array("",""), +"_{count} file conflict_::_{count} file conflicts_" => array("","") +); +$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/core/register_command.php b/core/register_command.php index e4f3b124365..2efa838e9ee 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -15,3 +15,4 @@ $application->add(new OC\Core\Command\App\Disable()); $application->add(new OC\Core\Command\App\Enable()); $application->add(new OC\Core\Command\App\ListApps()); $application->add(new OC\Core\Command\Maintenance\Repair(new \OC\Repair())); +$application->add(new OC\Core\Command\User\Report()); diff --git a/core/routes.php b/core/routes.php index 5009243d59f..f8454877e03 100644 --- a/core/routes.php +++ b/core/routes.php @@ -7,6 +7,7 @@ */ // Post installation check +/** @var $this OC_Router */ $this->create('post_setup_check', '/post-setup-check') ->action('OC_Setup', 'postSetupCheck'); @@ -61,7 +62,7 @@ $this->create('core_tags_delete', '/tags/{type}/delete') ->action('OC\Core\Tags\Controller', 'deleteTags') ->requirements(array('type')); // oC JS config -$this->create('js_config', '/core/js/config.js') +$this->create('js_config', '/core/js/oc.js') ->actionInclude('core/js/config.php'); // Routing $this->create('core_ajax_routes', '/core/routes.json') diff --git a/l10n/da/core.po b/l10n/da/core.po index 95c55f74fe2..8ef32c0b7b6 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -7,15 +7,16 @@ # claus_chr <claus_chr@webspeed.dk>, 2013 # kaffeldt <kasper.affeldt@gmail.com>, 2013 # lodahl <leiflodahl@gmail.com>, 2013 +# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2014 # Ole Holm Frandsen <froksen@gmail.com>, 2013 # Peter Jespersen <flywheeldk@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-21 01:55-0500\n" -"PO-Revision-Date: 2013-12-20 21:40+0000\n" -"Last-Translator: lodahl <leiflodahl@gmail.com>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 08:50+0000\n" +"Last-Translator: Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -158,55 +159,55 @@ msgstr "December" msgid "Settings" msgstr "Indstillinger" -#: js/js.js:869 +#: js/js.js:872 msgid "seconds ago" msgstr "sekunder siden" -#: js/js.js:870 +#: js/js.js:873 msgid "%n minute ago" msgid_plural "%n minutes ago" msgstr[0] "%n minut siden" msgstr[1] "%n minutter siden" -#: js/js.js:871 +#: js/js.js:874 msgid "%n hour ago" msgid_plural "%n hours ago" msgstr[0] "%n time siden" msgstr[1] "%n timer siden" -#: js/js.js:872 +#: js/js.js:875 msgid "today" msgstr "i dag" -#: js/js.js:873 +#: js/js.js:876 msgid "yesterday" msgstr "i går" -#: js/js.js:874 +#: js/js.js:877 msgid "%n day ago" msgid_plural "%n days ago" msgstr[0] "%n dag siden" msgstr[1] "%n dage siden" -#: js/js.js:875 +#: js/js.js:878 msgid "last month" msgstr "sidste måned" -#: js/js.js:876 +#: js/js.js:879 msgid "%n month ago" msgid_plural "%n months ago" msgstr[0] "%n måned siden" msgstr[1] "%n måneder siden" -#: js/js.js:877 +#: js/js.js:880 msgid "months ago" msgstr "måneder siden" -#: js/js.js:878 +#: js/js.js:881 msgid "last year" msgstr "sidste år" -#: js/js.js:879 +#: js/js.js:882 msgid "years ago" msgstr "år siden" @@ -685,7 +686,7 @@ msgstr "Afslut opsætning" #: templates/installation.php:185 msgid "Finishing …" -msgstr "Færdigbehandling ..." +msgstr "Færdigbehandler ..." #: templates/layout.user.php:40 msgid "" diff --git a/l10n/el/core.po b/l10n/el/core.po index b0f4b9ecc5c..b453459ddc9 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-04 01:55-0500\n" -"PO-Revision-Date: 2014-01-02 17:40+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 20:50+0000\n" "Last-Translator: vkehayas <vkehayas@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -161,55 +161,55 @@ msgstr "Δεκέμβριος" msgid "Settings" msgstr "Ρυθμίσεις" -#: js/js.js:869 +#: js/js.js:872 msgid "seconds ago" msgstr "δευτερόλεπτα πριν" -#: js/js.js:870 +#: js/js.js:873 msgid "%n minute ago" msgid_plural "%n minutes ago" msgstr[0] "%n λεπτό πριν" msgstr[1] "%n λεπτά πριν" -#: js/js.js:871 +#: js/js.js:874 msgid "%n hour ago" msgid_plural "%n hours ago" msgstr[0] "%n ώρα πριν" msgstr[1] "%n ώρες πριν" -#: js/js.js:872 +#: js/js.js:875 msgid "today" msgstr "σήμερα" -#: js/js.js:873 +#: js/js.js:876 msgid "yesterday" msgstr "χτες" -#: js/js.js:874 +#: js/js.js:877 msgid "%n day ago" msgid_plural "%n days ago" msgstr[0] "%n ημέρα πριν" msgstr[1] "%n ημέρες πριν" -#: js/js.js:875 +#: js/js.js:878 msgid "last month" msgstr "τελευταίο μήνα" -#: js/js.js:876 +#: js/js.js:879 msgid "%n month ago" msgid_plural "%n months ago" msgstr[0] "%n μήνας πριν" msgstr[1] "%n μήνες πριν" -#: js/js.js:877 +#: js/js.js:880 msgid "months ago" msgstr "μήνες πριν" -#: js/js.js:878 +#: js/js.js:881 msgid "last year" msgstr "τελευταίο χρόνο" -#: js/js.js:879 +#: js/js.js:882 msgid "years ago" msgstr "χρόνια πριν" diff --git a/l10n/el/files.po b/l10n/el/files.po index 1171a1f7284..84a38b5c6e9 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-31 01:55-0500\n" -"PO-Revision-Date: 2013-12-30 16:00+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 20:50+0000\n" "Last-Translator: vkehayas <vkehayas@gmail.com>\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 09221d38d5c..1c70dfb1d6d 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.po @@ -4,13 +4,13 @@ # # Translators: # Efstathios Iosifidis <iosifidis@opensuse.org>, 2013 -# vkehayas <vkehayas@gmail.com>, 2013 +# vkehayas <vkehayas@gmail.com>, 2013-2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-04 01:55-0500\n" -"PO-Revision-Date: 2014-01-02 17:40+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 21:00+0000\n" "Last-Translator: vkehayas <vkehayas@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -25,11 +25,11 @@ msgstr "Αυτός ο κοινόχρηστος φάκελος προστατεύ #: templates/authenticate.php:7 msgid "The password is wrong. Try again." -msgstr "Εσφαλμένο συνθηματικό. Προσπαθήστε ξανά." +msgstr "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά." #: templates/authenticate.php:10 msgid "Password" -msgstr "Συνθηματικό" +msgstr "Κωδικός πρόσβασης" #: templates/part.404.php:3 msgid "Sorry, this link doesn’t seem to work anymore." @@ -58,12 +58,12 @@ msgstr "Για περισσότερες πληροφορίες, παρακαλώ #: templates/public.php:18 #, php-format msgid "%s shared the folder %s with you" -msgstr "%s μοιράστηκε τον φάκελο %s μαζί σας" +msgstr "Ο %s μοιράστηκε τον φάκελο %s μαζί σας" #: templates/public.php:21 #, php-format msgid "%s shared the file %s with you" -msgstr "%s μοιράστηκε το αρχείο %s μαζί σας" +msgstr "Ο %s μοιράστηκε το αρχείο %s μαζί σας" #: templates/public.php:29 templates/public.php:95 msgid "Download" @@ -75,7 +75,7 @@ msgstr "Μεταφόρτωση" #: templates/public.php:59 msgid "Cancel upload" -msgstr "Ακύρωση αποστολής" +msgstr "Ακύρωση μεταφόρτωσης" #: templates/public.php:92 msgid "No preview available for" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index 57aa40f1486..0d05dc752d2 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -4,13 +4,14 @@ # # Translators: # Efstathios Iosifidis <iosifidis@opensuse.org>, 2013 +# vkehayas <vkehayas@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-11-21 10:01-0500\n" -"PO-Revision-Date: 2013-11-16 07:44+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 21:15+0000\n" +"Last-Translator: vkehayas <vkehayas@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,44 +19,44 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ajax/delete.php:42 +#: ajax/delete.php:63 #, php-format msgid "Couldn't delete %s permanently" msgstr "Αδύνατη η μόνιμη διαγραφή του %s" -#: ajax/undelete.php:42 +#: ajax/undelete.php:43 #, php-format msgid "Couldn't restore %s" msgstr "Αδυναμία επαναφοράς %s" -#: js/trash.js:18 js/trash.js:44 js/trash.js:121 js/trash.js:149 +#: js/trash.js:18 js/trash.js:45 js/trash.js:88 js/trash.js:142 msgid "Error" msgstr "Σφάλμα" -#: lib/trashbin.php:815 lib/trashbin.php:817 +#: lib/trashbin.php:905 lib/trashbin.php:907 msgid "restored" -msgstr "έγινε επαναφορά" +msgstr "επαναφέρθηκαν" -#: templates/index.php:8 +#: templates/index.php:7 msgid "Nothing in here. Your trash bin is empty!" msgstr "Δεν υπάρχει τίποτα εδώ. Ο κάδος σας είναι άδειος!" -#: templates/index.php:22 +#: templates/index.php:20 msgid "Name" msgstr "Όνομα" -#: templates/index.php:25 templates/index.php:27 +#: templates/index.php:23 templates/index.php:25 msgid "Restore" msgstr "Επαναφορά" -#: templates/index.php:33 +#: templates/index.php:31 msgid "Deleted" -msgstr "Διαγράφηκε" +msgstr "Διαγραμμένα" -#: templates/index.php:36 templates/index.php:37 +#: templates/index.php:34 templates/index.php:35 msgid "Delete" msgstr "Διαγραφή" -#: templates/part.breadcrumb.php:9 +#: templates/part.breadcrumb.php:8 msgid "Deleted Files" msgstr "Διαγραμμένα Αρχεία" diff --git a/l10n/el/files_versions.po b/l10n/el/files_versions.po index 69a93edf4e8..33ed352c925 100644 --- a/l10n/el/files_versions.po +++ b/l10n/el/files_versions.po @@ -4,13 +4,14 @@ # # Translators: # Efstathios Iosifidis <iosifidis@opensuse.org>, 2013 +# vkehayas <vkehayas@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-07 08:59-0400\n" -"PO-Revision-Date: 2013-08-06 07:40+0000\n" -"Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>\n" +"Report-Msgid-Bugs-To: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 21:15+0000\n" +"Last-Translator: vkehayas <vkehayas@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,24 +22,24 @@ msgstr "" #: ajax/rollbackVersion.php:13 #, php-format msgid "Could not revert: %s" -msgstr "Αδυναμία επαναφοράς του: %s" +msgstr "Αδυναμία επαναφοράς: %s" -#: js/versions.js:7 +#: js/versions.js:14 msgid "Versions" msgstr "Εκδόσεις" -#: js/versions.js:53 +#: js/versions.js:60 msgid "Failed to revert {file} to revision {timestamp}." msgstr "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}." -#: js/versions.js:79 +#: js/versions.js:86 msgid "More versions..." msgstr "Περισσότερες εκδόσεις..." -#: js/versions.js:116 +#: js/versions.js:123 msgid "No other versions available" msgstr "Δεν υπάρχουν άλλες εκδόσεις διαθέσιμες" -#: js/versions.js:149 +#: js/versions.js:154 msgid "Restore" msgstr "Επαναφορά" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index a899dcc3fc6..84b51f57097 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-04 01:55-0500\n" -"PO-Revision-Date: 2014-01-02 18:11+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 20:50+0000\n" "Last-Translator: vkehayas <vkehayas@gmail.com>\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 a7c6ef95f42..636f833c270 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/user_ldap.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-04 01:55-0500\n" -"PO-Revision-Date: 2014-01-02 18:11+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 20:50+0000\n" "Last-Translator: vkehayas <vkehayas@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index d7c7f5265de..e83960e36b8 100644 --- a/l10n/et_EE/files.po +++ b/l10n/et_EE/files.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# pisike.sipelgas <pisike.sipelgas@gmail.com>, 2013 +# pisike.sipelgas <pisike.sipelgas@gmail.com>, 2013-2014 # Rivo Zängov <eraser@eraser.ee>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-20 01:55-0500\n" -"PO-Revision-Date: 2013-12-20 06:23+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 07:20+0000\n" +"Last-Translator: pisike.sipelgas <pisike.sipelgas@gmail.com>\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" @@ -51,7 +51,7 @@ msgstr "Pole korrektne lähteallikas" #: ajax/newfile.php:86 msgid "" "Server is not allowed to open URLs, please check the server configuration" -msgstr "" +msgstr "Server ei võimalda URL-ide avamist, palun kontrolli serveri seadistust" #: ajax/newfile.php:103 #, php-format @@ -180,7 +180,7 @@ msgstr "Ei suuda luua kataloogi" #: js/file-upload.js:661 msgid "Error fetching URL" -msgstr "" +msgstr "Viga URL-i haaramisel" #: js/fileactions.js:125 msgid "Share" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 2bd2dbb16d4..c6057d1fd5f 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-20 01:55-0500\n" -"PO-Revision-Date: 2013-12-20 06:23+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 14:30+0000\n" "Last-Translator: Christophe Lherieau <skimpax@gmail.com>\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 c8c10e1bfe5..3dbac303a0a 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-11-15 22:54-0500\n" -"PO-Revision-Date: 2013-11-13 16:11+0000\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 14:30+0000\n" "Last-Translator: etiess <etiess@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index d102e4fe617..b3864906052 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: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-31 01:55-0500\n" -"PO-Revision-Date: 2013-12-31 03:40+0000\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 07:10+0000\n" "Last-Translator: arifpedia <arifpedia@gmail.com>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -152,51 +152,51 @@ msgstr "Desember" msgid "Settings" msgstr "Pengaturan" -#: js/js.js:869 +#: js/js.js:872 msgid "seconds ago" msgstr "beberapa detik yang lalu" -#: js/js.js:870 +#: js/js.js:873 msgid "%n minute ago" msgid_plural "%n minutes ago" msgstr[0] "%n menit yang lalu" -#: js/js.js:871 +#: js/js.js:874 msgid "%n hour ago" msgid_plural "%n hours ago" msgstr[0] "%n jam yang lalu" -#: js/js.js:872 +#: js/js.js:875 msgid "today" msgstr "hari ini" -#: js/js.js:873 +#: js/js.js:876 msgid "yesterday" msgstr "kemarin" -#: js/js.js:874 +#: js/js.js:877 msgid "%n day ago" msgid_plural "%n days ago" msgstr[0] "%n hari yang lalu" -#: js/js.js:875 +#: js/js.js:878 msgid "last month" msgstr "bulan kemarin" -#: js/js.js:876 +#: js/js.js:879 msgid "%n month ago" msgid_plural "%n months ago" msgstr[0] "%n bulan yang lalu" -#: js/js.js:877 +#: js/js.js:880 msgid "months ago" msgstr "beberapa bulan lalu" -#: js/js.js:878 +#: js/js.js:881 msgid "last year" msgstr "tahun kemarin" -#: js/js.js:879 +#: js/js.js:882 msgid "years ago" msgstr "beberapa tahun lalu" diff --git a/l10n/id/files.po b/l10n/id/files.po index 74a84b5c520..b2151252828 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-20 01:55-0500\n" -"PO-Revision-Date: 2013-12-20 06:23+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 08:10+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" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/l10n/id/files_encryption.po b/l10n/id/files_encryption.po index ac25567dccf..7bc9584010d 100644 --- a/l10n/id/files_encryption.po +++ b/l10n/id/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# arifpedia <arifpedia@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-11-29 14:08-0500\n" -"PO-Revision-Date: 2013-11-29 19:08+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 07:40+0000\n" +"Last-Translator: arifpedia <arifpedia@gmail.com>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: ajax/adminrecovery.php:29 msgid "Recovery key successfully enabled" -msgstr "" +msgstr "Kunci pemulihan berhasil diaktifkan" #: ajax/adminrecovery.php:34 msgid "" "Could not enable recovery key. Please check your recovery key password!" -msgstr "" +msgstr "Tidak dapat mengaktifkan kunci pemulihan. Silakan periksa sandi kunci pemulihan Anda!" #: ajax/adminrecovery.php:48 msgid "Recovery key successfully disabled" -msgstr "" +msgstr "Kunci pemulihan berhasil dinonaktifkan" #: ajax/adminrecovery.php:53 msgid "" "Could not disable recovery key. Please check your recovery key password!" -msgstr "" +msgstr "Tidak dapat menonaktifkan kunci pemulihan. Silakan periksa sandi kunci pemulihan Anda!" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Sandi berhasil diubah" #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Tidak dapat mengubah sandi. Kemungkinan sandi lama yang dimasukkan salah." #: ajax/updatePrivateKeyPassword.php:52 msgid "Private key password successfully updated." -msgstr "" +msgstr "Sandi kunci privat berhasil diperbarui." #: ajax/updatePrivateKeyPassword.php:54 msgid "" "Could not update the private key password. Maybe the old password was not " "correct." -msgstr "" +msgstr "Tidak dapat memperbarui sandi kunci privat. Kemungkinan sandi lama yang Anda masukkan salah." #: files/error.php:12 msgid "" @@ -72,32 +73,32 @@ msgstr "" msgid "" "Can not decrypt this file, probably this is a shared file. Please ask the " "file owner to reshare the file with you." -msgstr "" +msgstr "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda." #: files/error.php:22 files/error.php:27 msgid "" "Unknown error please check your system settings or contact your " "administrator" -msgstr "" +msgstr "Kesalahan tak dikenal, silakan periksa pengaturan sistem Anda atau hubungi admin." -#: hooks/hooks.php:59 +#: hooks/hooks.php:62 msgid "Missing requirements." -msgstr "" +msgstr "Persyaratan yang hilang." -#: hooks/hooks.php:60 +#: hooks/hooks.php:63 msgid "" "Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL " "together with the PHP extension is enabled and configured properly. For now," " the encryption app has been disabled." msgstr "" -#: hooks/hooks.php:273 +#: hooks/hooks.php:281 msgid "Following users are not set up for encryption:" -msgstr "" +msgstr "Pengguna berikut belum diatur untuk enkripsi:" #: js/detect-migration.js:21 msgid "Initial encryption started... This can take some time. Please wait." -msgstr "" +msgstr "Inisial enskripsi dijalankan... Ini dapat memakan waktu. Silakan tunggu." #: js/settings-admin.js:13 msgid "Saving..." @@ -105,11 +106,11 @@ msgstr "Menyimpan..." #: templates/invalid_private_key.php:8 msgid "Go directly to your " -msgstr "" +msgstr "Langsung ke anda" #: templates/invalid_private_key.php:8 msgid "personal settings" -msgstr "" +msgstr "pengaturan pribadi" #: templates/settings-admin.php:4 templates/settings-personal.php:3 msgid "Encryption" @@ -118,84 +119,84 @@ msgstr "Enkripsi" #: templates/settings-admin.php:7 msgid "" "Enable recovery key (allow to recover users files in case of password loss):" -msgstr "" +msgstr "Aktifkan kunci pemulihan (memungkinkan pengguna untuk memulihkan berkas dalam kasus kehilangan sandi):" #: templates/settings-admin.php:11 msgid "Recovery key password" -msgstr "" +msgstr "Sandi kunci pemulihan" #: templates/settings-admin.php:14 msgid "Repeat Recovery key password" -msgstr "" +msgstr "Ulangi sandi kunci Pemulihan" #: templates/settings-admin.php:21 templates/settings-personal.php:51 msgid "Enabled" -msgstr "" +msgstr "Diaktifkan" #: templates/settings-admin.php:29 templates/settings-personal.php:59 msgid "Disabled" -msgstr "" +msgstr "Dinonaktifkan" #: templates/settings-admin.php:34 msgid "Change recovery key password:" -msgstr "" +msgstr "Ubah sandi kunci pemulihan:" #: templates/settings-admin.php:40 msgid "Old Recovery key password" -msgstr "" +msgstr "Sandi kunci Pemulihan Lama" #: templates/settings-admin.php:47 msgid "New Recovery key password" -msgstr "" +msgstr "Sandi kunci Pemulihan Baru" #: templates/settings-admin.php:53 msgid "Repeat New Recovery key password" -msgstr "" +msgstr "Ulangi sandi kunci Pemulihan baru" #: templates/settings-admin.php:58 msgid "Change Password" -msgstr "" +msgstr "Ubah sandi" #: templates/settings-personal.php:9 msgid "Your private key password no longer match your log-in password:" -msgstr "" +msgstr "Sandi kunci privat Anda tidak lagi cocok dengan sandi masuk:" #: templates/settings-personal.php:12 msgid "Set your old private key password to your current log-in password." -msgstr "" +msgstr "Atur sandi kunci privat lama Anda sebagai sandi masuk Anda saat ini." #: templates/settings-personal.php:14 msgid "" " If you don't remember your old password you can ask your administrator to " "recover your files." -msgstr "" +msgstr "Jika Anda tidak ingat sandi lama, Anda dapat meminta administrator Anda untuk memulihkan berkas." #: templates/settings-personal.php:22 msgid "Old log-in password" -msgstr "" +msgstr "Sandi masuk yang lama" #: templates/settings-personal.php:28 msgid "Current log-in password" -msgstr "" +msgstr "Sandi masuk saat ini" #: templates/settings-personal.php:33 msgid "Update Private Key Password" -msgstr "" +msgstr "Perbarui Sandi Kunci Privat" #: templates/settings-personal.php:42 msgid "Enable password recovery:" -msgstr "" +msgstr "Aktifkan sandi pemulihan:" #: templates/settings-personal.php:44 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files in case of password loss" -msgstr "" +msgstr "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi" #: templates/settings-personal.php:60 msgid "File recovery settings updated" -msgstr "" +msgstr "Pengaturan pemulihan berkas diperbarui" #: templates/settings-personal.php:61 msgid "Could not update file recovery" -msgstr "" +msgstr "Tidak dapat memperbarui pemulihan berkas" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index bdcc98c9d35..c5659df948b 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# arifpedia <arifpedia@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-11-15 22:54-0500\n" -"PO-Revision-Date: 2013-11-13 16:11+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 08:00+0000\n" +"Last-Translator: arifpedia <arifpedia@gmail.com>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +20,11 @@ msgstr "" #: templates/authenticate.php:4 msgid "This share is password-protected" -msgstr "" +msgstr "Berbagi ini dilindungi sandi" #: templates/authenticate.php:7 msgid "The password is wrong. Try again." -msgstr "" +msgstr "Sandi salah. Coba lagi" #: templates/authenticate.php:10 msgid "Password" @@ -31,27 +32,27 @@ msgstr "Sandi" #: templates/part.404.php:3 msgid "Sorry, this link doesn’t seem to work anymore." -msgstr "" +msgstr "Maaf, tautan ini tampaknya tidak berfungsi lagi." #: templates/part.404.php:4 msgid "Reasons might be:" -msgstr "" +msgstr "Alasan mungkin:" #: templates/part.404.php:6 msgid "the item was removed" -msgstr "" +msgstr "item telah dihapus" #: templates/part.404.php:7 msgid "the link expired" -msgstr "" +msgstr "tautan telah kadaluarsa" #: templates/part.404.php:8 msgid "sharing is disabled" -msgstr "" +msgstr "berbagi dinonaktifkan" #: templates/part.404.php:10 msgid "For more info, please ask the person who sent this link." -msgstr "" +msgstr "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini." #: templates/public.php:18 #, php-format @@ -61,7 +62,7 @@ msgstr "%s membagikan folder %s dengan Anda" #: templates/public.php:21 #, php-format msgid "%s shared the file %s with you" -msgstr "%s membagikan file %s dengan Anda" +msgstr "%s membagikan berkas %s dengan Anda" #: templates/public.php:29 templates/public.php:95 msgid "Download" @@ -73,12 +74,12 @@ msgstr "Unggah" #: templates/public.php:59 msgid "Cancel upload" -msgstr "Batal pengunggahan" +msgstr "Batal unggah" #: templates/public.php:92 msgid "No preview available for" -msgstr "Tidak ada pratinjau tersedia untuk" +msgstr "Tidak ada pratinjau yang tersedia untuk" #: templates/public.php:99 msgid "Direct link" -msgstr "" +msgstr "Tautan langsung" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index c6a065cb2fb..5f3ad858bd3 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-11-21 10:01-0500\n" -"PO-Revision-Date: 2013-11-16 07:44+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 07:10+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" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,44 +17,44 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ajax/delete.php:42 +#: ajax/delete.php:63 #, php-format msgid "Couldn't delete %s permanently" msgstr "Tidak dapat menghapus permanen %s" -#: ajax/undelete.php:42 +#: ajax/undelete.php:43 #, php-format msgid "Couldn't restore %s" msgstr "Tidak dapat memulihkan %s" -#: js/trash.js:18 js/trash.js:44 js/trash.js:121 js/trash.js:149 +#: js/trash.js:18 js/trash.js:45 js/trash.js:88 js/trash.js:142 msgid "Error" msgstr "Galat" -#: lib/trashbin.php:815 lib/trashbin.php:817 +#: lib/trashbin.php:905 lib/trashbin.php:907 msgid "restored" msgstr "" -#: templates/index.php:8 +#: templates/index.php:7 msgid "Nothing in here. Your trash bin is empty!" msgstr "Tempat sampah anda kosong!" -#: templates/index.php:22 +#: templates/index.php:20 msgid "Name" msgstr "Nama" -#: templates/index.php:25 templates/index.php:27 +#: templates/index.php:23 templates/index.php:25 msgid "Restore" msgstr "Pulihkan" -#: templates/index.php:33 +#: templates/index.php:31 msgid "Deleted" msgstr "Dihapus" -#: templates/index.php:36 templates/index.php:37 +#: templates/index.php:34 templates/index.php:35 msgid "Delete" msgstr "Hapus" -#: templates/part.breadcrumb.php:9 +#: templates/part.breadcrumb.php:8 msgid "Deleted Files" msgstr "Berkas yang Dihapus" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index e3cda0a7e3c..0b8a55abc7f 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: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-31 01:55-0500\n" -"PO-Revision-Date: 2013-12-31 03:40+0000\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 08:10+0000\n" "Last-Translator: arifpedia <arifpedia@gmail.com>\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 368aef3c674..e90f580e2a0 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/user_ldap.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-12-31 01:55-0500\n" -"PO-Revision-Date: 2013-12-30 17:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" +"PO-Revision-Date: 2014-01-07 07:10+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" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 1ec73dd2975..3bd1bd90709 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index e5f6887ddda..5396110aede 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index ae01087be4f..31232e16fb3 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 5d95ea33849..b8ac9956fa4 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 684d5663a9b..d0daf4154b1 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 0b7e5f01605..eadcdd9d3e2 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index e08efdb3921..8ba48805bac 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index 9bcb4ce52ab..29ab50202bf 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -71,23 +71,23 @@ msgstr "" msgid "cannot open \"%s\"" msgstr "" -#: private/files.php:231 +#: private/files.php:226 msgid "ZIP download is turned off." msgstr "" -#: private/files.php:232 +#: private/files.php:227 msgid "Files need to be downloaded one by one." msgstr "" -#: private/files.php:233 private/files.php:261 +#: private/files.php:228 private/files.php:256 msgid "Back to Files" msgstr "" -#: private/files.php:258 +#: private/files.php:253 msgid "Selected files too large to generate zip file." msgstr "" -#: private/files.php:259 +#: private/files.php:254 msgid "" "Please download the files separately in smaller chunks or kindly ask your " "administrator." diff --git a/l10n/templates/private.pot b/l10n/templates/private.pot index 250fadf1831..fd5e0fded54 100644 --- a/l10n/templates/private.pot +++ b/l10n/templates/private.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -71,23 +71,23 @@ msgstr "" msgid "cannot open \"%s\"" msgstr "" -#: files.php:231 +#: files.php:226 msgid "ZIP download is turned off." msgstr "" -#: files.php:232 +#: files.php:227 msgid "Files need to be downloaded one by one." msgstr "" -#: files.php:233 files.php:261 +#: files.php:228 files.php:256 msgid "Back to Files" msgstr "" -#: files.php:258 +#: files.php:253 msgid "Selected files too large to generate zip file." msgstr "" -#: files.php:259 +#: files.php:254 msgid "" "Please download the files separately in smaller chunks or kindly ask your " "administrator." diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index e8fb417a519..a25543919ad 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 1191a2c59e2..5e79d17a11a 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 4268d7b5d4b..acf94225f59 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-01-06 01:55-0500\n" +"POT-Creation-Date: 2014-01-08 01:55-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/ur/core.po b/l10n/ur/core.po new file mode 100644 index 00000000000..862ab145c30 --- /dev/null +++ b/l10n/ur/core.po @@ -0,0 +1,775 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/share.php:119 ajax/share.php:198 +#, php-format +msgid "%s shared »%s« with you" +msgstr "" + +#: ajax/share.php:169 +#, php-format +msgid "Couldn't send mail to following users: %s " +msgstr "" + +#: ajax/update.php:11 +msgid "Turned on maintenance mode" +msgstr "" + +#: ajax/update.php:14 +msgid "Turned off maintenance mode" +msgstr "" + +#: ajax/update.php:17 +msgid "Updated database" +msgstr "" + +#: ajax/update.php:20 +msgid "Updating filecache, this may take really long..." +msgstr "" + +#: ajax/update.php:23 +msgid "Updated filecache" +msgstr "" + +#: ajax/update.php:26 +#, php-format +msgid "... %d%% done ..." +msgstr "" + +#: avatar/controller.php:62 +msgid "No image or file provided" +msgstr "" + +#: avatar/controller.php:81 +msgid "Unknown filetype" +msgstr "" + +#: avatar/controller.php:85 +msgid "Invalid image" +msgstr "" + +#: avatar/controller.php:115 avatar/controller.php:142 +msgid "No temporary profile picture available, try again" +msgstr "" + +#: avatar/controller.php:135 +msgid "No crop data provided" +msgstr "" + +#: js/config.php:32 +msgid "Sunday" +msgstr "" + +#: js/config.php:33 +msgid "Monday" +msgstr "" + +#: js/config.php:34 +msgid "Tuesday" +msgstr "" + +#: js/config.php:35 +msgid "Wednesday" +msgstr "" + +#: js/config.php:36 +msgid "Thursday" +msgstr "" + +#: js/config.php:37 +msgid "Friday" +msgstr "" + +#: js/config.php:38 +msgid "Saturday" +msgstr "" + +#: js/config.php:43 +msgid "January" +msgstr "" + +#: js/config.php:44 +msgid "February" +msgstr "" + +#: js/config.php:45 +msgid "March" +msgstr "" + +#: js/config.php:46 +msgid "April" +msgstr "" + +#: js/config.php:47 +msgid "May" +msgstr "" + +#: js/config.php:48 +msgid "June" +msgstr "" + +#: js/config.php:49 +msgid "July" +msgstr "" + +#: js/config.php:50 +msgid "August" +msgstr "" + +#: js/config.php:51 +msgid "September" +msgstr "" + +#: js/config.php:52 +msgid "October" +msgstr "" + +#: js/config.php:53 +msgid "November" +msgstr "" + +#: js/config.php:54 +msgid "December" +msgstr "" + +#: js/js.js:398 +msgid "Settings" +msgstr "" + +#: js/js.js:872 +msgid "seconds ago" +msgstr "" + +#: js/js.js:873 +msgid "%n minute ago" +msgid_plural "%n minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: js/js.js:874 +msgid "%n hour ago" +msgid_plural "%n hours ago" +msgstr[0] "" +msgstr[1] "" + +#: js/js.js:875 +msgid "today" +msgstr "" + +#: js/js.js:876 +msgid "yesterday" +msgstr "" + +#: js/js.js:877 +msgid "%n day ago" +msgid_plural "%n days ago" +msgstr[0] "" +msgstr[1] "" + +#: js/js.js:878 +msgid "last month" +msgstr "" + +#: js/js.js:879 +msgid "%n month ago" +msgid_plural "%n months ago" +msgstr[0] "" +msgstr[1] "" + +#: js/js.js:880 +msgid "months ago" +msgstr "" + +#: js/js.js:881 +msgid "last year" +msgstr "" + +#: js/js.js:882 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:123 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:146 +msgid "Error loading file picker template: {error}" +msgstr "" + +#: js/oc-dialogs.js:172 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:182 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:199 +msgid "Ok" +msgstr "" + +#: js/oc-dialogs.js:219 +msgid "Error loading message template: {error}" +msgstr "" + +#: js/oc-dialogs.js:347 +msgid "{count} file conflict" +msgid_plural "{count} file conflicts" +msgstr[0] "" +msgstr[1] "" + +#: js/oc-dialogs.js:361 +msgid "One file conflict" +msgstr "" + +#: js/oc-dialogs.js:367 +msgid "Which files do you want to keep?" +msgstr "" + +#: js/oc-dialogs.js:368 +msgid "" +"If you select both versions, the copied file will have a number added to its" +" name." +msgstr "" + +#: js/oc-dialogs.js:376 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:386 +msgid "Continue" +msgstr "" + +#: js/oc-dialogs.js:433 js/oc-dialogs.js:446 +msgid "(all selected)" +msgstr "" + +#: js/oc-dialogs.js:436 js/oc-dialogs.js:449 +msgid "({count} selected)" +msgstr "" + +#: js/oc-dialogs.js:457 +msgid "Error loading file exists template" +msgstr "" + +#: js/share.js:51 js/share.js:66 js/share.js:106 +msgid "Shared" +msgstr "" + +#: js/share.js:109 +msgid "Share" +msgstr "" + +#: js/share.js:158 js/share.js:171 js/share.js:178 js/share.js:707 +#: js/share.js:719 templates/installation.php:10 +msgid "Error" +msgstr "" + +#: js/share.js:160 js/share.js:747 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:171 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:178 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:187 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:189 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:213 +msgid "Share with user or group …" +msgstr "" + +#: js/share.js:219 +msgid "Share link" +msgstr "" + +#: js/share.js:222 +msgid "Password protect" +msgstr "" + +#: js/share.js:224 templates/installation.php:58 templates/login.php:38 +msgid "Password" +msgstr "" + +#: js/share.js:229 +msgid "Allow Public Upload" +msgstr "" + +#: js/share.js:233 +msgid "Email link to person" +msgstr "" + +#: js/share.js:234 +msgid "Send" +msgstr "" + +#: js/share.js:239 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:240 +msgid "Expiration date" +msgstr "" + +#: js/share.js:275 +msgid "Share via email:" +msgstr "" + +#: js/share.js:278 +msgid "No people found" +msgstr "" + +#: js/share.js:322 js/share.js:359 +msgid "group" +msgstr "" + +#: js/share.js:333 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:375 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:397 +msgid "Unshare" +msgstr "" + +#: js/share.js:405 +msgid "notify by email" +msgstr "" + +#: js/share.js:408 +msgid "can edit" +msgstr "" + +#: js/share.js:410 +msgid "access control" +msgstr "" + +#: js/share.js:413 +msgid "create" +msgstr "" + +#: js/share.js:416 +msgid "update" +msgstr "" + +#: js/share.js:419 +msgid "delete" +msgstr "" + +#: js/share.js:422 +msgid "share" +msgstr "" + +#: js/share.js:694 +msgid "Password protected" +msgstr "" + +#: js/share.js:707 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:719 +msgid "Error setting expiration date" +msgstr "" + +#: js/share.js:734 +msgid "Sending ..." +msgstr "" + +#: js/share.js:745 +msgid "Email sent" +msgstr "" + +#: js/share.js:769 +msgid "Warning" +msgstr "" + +#: js/tags.js:4 +msgid "The object type is not specified." +msgstr "" + +#: js/tags.js:13 +msgid "Enter new" +msgstr "" + +#: js/tags.js:27 +msgid "Delete" +msgstr "" + +#: js/tags.js:31 +msgid "Add" +msgstr "" + +#: js/tags.js:39 +msgid "Edit tags" +msgstr "" + +#: js/tags.js:57 +msgid "Error loading dialog template: {error}" +msgstr "" + +#: js/tags.js:261 +msgid "No tags selected for deletion." +msgstr "" + +#: js/update.js:8 +msgid "Please reload the page." +msgstr "" + +#: js/update.js:17 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "" + +#: js/update.js:21 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "" + +#: lostpassword/controller.php:62 +#, php-format +msgid "%s password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:7 +msgid "" +"The link to reset your password has been sent to your email.<br>If you do " +"not receive it within a reasonable amount of time, check your spam/junk " +"folders.<br>If it is not there ask your local administrator ." +msgstr "" + +#: lostpassword/templates/lostpassword.php:15 +msgid "Request failed!<br>Did you make sure your email/username was right?" +msgstr "" + +#: lostpassword/templates/lostpassword.php:18 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:21 templates/installation.php:52 +#: templates/login.php:31 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:25 +msgid "" +"Your files are encrypted. If you haven't enabled the recovery key, there " +"will be no way to get your data back after your password is reset. If you " +"are not sure what to do, please contact your administrator before you " +"continue. Do you really want to continue?" +msgstr "" + +#: lostpassword/templates/lostpassword.php:27 +msgid "Yes, I really want to reset my password now" +msgstr "" + +#: lostpassword/templates/lostpassword.php:30 +msgid "Reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 templates/layout.user.php:111 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: tags/controller.php:22 +msgid "Error loading tags" +msgstr "" + +#: tags/controller.php:48 +msgid "Tag already exists" +msgstr "" + +#: tags/controller.php:64 +msgid "Error deleting tag(s)" +msgstr "" + +#: tags/controller.php:75 +msgid "Error tagging" +msgstr "" + +#: tags/controller.php:86 +msgid "Error untagging" +msgstr "" + +#: tags/controller.php:97 +msgid "Error favoriting" +msgstr "" + +#: tags/controller.php:108 +msgid "Error unfavoriting" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:15 +msgid "Cloud not found" +msgstr "" + +#: templates/altmail.php:2 +#, php-format +msgid "" +"Hey there,\n" +"\n" +"just letting you know that %s shared %s with you.\n" +"View it: %s\n" +"\n" +msgstr "" + +#: templates/altmail.php:4 templates/mail.php:17 +#, php-format +msgid "The share will expire on %s." +msgstr "" + +#: templates/altmail.php:7 templates/mail.php:20 +msgid "Cheers!" +msgstr "" + +#: templates/installation.php:25 templates/installation.php:32 +#: templates/installation.php:39 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:26 +msgid "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" +msgstr "" + +#: templates/installation.php:27 +#, php-format +msgid "Please update your PHP installation to use %s securely." +msgstr "" + +#: templates/installation.php:33 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:34 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:40 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + +#: templates/installation.php:42 +#, php-format +msgid "" +"For information how to properly configure your server, please see the <a " +"href=\"%s\" target=\"_blank\">documentation</a>." +msgstr "" + +#: templates/installation.php:48 +msgid "Create an <strong>admin account</strong>" +msgstr "" + +#: templates/installation.php:67 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:74 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:86 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:91 templates/installation.php:103 +#: templates/installation.php:114 templates/installation.php:125 +#: templates/installation.php:137 +msgid "will be used" +msgstr "" + +#: templates/installation.php:149 +msgid "Database user" +msgstr "" + +#: templates/installation.php:156 +msgid "Database password" +msgstr "" + +#: templates/installation.php:161 +msgid "Database name" +msgstr "" + +#: templates/installation.php:169 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:176 +msgid "Database host" +msgstr "" + +#: templates/installation.php:185 +msgid "Finish setup" +msgstr "" + +#: templates/installation.php:185 +msgid "Finishing …" +msgstr "" + +#: templates/layout.user.php:40 +msgid "" +"This application requires JavaScript to be enabled for correct operation. " +"Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable " +"JavaScript</a> and re-load this interface." +msgstr "" + +#: templates/layout.user.php:44 +#, php-format +msgid "%s is available. Get more information on how to update." +msgstr "" + +#: templates/layout.user.php:72 templates/singleuser.user.php:8 +msgid "Log out" +msgstr "" + +#: templates/login.php:9 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:10 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:12 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:17 +msgid "Server side authentication failed!" +msgstr "" + +#: templates/login.php:18 +msgid "Please contact your administrator." +msgstr "" + +#: templates/login.php:44 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:49 +msgid "remember" +msgstr "" + +#: templates/login.php:52 +msgid "Log in" +msgstr "" + +#: templates/login.php:58 +msgid "Alternative Logins" +msgstr "" + +#: templates/mail.php:15 +#, php-format +msgid "" +"Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a " +"href=\"%s\">View it!</a><br><br>" +msgstr "" + +#: templates/singleuser.user.php:3 +msgid "This ownCloud instance is currently in single user mode." +msgstr "" + +#: templates/singleuser.user.php:4 +msgid "This means only administrators can use the instance." +msgstr "" + +#: templates/singleuser.user.php:5 templates/update.user.php:5 +msgid "" +"Contact your system administrator if this message persists or appeared " +"unexpectedly." +msgstr "" + +#: templates/singleuser.user.php:7 templates/update.user.php:6 +msgid "Thank you for your patience." +msgstr "" + +#: templates/update.admin.php:3 +#, php-format +msgid "Updating ownCloud to version %s, this may take a while." +msgstr "" + +#: templates/update.user.php:3 +msgid "" +"This ownCloud instance is currently being updated, which may take a while." +msgstr "" + +#: templates/update.user.php:4 +msgid "Please reload this page after a short time to continue using ownCloud." +msgstr "" diff --git a/l10n/ur/files.po b/l10n/ur/files.po new file mode 100644 index 00000000000..ecfa8697636 --- /dev/null +++ b/l10n/ur/files.po @@ -0,0 +1,413 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/newfile.php:56 js/files.js:74 +msgid "File name cannot be empty." +msgstr "" + +#: ajax/newfile.php:62 +msgid "File name must not contain \"/\". Please choose a different name." +msgstr "" + +#: ajax/newfile.php:72 ajax/newfolder.php:37 lib/app.php:67 +#, php-format +msgid "" +"The name %s is already used in the folder %s. Please choose a different " +"name." +msgstr "" + +#: ajax/newfile.php:81 +msgid "Not a valid source" +msgstr "" + +#: ajax/newfile.php:86 +msgid "" +"Server is not allowed to open URLs, please check the server configuration" +msgstr "" + +#: ajax/newfile.php:103 +#, php-format +msgid "Error while downloading %s to %s" +msgstr "" + +#: ajax/newfile.php:140 +msgid "Error when creating the file" +msgstr "" + +#: ajax/newfolder.php:21 +msgid "Folder name cannot be empty." +msgstr "" + +#: ajax/newfolder.php:27 +msgid "Folder name must not contain \"/\". Please choose a different name." +msgstr "" + +#: ajax/newfolder.php:56 +msgid "Error when creating the folder" +msgstr "" + +#: ajax/upload.php:18 ajax/upload.php:50 +msgid "Unable to set upload directory." +msgstr "" + +#: ajax/upload.php:27 +msgid "Invalid Token" +msgstr "" + +#: ajax/upload.php:64 +msgid "No file was uploaded. Unknown error" +msgstr "" + +#: ajax/upload.php:71 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:72 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:74 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:75 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:76 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:77 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:78 +msgid "Failed to write to disk" +msgstr "" + +#: ajax/upload.php:96 +msgid "Not enough storage available" +msgstr "" + +#: ajax/upload.php:127 ajax/upload.php:154 +msgid "Upload failed. Could not get file info." +msgstr "" + +#: ajax/upload.php:144 +msgid "Upload failed. Could not find uploaded file" +msgstr "" + +#: ajax/upload.php:172 +msgid "Invalid directory." +msgstr "" + +#: appinfo/app.php:11 +msgid "Files" +msgstr "" + +#: js/file-upload.js:228 +msgid "Unable to upload {filename} as it is a directory or has 0 bytes" +msgstr "" + +#: js/file-upload.js:239 +msgid "Not enough space available" +msgstr "" + +#: js/file-upload.js:306 +msgid "Upload cancelled." +msgstr "" + +#: js/file-upload.js:344 +msgid "Could not get result from server." +msgstr "" + +#: js/file-upload.js:436 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/file-upload.js:523 +msgid "URL cannot be empty" +msgstr "" + +#: js/file-upload.js:527 js/filelist.js:377 +msgid "In the home folder 'Shared' is a reserved filename" +msgstr "" + +#: js/file-upload.js:529 js/filelist.js:379 +msgid "{new_name} already exists" +msgstr "" + +#: js/file-upload.js:595 +msgid "Could not create file" +msgstr "" + +#: js/file-upload.js:611 +msgid "Could not create folder" +msgstr "" + +#: js/file-upload.js:661 +msgid "Error fetching URL" +msgstr "" + +#: js/fileactions.js:125 +msgid "Share" +msgstr "" + +#: js/fileactions.js:137 +msgid "Delete permanently" +msgstr "" + +#: js/fileactions.js:194 +msgid "Rename" +msgstr "" + +#: js/filelist.js:69 js/filelist.js:72 js/filelist.js:889 +msgid "Pending" +msgstr "" + +#: js/filelist.js:405 +msgid "Could not rename file" +msgstr "" + +#: js/filelist.js:539 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:539 +msgid "undo" +msgstr "" + +#: js/filelist.js:591 +msgid "Error deleting file." +msgstr "" + +#: js/filelist.js:609 js/filelist.js:683 js/files.js:631 +msgid "%n folder" +msgid_plural "%n folders" +msgstr[0] "" +msgstr[1] "" + +#: js/filelist.js:610 js/filelist.js:684 js/files.js:637 +msgid "%n file" +msgid_plural "%n files" +msgstr[0] "" +msgstr[1] "" + +#: js/filelist.js:617 +msgid "{dirs} and {files}" +msgstr "" + +#: js/filelist.js:828 js/filelist.js:866 +msgid "Uploading %n file" +msgid_plural "Uploading %n files" +msgstr[0] "" +msgstr[1] "" + +#: js/files.js:72 +msgid "'.' is an invalid file name." +msgstr "" + +#: js/files.js:81 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:93 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "" + +#: js/files.js:97 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "" + +#: js/files.js:110 +msgid "" +"Encryption App is enabled but your keys are not initialized, please log-out " +"and log-in again" +msgstr "" + +#: js/files.js:114 +msgid "" +"Invalid private key for Encryption App. Please update your private key " +"password in your personal settings to recover access to your encrypted " +"files." +msgstr "" + +#: js/files.js:118 +msgid "" +"Encryption was disabled but your files are still encrypted. Please go to " +"your personal settings to decrypt your files." +msgstr "" + +#: js/files.js:349 +msgid "" +"Your download is being prepared. This might take some time if the files are " +"big." +msgstr "" + +#: js/files.js:558 js/files.js:596 +msgid "Error moving file" +msgstr "" + +#: js/files.js:558 js/files.js:596 +msgid "Error" +msgstr "" + +#: js/files.js:613 templates/index.php:56 +msgid "Name" +msgstr "" + +#: js/files.js:614 templates/index.php:68 +msgid "Size" +msgstr "" + +#: js/files.js:615 templates/index.php:70 +msgid "Modified" +msgstr "" + +#: lib/app.php:60 +msgid "Invalid folder name. Usage of 'Shared' is reserved." +msgstr "" + +#: lib/app.php:101 +#, php-format +msgid "%s could not be renamed" +msgstr "" + +#: lib/helper.php:11 templates/index.php:16 +msgid "Upload" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:10 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:15 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:17 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:20 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:22 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:26 +msgid "Save" +msgstr "" + +#: templates/index.php:5 +msgid "New" +msgstr "" + +#: templates/index.php:8 +msgid "New text file" +msgstr "" + +#: templates/index.php:8 +msgid "Text file" +msgstr "" + +#: templates/index.php:10 +msgid "New folder" +msgstr "" + +#: templates/index.php:10 +msgid "Folder" +msgstr "" + +#: templates/index.php:12 +msgid "From link" +msgstr "" + +#: templates/index.php:29 +msgid "Deleted files" +msgstr "" + +#: templates/index.php:34 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:40 +msgid "You don’t have permission to upload or create files here" +msgstr "" + +#: templates/index.php:45 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:62 +msgid "Download" +msgstr "" + +#: templates/index.php:73 templates/index.php:74 +msgid "Delete" +msgstr "" + +#: templates/index.php:86 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:88 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:93 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:96 +msgid "Current scanning" +msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/ur/files_encryption.po b/l10n/ur/files_encryption.po new file mode 100644 index 00000000000..3e4b7ec4a7d --- /dev/null +++ b/l10n/ur/files_encryption.po @@ -0,0 +1,201 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/adminrecovery.php:29 +msgid "Recovery key successfully enabled" +msgstr "" + +#: ajax/adminrecovery.php:34 +msgid "" +"Could not enable recovery key. Please check your recovery key password!" +msgstr "" + +#: ajax/adminrecovery.php:48 +msgid "Recovery key successfully disabled" +msgstr "" + +#: ajax/adminrecovery.php:53 +msgid "" +"Could not disable recovery key. Please check your recovery key password!" +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 "" + +#: ajax/updatePrivateKeyPassword.php:52 +msgid "Private key password successfully updated." +msgstr "" + +#: ajax/updatePrivateKeyPassword.php:54 +msgid "" +"Could not update the private key password. Maybe the old password was not " +"correct." +msgstr "" + +#: files/error.php:12 +msgid "" +"Encryption app not initialized! Maybe the encryption app was re-enabled " +"during your session. Please try to log out and log back in to initialize the" +" encryption app." +msgstr "" + +#: files/error.php:16 +#, php-format +msgid "" +"Your private key is not valid! Likely your password was changed outside of " +"%s (e.g. your corporate directory). You can update your private key password" +" in your personal settings to recover access to your encrypted files." +msgstr "" + +#: files/error.php:19 +msgid "" +"Can not decrypt this file, probably this is a shared file. Please ask the " +"file owner to reshare the file with you." +msgstr "" + +#: files/error.php:22 files/error.php:27 +msgid "" +"Unknown error please check your system settings or contact your " +"administrator" +msgstr "" + +#: hooks/hooks.php:62 +msgid "Missing requirements." +msgstr "" + +#: hooks/hooks.php:63 +msgid "" +"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL " +"together with the PHP extension is enabled and configured properly. For now," +" the encryption app has been disabled." +msgstr "" + +#: hooks/hooks.php:281 +msgid "Following users are not set up for encryption:" +msgstr "" + +#: js/detect-migration.js:21 +msgid "Initial encryption started... This can take some time. Please wait." +msgstr "" + +#: js/settings-admin.js:13 +msgid "Saving..." +msgstr "" + +#: templates/invalid_private_key.php:8 +msgid "Go directly to your " +msgstr "" + +#: templates/invalid_private_key.php:8 +msgid "personal settings" +msgstr "" + +#: templates/settings-admin.php:4 templates/settings-personal.php:3 +msgid "Encryption" +msgstr "" + +#: templates/settings-admin.php:7 +msgid "" +"Enable recovery key (allow to recover users files in case of password loss):" +msgstr "" + +#: templates/settings-admin.php:11 +msgid "Recovery key password" +msgstr "" + +#: templates/settings-admin.php:14 +msgid "Repeat Recovery key password" +msgstr "" + +#: templates/settings-admin.php:21 templates/settings-personal.php:51 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:29 templates/settings-personal.php:59 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:34 +msgid "Change recovery key password:" +msgstr "" + +#: templates/settings-admin.php:40 +msgid "Old Recovery key password" +msgstr "" + +#: templates/settings-admin.php:47 +msgid "New Recovery key password" +msgstr "" + +#: templates/settings-admin.php:53 +msgid "Repeat New Recovery key password" +msgstr "" + +#: templates/settings-admin.php:58 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:9 +msgid "Your private key password no longer match your log-in password:" +msgstr "" + +#: templates/settings-personal.php:12 +msgid "Set your old private key password to your current log-in password." +msgstr "" + +#: templates/settings-personal.php:14 +msgid "" +" If you don't remember your old password you can ask your administrator to " +"recover your files." +msgstr "" + +#: templates/settings-personal.php:22 +msgid "Old log-in password" +msgstr "" + +#: templates/settings-personal.php:28 +msgid "Current log-in password" +msgstr "" + +#: templates/settings-personal.php:33 +msgid "Update Private Key Password" +msgstr "" + +#: templates/settings-personal.php:42 +msgid "Enable password recovery:" +msgstr "" + +#: templates/settings-personal.php:44 +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files in case of password loss" +msgstr "" + +#: templates/settings-personal.php:60 +msgid "File recovery settings updated" +msgstr "" + +#: templates/settings-personal.php:61 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/ur/files_external.po b/l10n/ur/files_external.po new file mode 100644 index 00000000000..480a799b4e4 --- /dev/null +++ b/l10n/ur/files_external.po @@ -0,0 +1,123 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: js/dropbox.js:7 js/dropbox.js:28 js/google.js:8 js/google.js:39 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:30 js/dropbox.js:96 js/dropbox.js:102 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:65 js/google.js:86 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:101 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:42 js/google.js:121 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: lib/config.php:467 +msgid "" +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " +"is not possible. Please ask your system administrator to install it." +msgstr "" + +#: lib/config.php:471 +msgid "" +"<b>Warning:</b> The FTP support in PHP is not enabled or installed. Mounting" +" of FTP shares is not possible. Please ask your system administrator to " +"install it." +msgstr "" + +#: lib/config.php:474 +msgid "" +"<b>Warning:</b> 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:9 templates/settings.php:28 +msgid "Folder name" +msgstr "" + +#: templates/settings.php:10 +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:33 +msgid "Add storage" +msgstr "" + +#: templates/settings.php:90 +msgid "None set" +msgstr "" + +#: templates/settings.php:91 +msgid "All Users" +msgstr "" + +#: templates/settings.php:92 +msgid "Groups" +msgstr "" + +#: templates/settings.php:100 +msgid "Users" +msgstr "" + +#: templates/settings.php:113 templates/settings.php:114 +#: templates/settings.php:149 templates/settings.php:150 +msgid "Delete" +msgstr "" + +#: templates/settings.php:129 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:130 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:141 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:159 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/ur/files_sharing.po b/l10n/ur/files_sharing.po new file mode 100644 index 00000000000..1dd85cf47f2 --- /dev/null +++ b/l10n/ur/files_sharing.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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/authenticate.php:4 +msgid "This share is password-protected" +msgstr "" + +#: templates/authenticate.php:7 +msgid "The password is wrong. Try again." +msgstr "" + +#: templates/authenticate.php:10 +msgid "Password" +msgstr "" + +#: templates/part.404.php:3 +msgid "Sorry, this link doesn’t seem to work anymore." +msgstr "" + +#: templates/part.404.php:4 +msgid "Reasons might be:" +msgstr "" + +#: templates/part.404.php:6 +msgid "the item was removed" +msgstr "" + +#: templates/part.404.php:7 +msgid "the link expired" +msgstr "" + +#: templates/part.404.php:8 +msgid "sharing is disabled" +msgstr "" + +#: templates/part.404.php:10 +msgid "For more info, please ask the person who sent this link." +msgstr "" + +#: templates/public.php:18 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:21 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:29 templates/public.php:95 +msgid "Download" +msgstr "" + +#: templates/public.php:46 templates/public.php:49 +msgid "Upload" +msgstr "" + +#: templates/public.php:59 +msgid "Cancel upload" +msgstr "" + +#: templates/public.php:92 +msgid "No preview available for" +msgstr "" + +#: templates/public.php:99 +msgid "Direct link" +msgstr "" diff --git a/l10n/ur/files_trashbin.po b/l10n/ur/files_trashbin.po new file mode 100644 index 00000000000..d1b08db59f1 --- /dev/null +++ b/l10n/ur/files_trashbin.po @@ -0,0 +1,60 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/delete.php:63 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:43 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + +#: js/trash.js:18 js/trash.js:45 js/trash.js:88 js/trash.js:142 +msgid "Error" +msgstr "" + +#: lib/trashbin.php:905 lib/trashbin.php:907 +msgid "restored" +msgstr "" + +#: templates/index.php:7 +msgid "Nothing in here. Your trash bin is empty!" +msgstr "" + +#: templates/index.php:20 +msgid "Name" +msgstr "" + +#: templates/index.php:23 templates/index.php:25 +msgid "Restore" +msgstr "" + +#: templates/index.php:31 +msgid "Deleted" +msgstr "" + +#: templates/index.php:34 templates/index.php:35 +msgid "Delete" +msgstr "" + +#: templates/part.breadcrumb.php:8 +msgid "Deleted Files" +msgstr "" diff --git a/l10n/ur/files_versions.po b/l10n/ur/files_versions.po new file mode 100644 index 00000000000..377d24db42b --- /dev/null +++ b/l10n/ur/files_versions.po @@ -0,0 +1,43 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/rollbackVersion.php:13 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: js/versions.js:14 +msgid "Versions" +msgstr "" + +#: js/versions.js:60 +msgid "Failed to revert {file} to revision {timestamp}." +msgstr "" + +#: js/versions.js:86 +msgid "More versions..." +msgstr "" + +#: js/versions.js:123 +msgid "No other versions available" +msgstr "" + +#: js/versions.js:154 +msgid "Restore" +msgstr "" diff --git a/l10n/ur/lib.po b/l10n/ur/lib.po new file mode 100644 index 00000000000..ba1af659a1c --- /dev/null +++ b/l10n/ur/lib.po @@ -0,0 +1,333 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: private/app.php:245 +#, php-format +msgid "" +"App \"%s\" can't be installed because it is not compatible with this version" +" of ownCloud." +msgstr "" + +#: private/app.php:257 +msgid "No app name specified" +msgstr "" + +#: private/app.php:362 +msgid "Help" +msgstr "" + +#: private/app.php:375 +msgid "Personal" +msgstr "" + +#: private/app.php:386 +msgid "Settings" +msgstr "" + +#: private/app.php:398 +msgid "Users" +msgstr "" + +#: private/app.php:411 +msgid "Admin" +msgstr "" + +#: private/app.php:875 +#, php-format +msgid "Failed to upgrade \"%s\"." +msgstr "" + +#: private/avatar.php:66 +msgid "Unknown filetype" +msgstr "" + +#: private/avatar.php:71 +msgid "Invalid image" +msgstr "" + +#: private/defaults.php:34 +msgid "web services under your control" +msgstr "" + +#: private/files.php:66 private/files.php:98 +#, php-format +msgid "cannot open \"%s\"" +msgstr "" + +#: private/files.php:231 +msgid "ZIP download is turned off." +msgstr "" + +#: private/files.php:232 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: private/files.php:233 private/files.php:261 +msgid "Back to Files" +msgstr "" + +#: private/files.php:258 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: private/files.php:259 +msgid "" +"Please download the files separately in smaller chunks or kindly ask your " +"administrator." +msgstr "" + +#: private/installer.php:63 +msgid "No source specified when installing app" +msgstr "" + +#: private/installer.php:70 +msgid "No href specified when installing app from http" +msgstr "" + +#: private/installer.php:75 +msgid "No path specified when installing app from local file" +msgstr "" + +#: private/installer.php:89 +#, php-format +msgid "Archives of type %s are not supported" +msgstr "" + +#: private/installer.php:103 +msgid "Failed to open archive when installing app" +msgstr "" + +#: private/installer.php:125 +msgid "App does not provide an info.xml file" +msgstr "" + +#: private/installer.php:131 +msgid "App can't be installed because of not allowed code in the App" +msgstr "" + +#: private/installer.php:140 +msgid "" +"App can't be installed because it is not compatible with this version of " +"ownCloud" +msgstr "" + +#: private/installer.php:146 +msgid "" +"App can't be installed because it contains the <shipped>true</shipped> tag " +"which is not allowed for non shipped apps" +msgstr "" + +#: private/installer.php:159 +msgid "" +"App can't be installed because the version in info.xml/version is not the " +"same as the version reported from the app store" +msgstr "" + +#: private/installer.php:169 +msgid "App directory already exists" +msgstr "" + +#: private/installer.php:182 +#, php-format +msgid "Can't create app folder. Please fix permissions. %s" +msgstr "" + +#: private/json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: private/json.php:39 private/json.php:62 private/json.php:73 +msgid "Authentication error" +msgstr "" + +#: private/json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: private/search/provider/file.php:18 private/search/provider/file.php:36 +msgid "Files" +msgstr "" + +#: private/search/provider/file.php:27 private/search/provider/file.php:34 +msgid "Text" +msgstr "" + +#: private/search/provider/file.php:30 +msgid "Images" +msgstr "" + +#: private/setup/abstractdatabase.php:26 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: private/setup/abstractdatabase.php:29 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: private/setup/abstractdatabase.php:32 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: private/setup/mssql.php:20 +#, php-format +msgid "MS SQL username and/or password not valid: %s" +msgstr "" + +#: private/setup/mssql.php:21 private/setup/mysql.php:13 +#: private/setup/oci.php:114 private/setup/postgresql.php:24 +#: private/setup/postgresql.php:70 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: private/setup/mysql.php:12 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: private/setup/mysql.php:67 private/setup/oci.php:54 +#: private/setup/oci.php:121 private/setup/oci.php:144 +#: private/setup/oci.php:151 private/setup/oci.php:162 +#: private/setup/oci.php:169 private/setup/oci.php:178 +#: private/setup/oci.php:186 private/setup/oci.php:195 +#: private/setup/oci.php:201 private/setup/postgresql.php:89 +#: private/setup/postgresql.php:98 private/setup/postgresql.php:115 +#: private/setup/postgresql.php:125 private/setup/postgresql.php:134 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: private/setup/mysql.php:68 private/setup/oci.php:55 +#: private/setup/oci.php:122 private/setup/oci.php:145 +#: private/setup/oci.php:152 private/setup/oci.php:163 +#: private/setup/oci.php:179 private/setup/oci.php:187 +#: private/setup/oci.php:196 private/setup/postgresql.php:90 +#: private/setup/postgresql.php:99 private/setup/postgresql.php:116 +#: private/setup/postgresql.php:126 private/setup/postgresql.php:135 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: private/setup/mysql.php:85 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: private/setup/mysql.php:86 +msgid "Drop this user from MySQL" +msgstr "" + +#: private/setup/mysql.php:91 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: private/setup/mysql.php:92 +msgid "Drop this user from MySQL." +msgstr "" + +#: private/setup/oci.php:34 +msgid "Oracle connection could not be established" +msgstr "" + +#: private/setup/oci.php:41 private/setup/oci.php:113 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: private/setup/oci.php:170 private/setup/oci.php:202 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: private/setup/postgresql.php:23 private/setup/postgresql.php:69 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: private/setup.php:28 +msgid "Set an admin username." +msgstr "" + +#: private/setup.php:31 +msgid "Set an admin password." +msgstr "" + +#: private/setup.php:195 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: private/setup.php:196 +#, php-format +msgid "Please double check the <a href='%s'>installation guides</a>." +msgstr "" + +#: private/tags.php:194 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" + +#: private/template/functions.php:130 +msgid "seconds ago" +msgstr "" + +#: private/template/functions.php:131 +msgid "%n minute ago" +msgid_plural "%n minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: private/template/functions.php:132 +msgid "%n hour ago" +msgid_plural "%n hours ago" +msgstr[0] "" +msgstr[1] "" + +#: private/template/functions.php:133 +msgid "today" +msgstr "" + +#: private/template/functions.php:134 +msgid "yesterday" +msgstr "" + +#: private/template/functions.php:136 +msgid "%n day go" +msgid_plural "%n days ago" +msgstr[0] "" +msgstr[1] "" + +#: private/template/functions.php:138 +msgid "last month" +msgstr "" + +#: private/template/functions.php:139 +msgid "%n month ago" +msgid_plural "%n months ago" +msgstr[0] "" +msgstr[1] "" + +#: private/template/functions.php:141 +msgid "last year" +msgstr "" + +#: private/template/functions.php:142 +msgid "years ago" +msgstr "" diff --git a/l10n/ur/settings.po b/l10n/ur/settings.po new file mode 100644 index 00000000000..f068880aa58 --- /dev/null +++ b/l10n/ur/settings.po @@ -0,0 +1,668 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/changedisplayname.php:25 ajax/removeuser.php:15 ajax/setquota.php:17 +#: ajax/togglegroups.php:20 changepassword/controller.php:55 +msgid "Authentication error" +msgstr "" + +#: ajax/changedisplayname.php:31 +msgid "Your full name has been changed." +msgstr "" + +#: ajax/changedisplayname.php:34 +msgid "Unable to change full name" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:25 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:30 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:36 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: ajax/updateapp.php:14 +msgid "Couldn't update app." +msgstr "" + +#: changepassword/controller.php:20 +msgid "Wrong password" +msgstr "" + +#: changepassword/controller.php:42 +msgid "No user supplied" +msgstr "" + +#: changepassword/controller.php:74 +msgid "" +"Please provide an admin recovery password, otherwise all user data will be " +"lost" +msgstr "" + +#: changepassword/controller.php:79 +msgid "" +"Wrong admin recovery password. Please check the password and try again." +msgstr "" + +#: changepassword/controller.php:87 +msgid "" +"Back-end doesn't support password change, but the users encryption key was " +"successfully updated." +msgstr "" + +#: changepassword/controller.php:92 changepassword/controller.php:103 +msgid "Unable to change password" +msgstr "" + +#: js/apps.js:43 +msgid "Update to {appversion}" +msgstr "" + +#: js/apps.js:49 js/apps.js:82 js/apps.js:110 +msgid "Disable" +msgstr "" + +#: js/apps.js:49 js/apps.js:90 js/apps.js:103 js/apps.js:119 +msgid "Enable" +msgstr "" + +#: js/apps.js:71 +msgid "Please wait...." +msgstr "" + +#: js/apps.js:79 js/apps.js:80 js/apps.js:101 +msgid "Error while disabling app" +msgstr "" + +#: js/apps.js:100 js/apps.js:114 js/apps.js:115 +msgid "Error while enabling app" +msgstr "" + +#: js/apps.js:125 +msgid "Updating...." +msgstr "" + +#: js/apps.js:128 +msgid "Error while updating app" +msgstr "" + +#: js/apps.js:128 +msgid "Error" +msgstr "" + +#: js/apps.js:129 templates/apps.php:43 +msgid "Update" +msgstr "" + +#: js/apps.js:132 +msgid "Updated" +msgstr "" + +#: js/personal.js:220 +msgid "Select a profile picture" +msgstr "" + +#: js/personal.js:266 +msgid "Decrypting files... Please wait, this can take some time." +msgstr "" + +#: js/personal.js:287 +msgid "Saving..." +msgstr "" + +#: 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:95 templates/users.php:26 templates/users.php:90 +#: templates/users.php:118 +msgid "Groups" +msgstr "" + +#: js/users.js:100 templates/users.php:92 templates/users.php:130 +msgid "Group Admin" +msgstr "" + +#: js/users.js:123 templates/users.php:170 +msgid "Delete" +msgstr "" + +#: js/users.js:284 +msgid "add group" +msgstr "" + +#: js/users.js:454 +msgid "A valid username must be provided" +msgstr "" + +#: js/users.js:455 js/users.js:461 js/users.js:476 +msgid "Error creating user" +msgstr "" + +#: js/users.js:460 +msgid "A valid password must be provided" +msgstr "" + +#: js/users.js:484 +msgid "Warning: Home directory for user \"{user}\" already exists" +msgstr "" + +#: personal.php:45 personal.php:46 +msgid "__language_name__" +msgstr "" + +#: templates/admin.php:8 +msgid "Everything (fatal issues, errors, warnings, info, debug)" +msgstr "" + +#: templates/admin.php:9 +msgid "Info, warnings, errors and fatal issues" +msgstr "" + +#: templates/admin.php:10 +msgid "Warnings, errors and fatal issues" +msgstr "" + +#: templates/admin.php:11 +msgid "Errors and fatal issues" +msgstr "" + +#: templates/admin.php:12 +msgid "Fatal issues only" +msgstr "" + +#: templates/admin.php:22 templates/admin.php:36 +msgid "Security Warning" +msgstr "" + +#: templates/admin.php:25 +#, php-format +msgid "" +"You are accessing %s via HTTP. We strongly suggest you configure your server" +" to require using HTTPS instead." +msgstr "" + +#: templates/admin.php:39 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file is not working. We strongly suggest that you " +"configure your webserver in a way that the data directory is no longer " +"accessible or you move the data directory outside the webserver document " +"root." +msgstr "" + +#: templates/admin.php:50 +msgid "Setup Warning" +msgstr "" + +#: templates/admin.php:53 +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:54 +#, php-format +msgid "Please double check the <a href=\"%s\">installation guides</a>." +msgstr "" + +#: templates/admin.php:65 +msgid "Module 'fileinfo' missing" +msgstr "" + +#: templates/admin.php:68 +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:79 +msgid "Your PHP version is outdated" +msgstr "" + +#: templates/admin.php:82 +msgid "" +"Your PHP version is outdated. We strongly recommend to update to 5.3.8 or " +"newer because older versions are known to be broken. It is possible that " +"this installation is not working correctly." +msgstr "" + +#: templates/admin.php:93 +msgid "Locale not working" +msgstr "" + +#: templates/admin.php:98 +msgid "System locale can not be set to a one which supports UTF-8." +msgstr "" + +#: templates/admin.php:102 +msgid "" +"This means that there might be problems with certain characters in file " +"names." +msgstr "" + +#: templates/admin.php:106 +#, php-format +msgid "" +"We strongly suggest to install the required packages on your system to " +"support one of the following locales: %s." +msgstr "" + +#: templates/admin.php:118 +msgid "Internet connection not working" +msgstr "" + +#: templates/admin.php:121 +msgid "" +"This 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." +msgstr "" + +#: templates/admin.php:135 +msgid "Cron" +msgstr "" + +#: templates/admin.php:142 +msgid "Execute one task with each page loaded" +msgstr "" + +#: templates/admin.php:150 +msgid "" +"cron.php is registered at a webcron service to call cron.php every 15 " +"minutes over http." +msgstr "" + +#: templates/admin.php:158 +msgid "Use systems cron service to call the cron.php file every 15 minutes." +msgstr "" + +#: templates/admin.php:163 +msgid "Sharing" +msgstr "" + +#: templates/admin.php:169 +msgid "Enable Share API" +msgstr "" + +#: templates/admin.php:170 +msgid "Allow apps to use the Share API" +msgstr "" + +#: templates/admin.php:177 +msgid "Allow links" +msgstr "" + +#: templates/admin.php:178 +msgid "Allow users to share items to the public with links" +msgstr "" + +#: templates/admin.php:186 +msgid "Allow public uploads" +msgstr "" + +#: templates/admin.php:187 +msgid "" +"Allow users to enable others to upload into their publicly shared folders" +msgstr "" + +#: templates/admin.php:195 +msgid "Allow resharing" +msgstr "" + +#: templates/admin.php:196 +msgid "Allow users to share items shared with them again" +msgstr "" + +#: templates/admin.php:203 +msgid "Allow users to share with anyone" +msgstr "" + +#: templates/admin.php:206 +msgid "Allow users to only share with users in their groups" +msgstr "" + +#: templates/admin.php:213 +msgid "Allow mail notification" +msgstr "" + +#: templates/admin.php:214 +msgid "Allow user to send mail notification for shared files" +msgstr "" + +#: templates/admin.php:221 +msgid "Security" +msgstr "" + +#: templates/admin.php:234 +msgid "Enforce HTTPS" +msgstr "" + +#: templates/admin.php:236 +#, php-format +msgid "Forces the clients to connect to %s via an encrypted connection." +msgstr "" + +#: templates/admin.php:242 +#, php-format +msgid "" +"Please connect to your %s via HTTPS to enable or disable the SSL " +"enforcement." +msgstr "" + +#: templates/admin.php:254 +msgid "Log" +msgstr "" + +#: templates/admin.php:255 +msgid "Log level" +msgstr "" + +#: templates/admin.php:287 +msgid "More" +msgstr "" + +#: templates/admin.php:288 +msgid "Less" +msgstr "" + +#: templates/admin.php:294 templates/personal.php:173 +msgid "Version" +msgstr "" + +#: templates/admin.php:298 templates/personal.php:176 +msgid "" +"Developed by the <a href=\"http://ownCloud.org/contact\" " +"target=\"_blank\">ownCloud community</a>, the <a " +"href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is " +"licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" " +"target=\"_blank\"><abbr title=\"Affero General Public " +"License\">AGPL</abbr></a>." +msgstr "" + +#: templates/apps.php:13 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:28 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:33 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:39 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:41 +msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" +msgstr "" + +#: 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 "Forum" +msgstr "" + +#: templates/help.php:14 +msgid "Bugtracker" +msgstr "" + +#: templates/help.php:17 +msgid "Commercial Support" +msgstr "" + +#: templates/personal.php:8 +msgid "Get the apps to sync your files" +msgstr "" + +#: templates/personal.php:19 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:27 +#, php-format +msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" +msgstr "" + +#: templates/personal.php:39 templates/users.php:23 templates/users.php:89 +msgid "Password" +msgstr "" + +#: templates/personal.php:40 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:41 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:42 +msgid "Current password" +msgstr "" + +#: templates/personal.php:44 +msgid "New password" +msgstr "" + +#: templates/personal.php:46 +msgid "Change password" +msgstr "" + +#: templates/personal.php:58 templates/users.php:88 +msgid "Full Name" +msgstr "" + +#: templates/personal.php:73 +msgid "Email" +msgstr "" + +#: templates/personal.php:75 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:76 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:86 +msgid "Profile picture" +msgstr "" + +#: templates/personal.php:91 +msgid "Upload new" +msgstr "" + +#: templates/personal.php:93 +msgid "Select new from Files" +msgstr "" + +#: templates/personal.php:94 +msgid "Remove image" +msgstr "" + +#: templates/personal.php:95 +msgid "Either png or jpg. Ideally square but you will be able to crop it." +msgstr "" + +#: templates/personal.php:97 +msgid "Your avatar is provided by your original account." +msgstr "" + +#: templates/personal.php:101 +msgid "Abort" +msgstr "" + +#: templates/personal.php:102 +msgid "Choose as profile image" +msgstr "" + +#: templates/personal.php:110 templates/personal.php:111 +msgid "Language" +msgstr "" + +#: templates/personal.php:130 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:137 +msgid "WebDAV" +msgstr "" + +#: templates/personal.php:139 +#, php-format +msgid "" +"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via " +"WebDAV</a>" +msgstr "" + +#: templates/personal.php:150 +msgid "Encryption" +msgstr "" + +#: templates/personal.php:152 +msgid "The encryption app is no longer enabled, please decrypt all your files" +msgstr "" + +#: templates/personal.php:158 +msgid "Log-in password" +msgstr "" + +#: templates/personal.php:163 +msgid "Decrypt all Files" +msgstr "" + +#: templates/users.php:21 +msgid "Login Name" +msgstr "" + +#: templates/users.php:30 +msgid "Create" +msgstr "" + +#: templates/users.php:36 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:37 templates/users.php:38 +msgid "" +"Enter the recovery password in order to recover the users files during " +"password change" +msgstr "" + +#: templates/users.php:42 +msgid "Default Storage" +msgstr "" + +#: templates/users.php:44 templates/users.php:139 +msgid "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" +msgstr "" + +#: templates/users.php:48 templates/users.php:148 +msgid "Unlimited" +msgstr "" + +#: templates/users.php:66 templates/users.php:163 +msgid "Other" +msgstr "" + +#: templates/users.php:87 +msgid "Username" +msgstr "" + +#: templates/users.php:94 +msgid "Storage" +msgstr "" + +#: templates/users.php:108 +msgid "change full name" +msgstr "" + +#: templates/users.php:112 +msgid "set new password" +msgstr "" + +#: templates/users.php:143 +msgid "Default" +msgstr "" diff --git a/l10n/ur/user_ldap.po b/l10n/ur/user_ldap.po new file mode 100644 index 00000000000..8d5790eea9f --- /dev/null +++ b/l10n/ur/user_ldap.po @@ -0,0 +1,513 @@ +# 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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: 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:39 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:42 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:46 +msgid "" +"The configuration is invalid. Please have a look at the logs for further " +"details." +msgstr "" + +#: ajax/wizard.php:32 +msgid "No action specified" +msgstr "" + +#: ajax/wizard.php:38 +msgid "No configuration specified" +msgstr "" + +#: ajax/wizard.php:81 +msgid "No data specified" +msgstr "" + +#: ajax/wizard.php:89 +#, php-format +msgid " Could not set configuration %s" +msgstr "" + +#: js/settings.js:67 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:83 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:84 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:99 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:127 +msgid "mappings cleared" +msgstr "" + +#: js/settings.js:128 +msgid "Success" +msgstr "" + +#: js/settings.js:133 +msgid "Error" +msgstr "" + +#: js/settings.js:837 +msgid "Configuration OK" +msgstr "" + +#: js/settings.js:846 +msgid "Configuration incorrect" +msgstr "" + +#: js/settings.js:855 +msgid "Configuration incomplete" +msgstr "" + +#: js/settings.js:872 js/settings.js:881 +msgid "Select groups" +msgstr "" + +#: js/settings.js:875 js/settings.js:884 +msgid "Select object classes" +msgstr "" + +#: js/settings.js:878 +msgid "Select attributes" +msgstr "" + +#: js/settings.js:905 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:912 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:921 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:922 +msgid "Confirm Deletion" +msgstr "" + +#: lib/wizard.php:79 lib/wizard.php:93 +#, php-format +msgid "%s group found" +msgid_plural "%s groups found" +msgstr[0] "" +msgstr[1] "" + +#: lib/wizard.php:122 +#, php-format +msgid "%s user found" +msgid_plural "%s users found" +msgstr[0] "" +msgstr[1] "" + +#: lib/wizard.php:778 lib/wizard.php:790 +msgid "Invalid Host" +msgstr "" + +#: lib/wizard.php:951 +msgid "Could not find the desired feature" +msgstr "" + +#: templates/part.settingcontrols.php:2 +msgid "Save" +msgstr "" + +#: templates/part.settingcontrols.php:4 +msgid "Test Configuration" +msgstr "" + +#: templates/part.settingcontrols.php:10 templates/part.wizardcontrols.php:14 +msgid "Help" +msgstr "" + +#: templates/part.wizard-groupfilter.php:4 +#, php-format +msgid "Limit the access to %s to groups meeting this criteria:" +msgstr "" + +#: templates/part.wizard-groupfilter.php:8 +#: templates/part.wizard-userfilter.php:8 +msgid "only those object classes:" +msgstr "" + +#: templates/part.wizard-groupfilter.php:17 +#: templates/part.wizard-userfilter.php:17 +msgid "only from those groups:" +msgstr "" + +#: templates/part.wizard-groupfilter.php:25 +#: templates/part.wizard-loginfilter.php:32 +#: templates/part.wizard-userfilter.php:25 +msgid "Edit raw filter instead" +msgstr "" + +#: templates/part.wizard-groupfilter.php:30 +#: templates/part.wizard-loginfilter.php:37 +#: templates/part.wizard-userfilter.php:30 +msgid "Raw LDAP filter" +msgstr "" + +#: templates/part.wizard-groupfilter.php:31 +#, php-format +msgid "" +"The filter specifies which LDAP groups shall have access to the %s instance." +msgstr "" + +#: templates/part.wizard-groupfilter.php:38 +msgid "groups found" +msgstr "" + +#: templates/part.wizard-loginfilter.php:4 +msgid "What attribute shall be used as login name:" +msgstr "" + +#: templates/part.wizard-loginfilter.php:8 +msgid "LDAP Username:" +msgstr "" + +#: templates/part.wizard-loginfilter.php:16 +msgid "LDAP Email Address:" +msgstr "" + +#: templates/part.wizard-loginfilter.php:24 +msgid "Other Attributes:" +msgstr "" + +#: templates/part.wizard-loginfilter.php:38 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action. Example: \"uid=%%uid\"" +msgstr "" + +#: templates/part.wizard-server.php:18 +msgid "Add Server Configuration" +msgstr "" + +#: templates/part.wizard-server.php:30 +msgid "Host" +msgstr "" + +#: templates/part.wizard-server.php:31 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/part.wizard-server.php:36 +msgid "Port" +msgstr "" + +#: templates/part.wizard-server.php:44 +msgid "User DN" +msgstr "" + +#: templates/part.wizard-server.php:45 +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/part.wizard-server.php:52 +msgid "Password" +msgstr "" + +#: templates/part.wizard-server.php:53 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/part.wizard-server.php:60 +msgid "One Base DN per line" +msgstr "" + +#: templates/part.wizard-server.php:61 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/part.wizard-userfilter.php:4 +#, php-format +msgid "Limit the access to %s to users meeting this criteria:" +msgstr "" + +#: templates/part.wizard-userfilter.php:31 +#, php-format +msgid "" +"The filter specifies which LDAP users shall have access to the %s instance." +msgstr "" + +#: templates/part.wizard-userfilter.php:38 +msgid "users found" +msgstr "" + +#: templates/part.wizardcontrols.php:5 +msgid "Back" +msgstr "" + +#: templates/part.wizardcontrols.php:8 +msgid "Continue" +msgstr "" + +#: templates/settings.php:11 +msgid "" +"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behavior. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:14 +msgid "" +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:20 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:22 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:22 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:23 +msgid "Backup (Replica) Host" +msgstr "" + +#: templates/settings.php:23 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." +msgstr "" + +#: templates/settings.php:24 +msgid "Backup (Replica) Port" +msgstr "" + +#: templates/settings.php:25 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:25 +msgid "Only connect to the replica server." +msgstr "" + +#: templates/settings.php:26 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:27 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:27 +#, php-format +msgid "" +"Not recommended, use it for testing only! If connection only works with this" +" option, import the LDAP server's SSL certificate in your %s server." +msgstr "" + +#: templates/settings.php:28 +msgid "Cache Time-To-Live" +msgstr "" + +#: templates/settings.php:28 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:30 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:32 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:32 +msgid "The LDAP attribute to use to generate the user's display name." +msgstr "" + +#: templates/settings.php:33 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:33 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:34 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:34 templates/settings.php:37 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:35 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:35 +msgid "The LDAP attribute to use to generate the groups's display name." +msgstr "" + +#: templates/settings.php:36 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:36 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:37 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:38 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:40 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:42 +msgid "Quota Field" +msgstr "" + +#: templates/settings.php:43 +msgid "Quota Default" +msgstr "" + +#: templates/settings.php:43 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:44 +msgid "Email Field" +msgstr "" + +#: templates/settings.php:45 +msgid "User Home Folder Naming Rule" +msgstr "" + +#: templates/settings.php:45 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:51 +msgid "Internal Username" +msgstr "" + +#: templates/settings.php:52 +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. It is also" +" a part of remote URLs, for instance for all *DAV services. With this " +"setting, the default behavior can be overridden. To achieve a similar " +"behavior as before ownCloud 5 enter the user display name attribute in the " +"following field. Leave it empty for default behavior. Changes will have " +"effect only on newly mapped (added) LDAP users." +msgstr "" + +#: templates/settings.php:53 +msgid "Internal Username Attribute:" +msgstr "" + +#: templates/settings.php:54 +msgid "Override UUID detection" +msgstr "" + +#: templates/settings.php:55 +msgid "" +"By default, the UUID attribute is automatically detected. 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 behavior. " +"Changes will have effect only on newly mapped (added) LDAP users and groups." +msgstr "" + +#: templates/settings.php:56 +msgid "UUID Attribute for Users:" +msgstr "" + +#: templates/settings.php:57 +msgid "UUID Attribute for Groups:" +msgstr "" + +#: templates/settings.php:58 +msgid "Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:59 +msgid "" +"Usernames are used 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 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. The internal username is used all over." +" Clearing the mappings will have leftovers everywhere. Clearing the mappings" +" is not configuration sensitive, it affects all LDAP configurations! Never " +"clear the mappings in a production environment, only in a testing or " +"experimental stage." +msgstr "" + +#: templates/settings.php:60 +msgid "Clear Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:60 +msgid "Clear Groupname-LDAP Group Mapping" +msgstr "" diff --git a/l10n/ur/user_webdavauth.po b/l10n/ur/user_webdavauth.po new file mode 100644 index 00000000000..8db54c86db4 --- /dev/null +++ b/l10n/ur/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: translations@owncloud.org\n" +"POT-Creation-Date: 2014-01-07 01:55-0500\n" +"PO-Revision-Date: 2014-01-06 23:45+0000\n" +"Last-Translator: I Robot\n" +"Language-Team: Urdu (http://www.transifex.com/projects/p/owncloud/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "Address: " +msgstr "" + +#: templates/settings.php:7 +msgid "" +"The user credentials will be sent to this address. 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/lib/base.php b/lib/base.php index d3e483f4948..a8e9e901847 100644 --- a/lib/base.php +++ b/lib/base.php @@ -410,8 +410,6 @@ class OC { self::$loader->registerPrefix('Doctrine\\DBAL', 'doctrine/dbal/lib'); self::$loader->registerPrefix('Symfony\\Component\\Routing', 'symfony/routing'); self::$loader->registerPrefix('Symfony\\Component\\Console', 'symfony/console'); - self::$loader->registerPrefix('Sabre\\VObject', '3rdparty'); - self::$loader->registerPrefix('Sabre_', '3rdparty'); self::$loader->registerPrefix('Patchwork', '3rdparty'); spl_autoload_register(array(self::$loader, 'load')); @@ -479,6 +477,12 @@ class OC { } OC_Util::isSetLocaleWorking(); + // setup 3rdparty autoloader + $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; + if (file_exists($vendorAutoLoad)) { + require_once $vendorAutoLoad; + } + // set debug mode if an xdebug session is active if (!defined('DEBUG') || !DEBUG) { if (isset($_COOKIE['XDEBUG_SESSION'])) { diff --git a/lib/l10n/ur.php b/lib/l10n/ur.php new file mode 100644 index 00000000000..15f78e0bce6 --- /dev/null +++ b/lib/l10n/ur.php @@ -0,0 +1,8 @@ +<?php +$TRANSLATIONS = array( +"_%n minute ago_::_%n minutes ago_" => array("",""), +"_%n hour ago_::_%n hours ago_" => array("",""), +"_%n day go_::_%n days ago_" => array("",""), +"_%n month ago_::_%n months ago_" => array("","") +); +$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 295575f0af6..53524ec9e54 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -64,7 +64,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D } // mark file as partial while uploading (ignored by the scanner) - $partpath = $this->path . '.part'; + $partpath = $this->path . '.ocTransferId' . rand() . '.part'; // if file is located in /Shared we write the part file to the users // root folder because we can't create new files in /shared diff --git a/lib/private/files.php b/lib/private/files.php index 6ffa14c0d91..e6c81d58bd2 100644 --- a/lib/private/files.php +++ b/lib/private/files.php @@ -115,12 +115,7 @@ class OC_Files { } OC_Util::obEnd(); if ($zip or \OC\Files\Filesystem::isReadable($filename)) { - if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) { - header( 'Content-Disposition: attachment; filename="' . rawurlencode($name) . '"' ); - } else { - header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($name) - . '; filename="' . rawurlencode($name) . '"' ); - } + OC_Response::setContentDispositionHeader($name, 'attachment'); header('Content-Transfer-Encoding: binary'); OC_Response::disableCaching(); if ($zip) { diff --git a/lib/private/files/cache/homecache.php b/lib/private/files/cache/homecache.php index 18dfbfe3191..71bb944da71 100644 --- a/lib/private/files/cache/homecache.php +++ b/lib/private/files/cache/homecache.php @@ -16,7 +16,7 @@ class HomeCache extends Cache { * @return int */ public function calculateFolderSize($path) { - if ($path !== '/' and $path !== '') { + if ($path !== '/' and $path !== '' and $path !== 'files') { return parent::calculateFolderSize($path); } diff --git a/lib/private/files/view.php b/lib/private/files/view.php index ac45a881331..8893911ed5d 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -336,6 +336,19 @@ class View { } public function unlink($path) { + if ($path === '' || $path === '/') { + // do not allow deleting the root + return false; + } + $postFix = (substr($path, -1, 1) === '/') ? '/' : ''; + $absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path)); + list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); + if (!$internalPath || $internalPath === '' || $internalPath === '/') { + // do not allow deleting the storage's root / the mount point + // because for some storages it might delete the whole contents + // but isn't supposed to work that way + return false; + } return $this->basicOperation('unlink', $path, array('delete')); } diff --git a/lib/private/helper.php b/lib/private/helper.php index 4fe3097af26..1c8d01c141f 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -858,11 +858,13 @@ class OC_Helper { if (!function_exists($function_name)) { return false; } - $disabled = explode(', ', ini_get('disable_functions')); + $disabled = explode(',', ini_get('disable_functions')); + $disabled = array_map('trim', $disabled); if (in_array($function_name, $disabled)) { return false; } - $disabled = explode(', ', ini_get('suhosin.executor.func.blacklist')); + $disabled = explode(',', ini_get('suhosin.executor.func.blacklist')); + $disabled = array_map('trim', $disabled); if (in_array($function_name, $disabled)) { return false; } diff --git a/lib/private/mimetypes.list.php b/lib/private/mimetypes.list.php index 740982910e0..08228336966 100644 --- a/lib/private/mimetypes.list.php +++ b/lib/private/mimetypes.list.php @@ -66,6 +66,7 @@ return array( 'xlsx'=>'application/msexcel', 'php'=>'application/x-php', 'exe'=>'application/x-ms-dos-executable', + 'msi'=>'application/x-msi', 'pl'=>'application/x-pearl', 'py'=>'application/x-python', 'blend'=>'application/x-blender', @@ -97,8 +98,6 @@ return array( 'ai' => 'application/illustrator', 'epub' => 'application/epub+zip', 'mobi' => 'application/x-mobipocket-ebook', - 'exe' => 'application', - 'msi' => 'application', 'md' => 'text/markdown', 'markdown' => 'text/markdown', 'mdown' => 'text/markdown', diff --git a/lib/private/preview/movies.php b/lib/private/preview/movies.php index ac771deb413..71cd3bae057 100644 --- a/lib/private/preview/movies.php +++ b/lib/private/preview/movies.php @@ -18,7 +18,7 @@ function findBinaryPath($program) { // movie preview is currently not supported on Windows if (!\OC_Util::runningOnWindows()) { - $isExecEnabled = !in_array('exec', explode(', ', ini_get('disable_functions'))); + $isExecEnabled = \OC_Helper::is_function_enabled('exec'); $ffmpegBinary = null; $avconvBinary = null; diff --git a/lib/private/preview/office.php b/lib/private/preview/office.php index 318ab51f851..7a4826c76ec 100644 --- a/lib/private/preview/office.php +++ b/lib/private/preview/office.php @@ -7,7 +7,7 @@ */ //both, libreoffice backend and php fallback, need imagick if (extension_loaded('imagick')) { - $isShellExecEnabled = !in_array('shell_exec', explode(', ', ini_get('disable_functions'))); + $isShellExecEnabled = \OC_Helper::is_function_enabled('shell_exec'); // LibreOffice preview is currently not supported on Windows if (!\OC_Util::runningOnWindows()) { diff --git a/lib/private/request.php b/lib/private/request.php index b2afda35922..d9d5ae08e28 100755 --- a/lib/private/request.php +++ b/lib/private/request.php @@ -7,6 +7,11 @@ */ class OC_Request { + + const USER_AGENT_IE = '/MSIE/'; + // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent + const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#'; + /** * @brief Check overwrite condition * @param string $type @@ -210,4 +215,22 @@ class OC_Request { return false; } } + + /** + * Checks whether the user agent matches a given regex + * @param string|array $agent agent name or array of agent names + * @return boolean true if at least one of the given agent matches, + * false otherwise + */ + static public function isUserAgent($agent) { + if (!is_array($agent)) { + $agent = array($agent); + } + foreach ($agent as $regex) { + if (preg_match($regex, $_SERVER['HTTP_USER_AGENT'])) { + return true; + } + } + return false; + } } diff --git a/lib/private/response.php b/lib/private/response.php index 674176d078b..04746437347 100644 --- a/lib/private/response.php +++ b/lib/private/response.php @@ -148,6 +148,20 @@ class OC_Response { } /** + * Sets the content disposition header (with possible workarounds) + * @param string $filename file name + * @param string $type disposition type, either 'attachment' or 'inline' + */ + static public function setContentDispositionHeader( $filename, $type = 'attachment' ) { + if (OC_Request::isUserAgent(array(OC_Request::USER_AGENT_IE, OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME))) { + header( 'Content-Disposition: ' . rawurlencode($type) . '; filename="' . rawurlencode( $filename ) . '"' ); + } else { + header( 'Content-Disposition: ' . rawurlencode($type) . '; filename*=UTF-8\'\'' . rawurlencode( $filename ) + . '; filename="' . rawurlencode( $filename ) . '"' ); + } + } + + /** * @brief Send file as response, checking and setting caching headers * @param $filepath of file to send */ diff --git a/lib/private/server.php b/lib/private/server.php index 6b034a5be9f..c9e593ec2ed 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -128,7 +128,9 @@ class Server extends SimpleContainer implements IServerContainer { return new \OC\L10N\Factory(); }); $this->registerService('URLGenerator', function($c) { - return new \OC\URLGenerator(); + /** @var $c SimpleContainer */ + $config = $c->query('AllConfig'); + return new \OC\URLGenerator($config); }); $this->registerService('AppHelper', function($c) { return new \OC\AppHelper(); @@ -261,7 +263,7 @@ class Server extends SimpleContainer implements IServerContainer { } /** - * @return \OC\Config + * @return \OCP\IConfig */ function getConfig() { return $this->query('AllConfig'); diff --git a/lib/private/setup.php b/lib/private/setup.php index b5c530a091f..5232398d1d7 100644 --- a/lib/private/setup.php +++ b/lib/private/setup.php @@ -159,6 +159,9 @@ class OC_Setup { $content.= "</IfModule>\n"; $content.= "AddDefaultCharset utf-8\n"; $content.= "Options -Indexes\n"; + $content.= "<IfModule pagespeed_module>\n"; + $content.= "ModPagespeed Off\n"; + $content.= "</IfModule>\n"; @file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it self::protectDataDirectory(); diff --git a/lib/private/template/cssresourcelocator.php b/lib/private/template/cssresourcelocator.php index 8e7831ca549..e26daa25827 100644 --- a/lib/private/template/cssresourcelocator.php +++ b/lib/private/template/cssresourcelocator.php @@ -22,7 +22,7 @@ class CSSResourceLocator extends ResourceLocator { $app = substr($style, 0, strpos($style, '/')); $style = substr($style, strpos($style, '/')+1); $app_path = \OC_App::getAppPath($app); - $app_url = $this->webroot . '/index.php/apps/' . $app; + $app_url = \OC_App::getAppWebPath($app); if ($this->appendIfExist($app_path, $style.$this->form_factor.'.css', $app_url) || $this->appendIfExist($app_path, $style.'.css', $app_url) ) { diff --git a/lib/private/urlgenerator.php b/lib/private/urlgenerator.php index 7795011fd06..4e3c1109000 100644 --- a/lib/private/urlgenerator.php +++ b/lib/private/urlgenerator.php @@ -15,6 +15,19 @@ use RuntimeException; * Class to generate URLs */ class URLGenerator implements IURLGenerator { + + /** + * @var \OCP\IConfig + */ + private $config; + + /** + * @param \OCP\IConfig $config + */ + public function __construct($config) { + $this->config = $config; + } + /** * @brief Creates an url using a defined route * @param $route @@ -41,12 +54,18 @@ class URLGenerator implements IURLGenerator { * Returns a url to the given app and file. */ public function linkTo( $app, $file, $args = array() ) { + $frontControllerActive=($this->config->getSystemValue('front_controller_active', 'false') == 'true'); + if( $app != '' ) { $app_path = \OC_App::getAppPath($app); // Check if the app is in the app folder if ($app_path && file_exists($app_path . '/' . $file)) { if (substr($file, -3) == 'php' || substr($file, -3) == 'css') { + $urlLinkTo = \OC::$WEBROOT . '/index.php/apps/' . $app; + if ($frontControllerActive) { + $urlLinkTo = \OC::$WEBROOT . '/apps/' . $app; + } $urlLinkTo .= ($file != 'index.php') ? '/' . $file : ''; } else { $urlLinkTo = \OC_App::getAppWebPath($app) . '/' . $file; @@ -58,7 +77,11 @@ class URLGenerator implements IURLGenerator { if (file_exists(\OC::$SERVERROOT . '/core/' . $file)) { $urlLinkTo = \OC::$WEBROOT . '/core/' . $file; } else { - $urlLinkTo = \OC::$WEBROOT . '/' . $file; + if ($frontControllerActive && $file === 'index.php') { + $urlLinkTo = \OC::$WEBROOT; + } else { + $urlLinkTo = \OC::$WEBROOT . '/' . $file; + } } } diff --git a/lib/private/user/backend.php b/lib/private/user/backend.php index 02c93d13bdf..f4e5618e04a 100644 --- a/lib/private/user/backend.php +++ b/lib/private/user/backend.php @@ -31,13 +31,15 @@ define('OC_USER_BACKEND_NOT_IMPLEMENTED', -501); /** * actions that user backends can define */ -define('OC_USER_BACKEND_CREATE_USER', 0x0000001); -define('OC_USER_BACKEND_SET_PASSWORD', 0x0000010); -define('OC_USER_BACKEND_CHECK_PASSWORD', 0x0000100); -define('OC_USER_BACKEND_GET_HOME', 0x0001000); -define('OC_USER_BACKEND_GET_DISPLAYNAME', 0x0010000); -define('OC_USER_BACKEND_SET_DISPLAYNAME', 0x0100000); -define('OC_USER_BACKEND_PROVIDE_AVATAR', 0x1000000); +define('OC_USER_BACKEND_CREATE_USER', 0x00000001); +define('OC_USER_BACKEND_SET_PASSWORD', 0x00000010); +define('OC_USER_BACKEND_CHECK_PASSWORD', 0x00000100); +define('OC_USER_BACKEND_GET_HOME', 0x00001000); +define('OC_USER_BACKEND_GET_DISPLAYNAME', 0x00010000); +define('OC_USER_BACKEND_SET_DISPLAYNAME', 0x00100000); +define('OC_USER_BACKEND_PROVIDE_AVATAR', 0x01000000); +define('OC_USER_BACKEND_COUNT_USERS', 0x10000000); +//more actions cannot be defined without breaking 32bit platforms! /** * Abstract base class for user management. Provides methods for querying backend @@ -55,6 +57,7 @@ abstract class OC_User_Backend implements OC_User_Interface { OC_USER_BACKEND_GET_DISPLAYNAME => 'getDisplayName', OC_USER_BACKEND_SET_DISPLAYNAME => 'setDisplayName', OC_USER_BACKEND_PROVIDE_AVATAR => 'canChangeAvatar', + OC_USER_BACKEND_COUNT_USERS => 'countUsers', ); /** diff --git a/lib/private/user/database.php b/lib/private/user/database.php index c99db3b27ca..1a63755b980 100644 --- a/lib/private/user/database.php +++ b/lib/private/user/database.php @@ -253,4 +253,19 @@ class OC_User_Database extends OC_User_Backend { return true; } + /** + * counts the users in the database + * + * @return int | bool + */ + public function countUsers() { + $query = OC_DB::prepare('SELECT COUNT(*) FROM `*PREFIX*users`'); + $result = $query->execute(); + if (OC_DB::isError($result)) { + OC_Log::write('core', OC_DB::getErrorMessage($result), OC_Log::ERROR); + return false; + } + return $result->fetchOne(); + } + } diff --git a/lib/private/user/dummy.php b/lib/private/user/dummy.php index 52be7edfa75..fc15a630cf3 100644 --- a/lib/private/user/dummy.php +++ b/lib/private/user/dummy.php @@ -123,4 +123,13 @@ class OC_User_Dummy extends OC_User_Backend { public function hasUserListings() { return true; } + + /** + * counts the users in the database + * + * @return int | bool + */ + public function countUsers() { + return 0; + } } diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index cf83a75ba25..90970ef9963 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -270,4 +270,26 @@ class Manager extends PublicEmitter { } return false; } + + /** + * returns how many users per backend exist (if supported by backend) + * + * @return array with backend class as key and count number as value + */ + public function countUsers() { + $userCountStatistics = array(); + foreach ($this->backends as $backend) { + if ($backend->implementsActions(\OC_USER_BACKEND_COUNT_USERS)) { + $backendusers = $backend->countUsers(); + if($backendusers !== false) { + if(isset($userCountStatistics[get_class($backend)])) { + $userCountStatistics[get_class($backend)] += $backendusers; + } else { + $userCountStatistics[get_class($backend)] = $backendusers; + } + } + } + } + return $userCountStatistics; + } } diff --git a/lib/public/response.php b/lib/public/response.php index 2ca0a0c9fa4..24d3c81d628 100644 --- a/lib/public/response.php +++ b/lib/public/response.php @@ -55,6 +55,15 @@ class Response { } /** + * Sets the content disposition header (with possible workarounds) + * @param string $filename file name + * @param string $type disposition type, either 'attachment' or 'inline' + */ + static public function setContentDispositionHeader( $filename, $type = 'attachment' ) { + \OC_Response::setContentDispositionHeader( $filename, $type ); + } + + /** * Disable browser caching * @see enableCaching with cache_time = 0 */ diff --git a/tests/enable_all.php b/tests/enable_all.php index 43ee16a72f8..4f2fe5cdb60 100644 --- a/tests/enable_all.php +++ b/tests/enable_all.php @@ -10,6 +10,7 @@ require_once __DIR__.'/../lib/base.php'; OC_App::enable('files_sharing'); OC_App::enable('files_encryption'); +OC_App::enable('user_ldap'); OC_App::enable('calendar'); OC_App::enable('contacts'); OC_App::enable('apptemplateadvanced'); diff --git a/tests/lib/files/cache/homecache.php b/tests/lib/files/cache/homecache.php index 2fa7f1ba92e..87fd0dba4c6 100644 --- a/tests/lib/files/cache/homecache.php +++ b/tests/lib/files/cache/homecache.php @@ -62,33 +62,39 @@ class HomeCache extends \PHPUnit_Framework_TestCase { } /** - * Tests that the root folder size calculation ignores the subdirs that have an unknown - * size. This makes sure that quota calculation still works as it's based on the root - * folder size. + * Tests that the root and files folder size calculation ignores the subdirs + * that have an unknown size. This makes sure that quota calculation still + * works as it's based on the "files" folder size. */ public function testRootFolderSizeIgnoresUnknownUpdate() { - $dir1 = 'knownsize'; - $dir2 = 'unknownsize'; + $dir1 = 'files/knownsize'; + $dir2 = 'files/unknownsize'; $fileData = array(); $fileData[''] = array('size' => -1, 'mtime' => 20, 'mimetype' => 'httpd/unix-directory'); + $fileData['files'] = array('size' => -1, 'mtime' => 20, 'mimetype' => 'httpd/unix-directory'); $fileData[$dir1] = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'httpd/unix-directory'); $fileData[$dir2] = array('size' => -1, 'mtime' => 25, 'mimetype' => 'httpd/unix-directory'); $this->cache->put('', $fileData['']); + $this->cache->put('files', $fileData['files']); $this->cache->put($dir1, $fileData[$dir1]); $this->cache->put($dir2, $fileData[$dir2]); + $this->assertTrue($this->cache->inCache('files')); $this->assertTrue($this->cache->inCache($dir1)); $this->assertTrue($this->cache->inCache($dir2)); - // check that root size ignored the unknown sizes + // check that files and root size ignored the unknown sizes + $this->assertEquals(1000, $this->cache->calculateFolderSize('files')); $this->assertEquals(1000, $this->cache->calculateFolderSize('')); // clean up $this->cache->remove(''); + $this->cache->remove('files'); $this->cache->remove($dir1); $this->cache->remove($dir2); + $this->assertFalse($this->cache->inCache('files')); $this->assertFalse($this->cache->inCache($dir1)); $this->assertFalse($this->cache->inCache($dir2)); } diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index b59cef9f0da..76a7fd5f1ca 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -309,6 +309,48 @@ class View extends \PHPUnit_Framework_TestCase { /** * @medium */ + function testUnlink() { + $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->file_put_contents('/foo.txt', 'asd'); + $rootView->file_put_contents('/substorage/bar.txt', 'asd'); + + $this->assertTrue($rootView->file_exists('foo.txt')); + $this->assertTrue($rootView->file_exists('substorage/bar.txt')); + + $this->assertTrue($rootView->unlink('foo.txt')); + $this->assertTrue($rootView->unlink('substorage/bar.txt')); + + $this->assertFalse($rootView->file_exists('foo.txt')); + $this->assertFalse($rootView->file_exists('substorage/bar.txt')); + } + + /** + * @medium + */ + function testUnlinkRootMustFail() { + $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->file_put_contents('/foo.txt', 'asd'); + $rootView->file_put_contents('/substorage/bar.txt', 'asd'); + + $this->assertFalse($rootView->unlink('')); + $this->assertFalse($rootView->unlink('/')); + $this->assertFalse($rootView->unlink('substorage')); + $this->assertFalse($rootView->unlink('/substorage')); + } + + /** + * @medium + */ function testTouch() { $storage = $this->getTestStorage(true, '\Test\Files\TemporaryNoTouch'); diff --git a/tests/lib/request.php b/tests/lib/request.php index 090cebc9231..c6401a57144 100644 --- a/tests/lib/request.php +++ b/tests/lib/request.php @@ -70,4 +70,54 @@ class Test_Request extends PHPUnit_Framework_TestCase { array('/oc/core1', '/oc/core/index.php'), ); } + + /** + * @dataProvider userAgentProvider + */ + public function testUserAgent($testAgent, $userAgent, $matches) { + $_SERVER['HTTP_USER_AGENT'] = $testAgent; + $this->assertEquals($matches, OC_Request::isUserAgent($userAgent)); + } + + function userAgentProvider() { + return array( + array( + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)', + OC_Request::USER_AGENT_IE, + true + ), + array( + 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0', + OC_Request::USER_AGENT_IE, + false + ), + array( + 'Mozilla/5.0 (Linux; Android 4.4; Nexus 4 Build/KRT16S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36', + OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME, + true + ), + array( + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)', + OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME, + false + ), + // test two values + array( + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)', + array( + OC_Request::USER_AGENT_IE, + OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME, + ), + true + ), + array( + 'Mozilla/5.0 (Linux; Android 4.4; Nexus 4 Build/KRT16S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36', + array( + OC_Request::USER_AGENT_IE, + OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME, + ), + true + ), + ); + } } diff --git a/tests/lib/user/manager.php b/tests/lib/user/manager.php index 00901dd4115..ad1ac9e12f2 100644 --- a/tests/lib/user/manager.php +++ b/tests/lib/user/manager.php @@ -346,4 +346,76 @@ class Manager extends \PHPUnit_Framework_TestCase { $manager->createUser('foo', 'bar'); } + + public function testCountUsersNoBackend() { + $manager = new \OC\User\Manager(); + + $result = $manager->countUsers(); + $this->assertTrue(is_array($result)); + $this->assertTrue(empty($result)); + } + + public function testCountUsersOneBackend() { + /** + * @var \OC_User_Dummy | \PHPUnit_Framework_MockObject_MockObject $backend + */ + $backend = $this->getMock('\OC_User_Dummy'); + $backend->expects($this->once()) + ->method('countUsers') + ->will($this->returnValue(7)); + + $backend->expects($this->once()) + ->method('implementsActions') + ->with(\OC_USER_BACKEND_COUNT_USERS) + ->will($this->returnValue(true)); + + $manager = new \OC\User\Manager(); + $manager->registerBackend($backend); + + $result = $manager->countUsers(); + $keys = array_keys($result); + $this->assertTrue(strpos($keys[0], 'Mock_OC_User_Dummy') !== false); + + $users = array_shift($result); + $this->assertEquals(7, $users); + } + + public function testCountUsersTwoBackends() { + /** + * @var \OC_User_Dummy | \PHPUnit_Framework_MockObject_MockObject $backend + */ + $backend1 = $this->getMock('\OC_User_Dummy'); + $backend1->expects($this->once()) + ->method('countUsers') + ->will($this->returnValue(7)); + + $backend1->expects($this->once()) + ->method('implementsActions') + ->with(\OC_USER_BACKEND_COUNT_USERS) + ->will($this->returnValue(true)); + + $backend2 = $this->getMock('\OC_User_Dummy'); + $backend2->expects($this->once()) + ->method('countUsers') + ->will($this->returnValue(16)); + + $backend2->expects($this->once()) + ->method('implementsActions') + ->with(\OC_USER_BACKEND_COUNT_USERS) + ->will($this->returnValue(true)); + + $manager = new \OC\User\Manager(); + $manager->registerBackend($backend1); + $manager->registerBackend($backend2); + + $result = $manager->countUsers(); + //because the backends have the same class name, only one value expected + $this->assertEquals(1, count($result)); + $keys = array_keys($result); + $this->assertTrue(strpos($keys[0], 'Mock_OC_User_Dummy') !== false); + + $users = array_shift($result); + //users from backends shall be summed up + $this->assertEquals(7+16, $users); + } } |