diff options
70 files changed, 921 insertions, 300 deletions
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index e4bfcb4e9ee..aa5a2f8c68a 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -8,6 +8,8 @@ namespace OCA\Files; +use OCP\Files\FileInfo; + /** * Helper class for manipulating file information */ @@ -58,7 +60,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function compareFileNames($a, $b) { + public static function compareFileNames(FileInfo $a, FileInfo $b) { $aType = $a->getType(); $bType = $b->getType(); if ($aType === 'dir' and $bType !== 'dir') { @@ -77,7 +79,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function compareTimestamp($a, $b) { + public static function compareTimestamp(FileInfo $a, FileInfo $b) { $aTime = $a->getMTime(); $bTime = $b->getMTime(); return $aTime - $bTime; @@ -90,7 +92,7 @@ class Helper * @param \OCP\Files\FileInfo $b file * @return int -1 if $a must come before $b, 1 otherwise */ - public static function compareSize($a, $b) { + public static function compareSize(FileInfo $a, FileInfo $b) { $aSize = $a->getSize(); $bSize = $b->getSize(); return ($aSize < $bSize) ? -1 : 1; @@ -102,7 +104,7 @@ class Helper * @param \OCP\Files\FileInfo $i * @return array formatted file info */ - public static function formatFileInfo($i) { + public static function formatFileInfo(FileInfo $i) { $entry = array(); $entry['id'] = $i['fileid']; @@ -147,6 +149,7 @@ class Helper /** * Format file info for JSON * @param \OCP\Files\FileInfo[] $fileInfos file infos + * @return array */ public static function formatFileInfos($fileInfos) { $files = array(); diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 6f4eb4aaf3b..53c380ab2b3 100644 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -89,7 +89,7 @@ class Helper { * @param string $password * @return bool */ - public static function setupUser($util, $password) { + public static function setupUser(Util $util, $password) { // Check files_encryption infrastructure is ready for action if (!$util->ready()) { @@ -333,7 +333,7 @@ class Helper { * @param string $path * @param \OC\Files\View $view */ - public static function mkdirr($path, $view) { + public static function mkdirr($path, \OC\Files\View $view) { $dirname = \OC\Files\Filesystem::normalizePath(dirname($path)); $dirParts = explode('/', $dirname); $dir = ""; @@ -348,8 +348,10 @@ class Helper { /** * redirect to a error page * @param Session $session + * @param int|null $errorCode + * @throws \Exception */ - public static function redirectToErrorPage($session, $errorCode = null) { + public static function redirectToErrorPage(Session $session, $errorCode = null) { if ($errorCode === null) { $init = $session->getInitialized(); @@ -439,7 +441,7 @@ class Helper { * @param \OC\Files\View $rootView root view, relative to data/ * @return array list of share key files, path relative to data/$user */ - public static function findShareKeys($filePath, $shareKeyPath, $rootView) { + public static function findShareKeys($filePath, $shareKeyPath, \OC\Files\View $rootView) { $result = array(); $user = \OCP\User::getUser(); diff --git a/apps/files_external/l10n/fr.php b/apps/files_external/l10n/fr.php index 405bc4f680c..67f2f321bfb 100644 --- a/apps/files_external/l10n/fr.php +++ b/apps/files_external/l10n/fr.php @@ -1,6 +1,6 @@ <?php $TRANSLATIONS = array( -"Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." => "La récupération des jetons d’authentification a échoué. Veuillez vérifier votre clef Dropbox ainsi que le mot de passe.", +"Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." => "La récupération des jetons d’authentification a échoué. Veuillez vérifier votre clé d'application Dropbox ainsi que le mot de passe.", "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." => "La requête d’accès aux jetons d’authentification a échoué. Veuillez vérifier votre App-Key Dropbox ainsi que le mot de passe.", "Please provide a valid Dropbox app key and secret." => "Veuillez fournir une clé d'application (app key) ainsi qu'un mot de passe valides.", "Step 1 failed. Exception: %s" => "L’étape 1 a échoué. Erreur: %s", diff --git a/apps/files_external/l10n/ja.php b/apps/files_external/l10n/ja.php index 494708e63dd..f4601bb7daf 100644 --- a/apps/files_external/l10n/ja.php +++ b/apps/files_external/l10n/ja.php @@ -49,7 +49,7 @@ $TRANSLATIONS = array( "Error configuring Google Drive storage" => "Googleドライブストレージの設定エラー", "Personal" => "個人", "System" => "システム", -"All users. Type to select user or group." => "全てのユーザー.ユーザー、グループを追加", +"All users. Type to select user or group." => "すべてのユーザー.ユーザー、グループを追加", "(group)" => "(グループ)", "Saved" => "保存されました", "<b>Note:</b> " => "<b>注意:</b> ", diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 5378137e1d3..fa44e446d96 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -740,7 +740,7 @@ class OC_Mount_Config { * @param string $backend * @return string */ - private static function getSingleDependencyMessage($l, $module, $backend) { + private static function getSingleDependencyMessage(OC_L10N $l, $module, $backend) { switch (strtolower($module)) { case 'curl': return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend); diff --git a/apps/files_sharing/l10n/id.php b/apps/files_sharing/l10n/id.php index c591cbad7f3..10ff3cf0530 100644 --- a/apps/files_sharing/l10n/id.php +++ b/apps/files_sharing/l10n/id.php @@ -1,13 +1,20 @@ <?php $TRANSLATIONS = array( -"Server to server sharing is not enabled on this server" => "Berbagi server ke server tidaj diaktifkan pada server ini", +"Server to server sharing is not enabled on this server" => "Berbagi server ke server tidak diaktifkan pada server ini", +"The mountpoint name contains invalid characters." => "Nama titik kait berisi karakter yang tidak sah.", +"Invalid or untrusted SSL certificate" => "Sertifikast SSL tidak sah atau tidak terpercaya", +"Couldn't add remote share" => "Tidak dapat menambahkan berbagi remote", "Shared with you" => "Dibagikan dengan Anda", "Shared with others" => "Dibagikan dengan lainnya", "Shared by link" => "Dibagikan dengan tautan", "No files have been shared with you yet." => "Tidak ada berkas yang dibagikan kepada Anda.", "You haven't shared any files yet." => "Anda belum berbagi berkas apapun.", "You haven't shared any files by link yet." => "Anda belum berbagi berkas dengan tautan satupun.", +"Do you want to add the remote share {name} from {owner}@{remote}?" => "Apakah Anda ingin menambahkan berbagi remote {name} dari {owner}@{remote}?", +"Remote share" => "Berbagi remote", +"Remote share password" => "Sandi berbagi remote", "Cancel" => "Batal", +"Add remote share" => "Tambah berbagi remote", "No ownCloud installation found at {remote}" => "Tidak ada instalasi ownCloud yang ditemukan di {remote}", "Invalid ownCloud url" => "URL ownCloud tidak sah", "Shared by" => "Dibagikan oleh", @@ -17,14 +24,17 @@ $TRANSLATIONS = array( "Name" => "Nama", "Share time" => "Bagikan waktu", "Sorry, this link doesn’t seem to work anymore." => "Maaf, tautan ini tampaknya tidak berfungsi lagi.", -"Reasons might be:" => "Alasan mungkin:", +"Reasons might be:" => "Alasan yang 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.", +"Add to your ownCloud" => "Tambahkan ke ownCloud Anda", "Download" => "Unduh", "Download %s" => "Unduh %s", "Direct link" => "Tautan langsung", +"Remote Shares" => "Berbagi Remote", +"Allow other instances to mount public links shared from this server" => "Izinkan instansi lain untuk mengaitkan tautan publik untuk dibagikan dari server ini", "Allow users to mount public link shares" => "Izinkan pengguna untuk mengaitkan tautan berbagi publik" ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index 63962296416..3d90791108e 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -434,10 +434,10 @@ class Trashbin { * @param string $filename name of file once it was deleted * @param string $uniqueFilename new file name to restore the file without overwriting existing files * @param string $location location if file - * @param int $timestamp deleteion time - * + * @param int $timestamp deletion time + * @return bool */ - private static function restoreVersions($view, $file, $filename, $uniqueFilename, $location, $timestamp) { + private static function restoreVersions(\OC\Files\View $view, $file, $filename, $uniqueFilename, $location, $timestamp) { if (\OCP\App::isEnabled('files_versions')) { // disable proxy to prevent recursive calls @@ -488,10 +488,10 @@ class Trashbin { * @param string $filename name of file * @param string $uniqueFilename new file name to restore the file without overwriting existing files * @param string $location location of file - * @param int $timestamp deleteion time - * + * @param int $timestamp deletion time + * @return bool */ - private static function restoreEncryptionKeys($view, $file, $filename, $uniqueFilename, $location, $timestamp) { + private static function restoreEncryptionKeys(\OC\Files\View $view, $file, $filename, $uniqueFilename, $location, $timestamp) { // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!) if (\OCP\App::isEnabled('files_encryption')) { $user = \OCP\User::getUser(); @@ -639,8 +639,12 @@ class Trashbin { /** * @param \OC\Files\View $view + * @param $file + * @param $filename + * @param $timestamp + * @return int */ - private static function deleteVersions($view, $file, $filename, $timestamp) { + private static function deleteVersions(\OC\Files\View $view, $file, $filename, $timestamp) { $size = 0; if (\OCP\App::isEnabled('files_versions')) { $user = \OCP\User::getUser(); @@ -664,8 +668,12 @@ class Trashbin { /** * @param \OC\Files\View $view + * @param $file + * @param $filename + * @param $timestamp + * @return int */ - private static function deleteEncryptionKeys($view, $file, $filename, $timestamp) { + private static function deleteEncryptionKeys(\OC\Files\View $view, $file, $filename, $timestamp) { $size = 0; if (\OCP\App::isEnabled('files_encryption')) { $user = \OCP\User::getUser(); @@ -879,8 +887,10 @@ class Trashbin { * @param string $source source path, relative to the users files directory * @param string $destination destination path relative to the users root directoy * @param \OC\Files\View $view file view for the users root directory + * @return int + * @throws Exceptions\CopyRecursiveException */ - private static function copy_recursive($source, $destination, $view) { + private static function copy_recursive($source, $destination, \OC\Files\View $view) { $size = 0; if ($view->is_dir($source)) { $view->mkdir($destination); @@ -955,7 +965,7 @@ class Trashbin { * @param \OC\Files\View $view filesystem view relative to users root directory * @return string with unique extension */ - private static function getUniqueFilename($location, $filename, $view) { + private static function getUniqueFilename($location, $filename, \OC\Files\View $view) { $ext = pathinfo($filename, PATHINFO_EXTENSION); $name = pathinfo($filename, PATHINFO_FILENAME); $l = \OC::$server->getL10N('files_trashbin'); @@ -1036,6 +1046,7 @@ class Trashbin { /** * check if trash bin is empty for a given user * @param string $user + * @return bool */ public static function isEmpty($user) { @@ -1050,6 +1061,10 @@ class Trashbin { return true; } + /** + * @param $path + * @return string + */ public static function preview_icon($path) { return \OC_Helper::linkToRoute('core_ajax_trashbin_preview', array('x' => 36, 'y' => 36, 'file' => $path)); } diff --git a/apps/user_ldap/l10n/ar.php b/apps/user_ldap/l10n/ar.php index 1b0b1e8d413..e10ada32d55 100644 --- a/apps/user_ldap/l10n/ar.php +++ b/apps/user_ldap/l10n/ar.php @@ -1,12 +1,36 @@ <?php $TRANSLATIONS = array( +"Failed to clear the mappings." => "فشل مسح الارتباطات (mappings)", "Failed to delete the server configuration" => "تعذر حذف ملف إعدادات الخادم", "The configuration is valid and the connection could be established!" => "الإعدادت صحيحة", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "الإعدادات صحيحة، لكن لم ينجح الارتباط. يرجى التأكد من إعدادات الخادم وبيانات التحقق من الدخول.", +"The configuration is invalid. Please have a look at the logs for further details." => "الإعدادات غير صحيحة. يرجى الاطلاع على سجلات المتابعة للمزيد من التفاصيل.", +"No action specified" => "لم يتم تحديد الإجراء", +"No configuration specified" => "لم يتم تحديد الإعدادات.", +"No data specified" => "لم يتم تحديد البيانات.", +" Could not set configuration %s" => "تعذر تنفيذ الإعداد %s", "Deletion failed" => "فشل الحذف", +"Take over settings from recent server configuration?" => "الحصول على الخصائص من آخر إعدادات في الخادم؟", +"Keep settings?" => "الاحتفاظ بالخصائص والإعدادات؟", +"{nthServer}. Server" => "الخادم {nthServer}.", +"Cannot add server configuration" => "تعذر إضافة الإعدادات للخادم.", +"mappings cleared" => "تم مسح الارتباطات (mappings)", "Success" => "نجاح", "Error" => "خطأ", +"Please specify a Base DN" => "يرجى تحديد اسم نطاق أساسي Base DN", +"Could not determine Base DN" => "تعذر التحقق من اسم النطاق الأساسي Base DN", +"Please specify the port" => "يرجى تحديد المنفذ", +"Configuration OK" => "الإعدادات صحيحة", +"Configuration incorrect" => "الإعدادات غير صحيحة", +"Configuration incomplete" => "الإعدادات غير مكتملة", "Select groups" => "إختر مجموعة", -"_%s group found_::_%s groups found_" => array("","","","","",""), +"Select object classes" => "اختر أصناف المكونات", +"Select attributes" => "اختر الخصائص", +"Connection test succeeded" => "تم اختبار الاتصال بنجاح", +"Connection test failed" => "فشل اختبار الاتصال", +"Do you really want to delete the current Server Configuration?" => "هل ترغب فعلاً في حذف إعدادات الخادم الحالي؟", +"Confirm Deletion" => "تأكيد الحذف", +"_%s group found_::_%s groups found_" => array("لا توجد مجموعات: %s","تم إيجاد %s مجموعة واحدة","تم إيجاد %s مجموعتين","تم إيجاد %s مجموعات","تم إيجاد %s مجموعة","تم إيجاد %s مجموعة/مجموعات"), "_%s user found_::_%s users found_" => array("","","","","",""), "Save" => "حفظ", "Help" => "المساعدة", diff --git a/apps/user_ldap/l10n/id.php b/apps/user_ldap/l10n/id.php index 11cefeb18db..01cf269d68d 100644 --- a/apps/user_ldap/l10n/id.php +++ b/apps/user_ldap/l10n/id.php @@ -1,38 +1,77 @@ <?php $TRANSLATIONS = array( +"Failed to clear the mappings." => "Gagal membersihkan pemetaan.", "Failed to delete the server configuration" => "Gagal menghapus konfigurasi server", "The configuration is valid and the connection could be established!" => "Konfigurasi valid dan koneksi dapat dilakukan!", -"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurasi valid, tetapi Bind gagal. Silakan cek pengaturan server dan keamanan.", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurasi valid, tetapi Bind gagal. Silakan periksa pengaturan server dan kredensial.", +"The configuration is invalid. Please have a look at the logs for further details." => "Konfigurasi tidak sah. Silakan lihat log untuk rincian lebh lanjut.", +"No action specified" => "Tidak ada tindakan yang ditetapkan", +"No configuration specified" => "Tidak ada konfigurasi yang ditetapkan", +"No data specified" => "Tidak ada data yang ditetapkan", +" Could not set configuration %s" => "Tidak dapat menyetel konfigurasi %s", "Deletion failed" => "Penghapusan gagal", -"Take over settings from recent server configuration?" => "Ambil alih pengaturan dari konfigurasi server saat ini?", +"Take over settings from recent server configuration?" => "Mengambil alih pengaturan dari konfigurasi server saat ini?", "Keep settings?" => "Biarkan pengaturan?", +"{nthServer}. Server" => "{nthServer}. Server", "Cannot add server configuration" => "Gagal menambah konfigurasi server", -"Success" => "Sukses", -"Error" => "Galat", +"mappings cleared" => "pemetaan dibersihkan", +"Success" => "Berhasil", +"Error" => "Kesalahan", +"Please specify a Base DN" => "Sialakan menetapkan Base DN", +"Could not determine Base DN" => "Tidak dapat menetakan Base DN", +"Please specify the port" => "Silakan tetapkan port", +"Configuration OK" => "Konfigurasi Oke", +"Configuration incorrect" => "Konfigurasi salah", +"Configuration incomplete" => "Konfigurasi tidak lengkap", "Select groups" => "Pilih grup", -"Connection test succeeded" => "Tes koneksi sukses", -"Connection test failed" => "Tes koneksi gagal", -"Do you really want to delete the current Server Configuration?" => "Anda ingin menghapus Konfigurasi Server saat ini?", +"Select object classes" => "Pilik kelas obyek", +"Select attributes" => "Pilih atribut", +"Connection test succeeded" => "Pemeriksaan koneksi berhasil", +"Connection test failed" => "Pemeriksaan koneksi gagal", +"Do you really want to delete the current Server Configuration?" => "Apakan Anda ingin menghapus Konfigurasi Server saat ini?", "Confirm Deletion" => "Konfirmasi Penghapusan", -"_%s group found_::_%s groups found_" => array(""), -"_%s user found_::_%s users found_" => array(""), +"_%s group found_::_%s groups found_" => array("%s grup ditemukan"), +"_%s user found_::_%s users found_" => array("%s pengguna ditemukan"), +"Could not find the desired feature" => "Tidak dapat menemukan fitur yang diinginkan", +"Invalid Host" => "Host tidak sah", "Server" => "Server", -"Group Filter" => "saringan grup", +"User Filter" => "Penyaring Pengguna", +"Login Filter" => "Penyaring Masuk", +"Group Filter" => "Penyaring grup", "Save" => "Simpan", "Test Configuration" => "Uji Konfigurasi", "Help" => "Bantuan", +"Groups meeting these criteria are available in %s:" => "Grup memenuhi kriteria ini tersedia di %s:", +"only those object classes:" => "hanya kelas objek:", +"only from those groups:" => "hanya dari kelompok:", +"Edit raw filter instead" => "Sunting penyaring raw", +"Raw LDAP filter" => "Penyaring LDAP raw", +"Test Filter" => "Uji Penyaring", +"groups found" => "grup ditemukan", +"Users login with this attribute:" => "Login pengguna dengan atribut ini:", +"LDAP Username:" => "Nama pengguna LDAP:", +"LDAP Email Address:" => "Alamat Email LDAP:", +"Other Attributes:" => "Atribut Lain:", +"1. Server" => "1. Server", +"%s. Server:" => "%s. Server:", "Add Server Configuration" => "Tambah Konfigurasi Server", +"Delete Configuration" => "Hapus Konfigurasi", "Host" => "Host", -"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol dapat tidak ditulis, kecuali anda menggunakan SSL. Lalu jalankan dengan ldaps://", -"Port" => "port", -"User DN" => "User DN", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol dapat tidak ditulis, kecuali Anda menggunakan SSL. Lalu jalankan dengan ldaps://", +"Port" => "Port", +"User DN" => "Pengguna DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN dari klien pengguna yang dengannya tautan akan diterapkan, mis. uid=agen,dc=contoh,dc=com. Untuk akses anonim, biarkan DN dan kata sandi kosong.", "Password" => "Sandi", "For anonymous access, leave DN and Password empty." => "Untuk akses anonim, biarkan DN dan Kata sandi kosong.", "One Base DN per line" => "Satu Base DN per baris", "You can specify Base DN for users and groups in the Advanced tab" => "Anda dapat menetapkan Base DN untuk pengguna dan grup dalam tab Lanjutan", +"Manually enter LDAP filters (recommended for large directories)" => "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)", +"Limit %s access to users meeting these criteria:" => "Batasi akses %s untuk pengguna yang sesuai dengan kriteria berikut:", +"users found" => "pengguna ditemukan", +"Saving" => "Menyimpan", "Back" => "Kembali", "Continue" => "Lanjutkan", +"Expert" => "Lanjutan", "Advanced" => "Lanjutan", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Peringatan:</b> Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.", "Connection Settings" => "Pengaturan Koneksi", diff --git a/apps/user_ldap/l10n/ja.php b/apps/user_ldap/l10n/ja.php index 7b4240c2acf..01430106847 100644 --- a/apps/user_ldap/l10n/ja.php +++ b/apps/user_ldap/l10n/ja.php @@ -120,7 +120,7 @@ $TRANSLATIONS = array( "UUID Attribute for Users:" => "ユーザーのUUID属性:", "UUID Attribute for Groups:" => "グループの UUID 属性:", "Username-LDAP User Mapping" => "ユーザー名とLDAPユーザのマッピング", -"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." => "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、全てのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。", +"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." => "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、すべてのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。", "Clear Username-LDAP User Mapping" => "ユーザー名とLDAPユーザーのマッピングをクリアする", "Clear Groupname-LDAP Group Mapping" => "グループ名とLDAPグループのマッピングをクリアする" ); diff --git a/apps/user_ldap/l10n/sl.php b/apps/user_ldap/l10n/sl.php index 4eb7dfce597..e37caa2fd92 100644 --- a/apps/user_ldap/l10n/sl.php +++ b/apps/user_ldap/l10n/sl.php @@ -47,6 +47,7 @@ $TRANSLATIONS = array( "Edit raw filter instead" => "Uredi surov filter", "Raw LDAP filter" => "Surovi filter LDAP", "The filter specifies which LDAP groups shall have access to the %s instance." => "Filter določa, katere skupine LDAP bodo imele dostop do %s.", +"Test Filter" => "Preizkusi filter", "groups found" => "najdenih skupin", "Users login with this attribute:" => "Uporabniki se prijavijo z atributom:", "LDAP Username:" => "Uporabniško ime LDAP:", @@ -66,9 +67,12 @@ $TRANSLATIONS = array( "For anonymous access, leave DN and Password empty." => "Za brezimni dostop naj bosta polji imena in gesla prazni.", "One Base DN per line" => "Eno osnovno enolično ime na vrstico", "You can specify Base DN for users and groups in the Advanced tab" => "Osnovno enolično ime za uporabnike in skupine lahko določite v zavihku naprednih možnosti.", +"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." => "Preusmeri samodejne zahteve LDAP. Nastavitev je priporočljiva za obsežnejše namestitve, vendar zahteva nekaj znanja o delu z LDAP.", +"Manually enter LDAP filters (recommended for large directories)" => "Ročno vstavi filtre za LDAP (priporočljivo za obsežnejše mape).", "Limit %s access to users meeting these criteria:" => "Omeji dostop do %s za uporabnike, ki zadostijo kriterijem:", "The filter specifies which LDAP users shall have access to the %s instance." => "Filter določa, kateri uporabniki LDAP bodo imeli dostop do %s.", "users found" => "najdenih uporabnikov", +"Saving" => "Poteka shranjevanje ...", "Back" => "Nazaj", "Continue" => "Nadaljuj", "Expert" => "Napredno", diff --git a/config/config.sample.php b/config/config.sample.php index 78bbfff8c85..09b59fcb5b4 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -120,6 +120,13 @@ $CONFIG = array( 'dbtableprefix' => '', /** + * Additional driver options for the database connection, eg. to enable SSL encryption in MySQL: + */ +'dbdriveroptions' => array( + PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem', +), + +/** * Indicates whether the ownCloud instance was installed successfully; ``true`` * indicates a successful installation, and ``false`` indicates an unsuccessful * installation. diff --git a/core/js/js.js b/core/js/js.js index 566a3d4d8cd..94b78a2e9a9 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -967,6 +967,12 @@ function object(o) { function initCore() { /** + * Set users local to moment.js as soon as possible + */ + moment.locale($('html').prop('lang')); + + + /** * Calls the server periodically to ensure that session doesn't * time out */ diff --git a/core/l10n/ja.php b/core/l10n/ja.php index dedf3b759b4..450e3adc2e3 100644 --- a/core/l10n/ja.php +++ b/core/l10n/ja.php @@ -66,8 +66,8 @@ $TRANSLATIONS = array( "So-so password" => "まずまずのパスワード", "Good password" => "良好なパスワード", "Strong password" => "強いパスワード", -"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "WebDAVインターフェースに問題があると思われるため、WEBサーバーはまだファイルの同期を許可するよう適切に設定されていません。", -"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." => "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティアプリといったいくつかの機能が使えません。また、リモート接続でのファイルアクセス、通知メールの送信と言った機能も利用できないかもしれません。全ての機能を利用したいのであれば、このサーバーからインターネットに接続できるようにすることをお勧めします。", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "WebDAVインターフェースに問題があると思われるため、Webサーバーはまだファイルの同期を許可するよう適切に設定されていません。", +"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." => "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティアプリといったいくつかの機能が使えません。また、リモート接続でのファイルアクセス、通知メールの送信と言った機能も利用できないかもしれません。すべての機能を利用したい場合は、このサーバーがインターネット接続できるようにすることをお勧めします。", "Error occurred while checking server setup" => "サーバー設定のチェック中にエラーが発生しました", "Shared" => "共有中", "Shared with {recipients}" => "{recipients} と共有", @@ -88,7 +88,7 @@ $TRANSLATIONS = array( "Send" => "送信", "Set expiration date" => "有効期限を設定", "Expiration date" => "有効期限", -"Adding user..." => "ユーザー追加中...", +"Adding user..." => "ユーザーを追加しています...", "group" => "グループ", "Resharing is not allowed" => "再共有は許可されていません", "Shared in {item} with {user}" => "{item} 内で {user} と共有中", diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index 963bf4cf545..3325bc9165e 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -1,10 +1,10 @@ <!DOCTYPE html> -<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false"><![endif]--> -<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false"><![endif]--> -<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false"><![endif]--> -<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false"><!--<![endif]--> +<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>"><![endif]--> +<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><!--<![endif]--> <head> <title> diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index da40fd83ad8..0ad2ea4d807 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -1,10 +1,10 @@ <!DOCTYPE html> -<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false"><![endif]--> -<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false"><![endif]--> -<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false"><![endif]--> -<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false"><!--<![endif]--> +<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>"><![endif]--> +<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><!--<![endif]--> <head data-requesttoken="<?php p($_['requesttoken']); ?>"> <title> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index d0c6f9c38f5..6164d16ac17 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -1,10 +1,10 @@ <!DOCTYPE html> -<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false"><![endif]--> -<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false"><![endif]--> -<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false"><![endif]--> -<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false"><![endif]--> -<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false"><!--<![endif]--> +<!--[if lt IE 7]><html class="ng-csp ie ie6 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>"><![endif]--> +<!--[if IE 7]><html class="ng-csp ie ie7 lte9 lte8 lte7" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 8]><html class="ng-csp ie ie8 lte9 lte8" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if IE 9]><html class="ng-csp ie ie9 lte9" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if gt IE 9]><html class="ng-csp ie" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><![endif]--> +<!--[if !IE]><!--><html class="ng-csp" data-placeholder-focus="false" lang="<?php p($_['language']); ?>" ><!--<![endif]--> <head data-user="<?php p($_['user_uid']); ?>" data-requesttoken="<?php p($_['requesttoken']); ?>"> <title> @@ -71,8 +71,7 @@ try { // Handle unexpected errors register_shutdown_function('handleUnexpectedShutdown'); - // Delete temp folder - OC_Helper::cleanTmpNoClean(); + \OC::$server->getTempManager()->cleanOld(); // Exit if background jobs are disabled! $appmode = OC_BackgroundJob::getExecutionType(); diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index ce2d0f3b905..7d1f8371936 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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 acc3df0975f..b7a65d3a2bf 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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" @@ -340,7 +340,7 @@ msgstr "" msgid "%s could not be renamed" msgstr "" -#: lib/helper.php:23 templates/list.php:25 +#: lib/helper.php:25 templates/list.php:25 #, php-format msgid "Upload (max. %s)" msgstr "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index f13f7db1fe7..998d5a9494b 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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 27747918ec0..34fbcd3b6c0 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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" @@ -239,25 +239,25 @@ msgstr "" msgid "<b>Note:</b> " msgstr "" -#: lib/config.php:723 +#: lib/config.php:724 msgid " and " msgstr "" -#: lib/config.php:745 +#: lib/config.php:746 #, php-format msgid "" "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting " "of %s is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:747 +#: lib/config.php:748 #, php-format msgid "" "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of " "%s is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:749 +#: lib/config.php:750 #, php-format msgid "" "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please " diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index e3c2b742085..1aba20829be 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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 e3ceade6a60..fd8b4427d2c 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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" @@ -39,7 +39,7 @@ msgstr "" msgid "Error" msgstr "" -#: lib/trashbin.php:970 lib/trashbin.php:972 +#: lib/trashbin.php:980 lib/trashbin.php:982 msgid "restored" msgstr "" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 00cbdd1d96b..909e1300d71 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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 51dab33b695..e0090d64eb8 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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" @@ -40,11 +40,11 @@ msgid "" "config directory%s." msgstr "" -#: base.php:594 +#: base.php:595 msgid "Sample configuration detected" msgstr "" -#: base.php:595 +#: base.php:596 msgid "" "It has been detected that the sample configuration has been copied. This can " "break your installation and is unsupported. Please read the documentation " diff --git a/l10n/templates/private.pot b/l10n/templates/private.pot index dbe66fd272b..5373b5c248b 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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/settings.pot b/l10n/templates/settings.pot index 27d2250a725..88ff7016873 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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 9f983dfae79..7ff5ef5249a 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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" @@ -157,11 +157,11 @@ msgid_plural "%s users found" msgstr[0] "" msgstr[1] "" -#: lib/wizard.php:394 lib/wizard.php:1130 +#: lib/wizard.php:394 lib/wizard.php:1131 msgid "Could not find the desired feature" msgstr "" -#: lib/wizard.php:937 lib/wizard.php:949 +#: lib/wizard.php:938 lib/wizard.php:950 msgid "Invalid Host" msgstr "" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 020319f295b..0e813ab1ae3 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-10-24 01:54-0400\n" +"POT-Creation-Date: 2014-10-27 01:54-0400\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/lib/base.php b/lib/base.php index 22916c259fc..4a5f4e77a59 100644 --- a/lib/base.php +++ b/lib/base.php @@ -577,7 +577,8 @@ class OC { self::registerLocalAddressBook(); //make sure temporary files are cleaned up - register_shutdown_function(array('OC_Helper', 'cleanTmp')); + $tmpManager = \OC::$server->getTempManager(); + register_shutdown_function(array($tmpManager, 'clean')); if (OC_Config::getValue('installed', false) && !self::checkUpgrade(false)) { if (\OC::$server->getAppConfig()->getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') { diff --git a/lib/l10n/id.php b/lib/l10n/id.php index 796772d410f..9e2e9282f7d 100644 --- a/lib/l10n/id.php +++ b/lib/l10n/id.php @@ -1,10 +1,18 @@ <?php $TRANSLATIONS = array( +"Cannot write into \"config\" directory!" => "Tidak dapat menulis kedalam direktori \"config\"!", +"This can usually be fixed by giving the webserver write access to the config directory" => "Hal ini biasanya dapat diperbaiki dengan memberikan akses tulis bagi situs web ke direktori config", +"See %s" => "Lihat %s", +"This can usually be fixed by %sgiving the webserver write access to the config directory%s." => "Hal ini biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori config.", +"Sample configuration detected" => "Konfigurasi sampel ditemukan", +"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" => "Ditemukan bahwa konfigurasi sampel telah disalin. Hal ini dapat merusak instalasi Anda dan tidak didukung. Silahkan baca dokumentasi sebelum melakukan perubahan pada config.php", "Help" => "Bantuan", "Personal" => "Pribadi", "Settings" => "Pengaturan", "Users" => "Pengguna", "Admin" => "Admin", +"Recommended" => "Direkomendasikan", +"App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." => "Aplikasi \\\"%s\\\" tidak dapat diinstal karena tidak kompatibel denga versi ownCloud ini.", "No app name specified" => "Tidak ada nama apl yang ditentukan", "Unknown filetype" => "Tipe berkas tak dikenal", "Invalid image" => "Gambar tidak sah", @@ -24,20 +32,46 @@ $TRANSLATIONS = array( "Application is not enabled" => "Aplikasi tidak diaktifkan", "Authentication error" => "Galat saat otentikasi", "Token expired. Please reload page." => "Token sudah kedaluwarsa. Silakan muat ulang halaman.", +"Unknown user" => "Pengguna tidak dikenal", "%s enter the database username." => "%s masukkan nama pengguna basis data.", "%s enter the database name." => "%s masukkan nama basis data.", "%s you may not use dots in the database name" => "%s anda tidak boleh menggunakan karakter titik pada nama basis data", "MS SQL username and/or password not valid: %s" => "Nama pengguna dan/atau sandi MySQL tidak sah: %s", "You need to enter either an existing account or the administrator." => "Anda harus memasukkan akun yang sudah ada atau administrator.", -"DB Error: \"%s\"" => "Galat Basis Data: \"%s\"", +"MySQL/MariaDB username and/or password not valid" => "Nama pengguna dan/atau sandi MySQL/MariaDB tidak sah", +"DB Error: \"%s\"" => "Kesalahan Basis Data: \"%s\"", "Offending command was: \"%s\"" => "Perintah yang bermasalah: \"%s\"", +"MySQL/MariaDB user '%s'@'localhost' exists already." => "'%s'@'localhost' pengguna MySQL/MariaDB sudah ada.", +"Drop this user from MySQL/MariaDB" => "Drop pengguna ini dari MySQL/MariaDB", +"MySQL/MariaDB user '%s'@'%%' already exists" => "'%s'@'%%' pengguna MySQL/MariaDB sudah ada.", +"Drop this user from MySQL/MariaDB." => "Drop pengguna ini dari MySQL/MariaDB.", "Oracle connection could not be established" => "Koneksi Oracle tidak dapat dibuat", "Oracle username and/or password not valid" => "Nama pengguna dan/atau sandi Oracle tidak sah", "Offending command was: \"%s\", name: %s, password: %s" => "Perintah yang bermasalah: \"%s\", nama pengguna: %s, sandi: %s", "PostgreSQL username and/or password not valid" => "Nama pengguna dan/atau sandi PostgreSQL tidak valid", -"Set an admin username." => "Atur nama pengguna admin.", -"Set an admin password." => "Atur sandi admin.", +"Set an admin username." => "Tetapkan nama pengguna admin.", +"Set an admin password." => "Tetapkan sandi admin.", +"Can't create or write into the data directory %s" => "Tidak dapat membuat atau menulis kedalam direktori data %s", "%s shared »%s« with you" => "%s membagikan »%s« dengan anda", +"Sharing %s failed, because the file does not exist" => "Gagal membagikan %s, karena berkas tidak ada", +"You are not allowed to share %s" => "Anda tidak diizinkan untuk membagikan %s", +"Sharing %s failed, because the user %s is the item owner" => "Gagal membagikan %s, karena pengguna %s adalah pemilik item", +"Sharing %s failed, because the user %s does not exist" => "Gagal membagikan %s, karena pengguna %s tidak ada", +"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" => "Gagal membagikan %s, karena pengguna %s bukan merupakan anggota dari grup yang %s ikuti", +"Sharing %s failed, because this item is already shared with %s" => "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s", +"Sharing %s failed, because the group %s does not exist" => "Gagal membagikan %s, karena grup %s tidak ada", +"Sharing %s failed, because %s is not a member of the group %s" => "Gagal membagikan %s, karena %s bukan anggota dari grup %s", +"You need to provide a password to create a public link, only protected links are allowed" => "Anda perlu memberikan sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan", +"Sharing %s failed, because sharing with links is not allowed" => "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan", +"Share type %s is not valid for %s" => "Barbagi tipe %s tidak sah untuk %s", +"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" => "Pengaturan perizinan untuk %s gagal, karena karena izin melebihi izin yang diberikan untuk %s", +"Setting permissions for %s failed, because the item was not found" => "Pengaturan perizinan untuk %s gagal, karena item tidak ditemukan", +"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" => "Tidak dapat menyetel tanggal kadaluarsa. Pembagian tidak dapat kadaluarsa lebih lambat dari %s setelah mereka dibagikan.", +"Cannot set expiration date. Expiration date is in the past" => "Tidak dapat menyetel tanggal kadaluarsa. Tanggal kadaluarsa dimasa lalu", +"Sharing %s failed, because the user %s is the original sharer" => "Gagal berbagi %s. karena pengguna %s adalah yang membagikan pertama", +"Sharing %s failed, because the permissions exceed permissions granted to %s" => "Gagal membagikan %s, karena izin melebihi izin yang diberikan untuk %s", +"Sharing %s failed, because resharing is not allowed" => "Gagal berbagi %s, karena membagikan ulang tidak diizinkan", +"Sharing %s failed, because the file could not be found in the file cache" => "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache", "Could not find category \"%s\"" => "Tidak menemukan kategori \"%s\"", "seconds ago" => "beberapa detik yang lalu", "_%n minute ago_::_%n minutes ago_" => array("%n menit yang lalu"), @@ -49,7 +83,34 @@ $TRANSLATIONS = array( "_%n month ago_::_%n months ago_" => array("%n bulan yang lalu"), "last year" => "tahun kemarin", "years ago" => "beberapa tahun lalu", +"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-\"" => "Hanya karakter berikut yang diizinkan dalam nama pengguna: \"a-z\", \"A-Z\", \"0-9\", dan \"_.@-\"", "A valid username must be provided" => "Tuliskan nama pengguna yang valid", -"A valid password must be provided" => "Tuliskan sandi yang valid" +"A valid password must be provided" => "Tuliskan sandi yang valid", +"The username is already being used" => "Nama pengguna ini telah digunakan", +"No database drivers (sqlite, mysql, or postgresql) installed." => "Tidak ada driver (sqlite, mysql, or postgresql) yang terinstal.", +"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." => "Perizinan biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori root.", +"Cannot write into \"config\" directory" => "Tidak dapat menulis kedalam direktori \"config\"", +"Cannot write into \"apps\" directory" => "Tidak dapat menulis kedalam direktori \"apps\"", +"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." => "Hal ini biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori apps atau menonaktifkan toko aplikasi didalam berkas config.", +"Cannot create \"data\" directory (%s)" => "Tidak dapat membuat direktori (%s) \"data\"", +"This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." => "Hal ini biasanya dapat diperbaiki dengan <a href=\"%s\" target=\"_blank\">memberikan akses tulis bagi situs web ke direktori root</a>.", +"Setting locale to %s failed" => "Pengaturan lokal ke %s gagal", +"Please install one of these locales on your system and restart your webserver." => "Mohon instal paling tidak satu lokal pada sistem Anda dan jalankan ulang server web.", +"Please ask your server administrator to install the module." => "Mohon tanyakan administrator Anda untuk menginstal module.", +"PHP module %s not installed." => "Module PHP %s tidak terinstal.", +"PHP %s or higher is required." => "Diperlukan PHP %s atau yang lebih tinggi.", +"Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." => "Mohon tanyakan administrator Anda untuk memperbarui PHP ke versi terkini. Versi PHP Anda tidak lagi didukung oleh ownCloud dan komunitas PHP.", +"PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." => "PHP Safe Mode diaktifkan. ownCloud memerlukan ini untuk dinonaktifkan untuk dapat bekerja dengan banar.", +"PHP modules have been installed, but they are still listed as missing?" => "Modul PHP telah terinstal, tetapi mereka terlihat tidak ada?", +"Please ask your server administrator to restart the web server." => "Mohon minta administrator Anda untuk menjalankan ulang server web.", +"PostgreSQL >= 9 required" => "Diperlukan PostgreSQL >= 9", +"Please upgrade your database version" => "Mohon perbarui versi basis data Anda", +"Error occurred while checking PostgreSQL version" => "Terjadi kesalahan saat memeriksa versi PostgreSQL", +"Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" => "Pastikan bahwa Anda memiliki PostgreSQL >= 9 atau periksa log untuk informasi lebih lanjut tentang kesalahan", +"Please change the permissions to 0770 so that the directory cannot be listed by other users." => "Mohon ubah perizinan menjadi 0770 sehingga direktori tersebut tidak dapat dilihat oleh pengguna lain.", +"Data directory (%s) is readable by other users" => "Direktori data (%s) dapat dibaca oleh pengguna lain", +"Data directory (%s) is invalid" => "Direktori data (%s) tidak sah", +"Please check that the data directory contains a file \".ocdata\" in its root." => "Mohon periksa apakah direktori data berisi sebuah berkas \".ocdata\".", +"Could not obtain lock type %d on \"%s\"." => "Tidak bisa memperoleh jenis kunci %d pada \"%s\"." ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/lib/l10n/ja.php b/lib/l10n/ja.php index 445702069f1..ca54f105377 100644 --- a/lib/l10n/ja.php +++ b/lib/l10n/ja.php @@ -11,6 +11,7 @@ $TRANSLATIONS = array( "Settings" => "設定", "Users" => "ユーザー", "Admin" => "管理", +"Recommended" => "推奨", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." => "アプリ \\\"%s\\\" をインストールできません。現在のownCloudのバージョンと互換性がありません。", "No app name specified" => "アプリ名が未指定", "Unknown filetype" => "不明なファイルタイプ", @@ -108,7 +109,7 @@ $TRANSLATIONS = array( "Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." => "マジッククォートは有効です。ownCloudを適切に動作させるには無効にする必要があります。", "Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." => "マジッククォートは推奨されておらず、ほとんど役に立たない設定のため、無効化すべきです。サーバー管理者に、php.iniもしくはWebサーバー設定で無効化するよう依頼してください。", "PHP modules have been installed, but they are still listed as missing?" => "PHP モジュールはインストールされていますが、まだ一覧に表示されていますか?", -"Please ask your server administrator to restart the web server." => "サーバー管理者にWEBサーバーを再起動するよう依頼してください。", +"Please ask your server administrator to restart the web server." => "サーバー管理者にWebサーバーを再起動するよう依頼してください。", "PostgreSQL >= 9 required" => "PostgreSQL >= 9 が必要です", "Please upgrade your database version" => "新しいバージョンのデータベースにアップグレードしてください", "Error occurred while checking PostgreSQL version" => "PostgreSQL のバージョンチェック中にエラーが発生しました", diff --git a/lib/l10n/sl.php b/lib/l10n/sl.php index 1ae1628fdbd..c004483c0eb 100644 --- a/lib/l10n/sl.php +++ b/lib/l10n/sl.php @@ -1,13 +1,18 @@ <?php $TRANSLATIONS = array( "Cannot write into \"config\" directory!" => "Mapa 'config' nima določenih ustreznih dovoljenj za pisanje!", +"This can usually be fixed by giving the webserver write access to the config directory" => "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo.", "See %s" => "Oglejte si %s", +"This can usually be fixed by %sgiving the webserver write access to the config directory%s." => "Napako je mogoče odpraviti z %sdodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo%s.", "Sample configuration detected" => "Zaznana je neustrezna preizkusna nastavitev", +"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" => "Zaznano je, da je bila v sistem kopirana datoteka z enostavno nastavitvijo. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.", "Help" => "Pomoč", "Personal" => "Osebno", "Settings" => "Nastavitve", "Users" => "Uporabniki", "Admin" => "Skrbništvo", +"Recommended" => "Priporočljivo", +"App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." => "Programnika \\\"%s\\\" ni mogoče namestiti, ker različica programa ni skladna z različico okolja ownCloud.", "No app name specified" => "Ni podanega imena programa", "Unknown filetype" => "Neznana vrsta datoteke", "Invalid image" => "Neveljavna slika", @@ -46,6 +51,7 @@ $TRANSLATIONS = array( "PostgreSQL username and/or password not valid" => "Uporabniško ime ali geslo PostgreSQL ni veljavno", "Set an admin username." => "Nastavi uporabniško ime skrbnika.", "Set an admin password." => "Nastavi geslo skrbnika.", +"Can't create or write into the data directory %s" => "Ni mogoče zapisati podatkov v podatkovno mapo %s", "%s shared »%s« with you" => "%s je omogočil souporabo »%s«", "Sharing %s failed, because the file does not exist" => "Souporaba %s je spodletela, ker ta datoteka ne obstaja", "You are not allowed to share %s" => "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", @@ -55,9 +61,14 @@ $TRANSLATIONS = array( "Sharing %s failed, because this item is already shared with %s" => "Nastavljanje souporabe %s je spodletela, ker je ima uporabnik %s predmet že v souporabi.", "Sharing %s failed, because the group %s does not exist" => "Nastavljanje souporabe %s je spodletelo, ker je skupina %s ne obstaja.", "Sharing %s failed, because %s is not a member of the group %s" => "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član skupine %s.", +"You need to provide a password to create a public link, only protected links are allowed" => "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene.", "Sharing %s failed, because sharing with links is not allowed" => "Nastavljanje souporabe %s je spodletelo, ker souporaba preko povezave ni dovoljena.", "Share type %s is not valid for %s" => "Vrsta souporabe %s za %s ni veljavna.", +"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" => "Nastavljanje dovoljenj za %s je spodletelo, saj ta presegajo dovoljenja dodeljena uporabniku %s.", +"Setting permissions for %s failed, because the item was not found" => "Nastavljanje dovoljenj za %s je spodletelo, ker predmeta ni mogoče najti.", +"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" => "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.", "Cannot set expiration date. Expiration date is in the past" => "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.", +"Sharing backend %s must implement the interface OCP\\Share_Backend" => "Souporaba ozadnjega programa %s mora vsebovati tudi vmesnik OCP\\Share_Backend", "Sharing backend %s not found" => "Ozadnjega programa %s za souporabo ni mogoče najti", "Sharing backend for %s not found" => "Ozadnjega programa za souporabo za %s ni mogoče najti", "Sharing %s failed, because the user %s is the original sharer" => "Nastavljanje souporabe %s je spodletelo, ker je uporabnik %s omogočil souporabo predmeta.", @@ -81,18 +92,28 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Navedeno mora biti veljavno geslo", "The username is already being used" => "Vpisano uporabniško ime je že v uporabi", "No database drivers (sqlite, mysql, or postgresql) installed." => "Ni nameščenih programnikov podatkovnih zbirk (sqlite, mysql, ali postgresql).", +"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." => "Dovoljenja je mogoče odpraviti z %sdodelitvijo dovoljenja spletnemu strežniku za pisanje korensko mapo%s.", "Cannot write into \"config\" directory" => "Mapa 'config' nima nastavljenih ustreznih dovoljenj za pisanje!", "Cannot write into \"apps\" directory" => "Mapa \"apps\" nima nastavljenih ustreznih dovoljenj za pisanje!", +"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." => "Napako je mogoče odpraviti z dodelitvijo dovoljenja spletnemu strežniku %s za pisanje v mapo programov %s, ali pa z onemogočanjem nameščanja programov v nastavitveni datoteki.", +"Cannot create \"data\" directory (%s)" => "Ni mogoče ustvariti\"podatkovne\" mape (%s)", +"This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." => "Napako je mogoče odpraviti z <a href=\"%s\" target=\"_blank\">dodelitvijo dovoljenja spletnemu strežniku za pisanje v korensko mapo</a>.", "Setting locale to %s failed" => "Nastavljanje jezikovnih določil na %s je spodletelo.", +"Please install one of these locales on your system and restart your webserver." => "Namestiti je treba podporo za vsaj eno od navedenih jezikovnih določil v sistemu in nato ponovno zagnati spletni strežnik.", "Please ask your server administrator to install the module." => "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.", "PHP module %s not installed." => "Modul PHP %s ni nameščen.", "PHP %s or higher is required." => "Zahtevana je različica PHP %s ali višja.", "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." => "Obvestite skrbnika strežnika, da je treba posodobiti okolje PHP na najnovejšo različico. Trenutno nameščene različice skupnost PHP in ownCloud ne podpira več.", +"PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." => "Omogočen je varni način PHP. Za pravilno delovanje system ownCloud je treba možnost onemogočiti.", +"PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." => "Možnost varnega načina PHP je opuščena in jo je priporočljivo onemogočiti. Stopite v stik s skrbnikom sistema oziroma onemogočite možnost v datoteki php.ini ali med nastavitvami spletnega strežnika.", +"Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." => "Omogočena je možnost Magic Quotes. Za pravilno delovanje sistema ownCloud je treba možnost onemogočiti.", +"Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." => "Možnost Magic Quotes je opuščena in jo je priporočljivo onemogočiti. Stopite v stik s skrbnikom sistema oziroma onemogočite možnost v datoteki php.ini ali med nastavitvami spletnega strežnika.", "PHP modules have been installed, but they are still listed as missing?" => "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?", "Please ask your server administrator to restart the web server." => "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.", "PostgreSQL >= 9 required" => "Zahtevana je različica PostgreSQL >= 9.", "Please upgrade your database version" => "Posodobite različico podatkovne zbirke.", "Error occurred while checking PostgreSQL version" => "Prišlo je do napake med preverjanjem različice PostgreSQL.", +"Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" => "Prepričajte se, da je nameščena različica PostgreSQL >= 9 in preverite dnevniški zapis za več podrobnosti o napaki.", "Please change the permissions to 0770 so that the directory cannot be listed by other users." => "Spremenite dovoljenja mape na 0770 in s tem onemogočite branje vsebine drugim uporabnikom.", "Data directory (%s) is readable by other users" => "Podatkovna mapa (%s) ima določena dovoljenja za branje skupine.", "Data directory (%s) is invalid" => "Podatkovna mapa (%s) ni veljavna.", diff --git a/lib/l10n/uk.php b/lib/l10n/uk.php index 6a151d62026..cf8678c40c5 100644 --- a/lib/l10n/uk.php +++ b/lib/l10n/uk.php @@ -20,22 +20,49 @@ $TRANSLATIONS = array( "App directory already exists" => "Тека додатку вже існує", "Can't create app folder. Please fix permissions. %s" => "Неможливо створити теку додатку. Будь ласка, виправте права доступу. %s", "No source specified when installing app" => "Не вказано джерело при встановлені додатку", +"No href specified when installing app from http" => "Не вказано атрибут href при встановлені додатку з http", +"No path specified when installing app from local file" => "Не вказано шлях при встановлені додатку з локального файлу", +"Archives of type %s are not supported" => "Архіви %s не підтримуються", +"Failed to open archive when installing app" => "Неможливо відкрити архів при встановлені додатку", +"App does not provide an info.xml file" => "Додаток не має файл info.xml", +"App can't be installed because of not allowed code in the App" => "Неможливо встановити додаток. Він містить заборонений код", +"App can't be installed because it is not compatible with this version of ownCloud" => "Неможливо встановити додаток, він є несумісним з даною версією ownCloud", +"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" => "Неможливо встановити додаток, оскільки він містить параметр <shipped>true</shipped> заборонений додаткам, що не входять в поставку ", +"App can't be installed because the version in info.xml/version is not the same as the version reported from the app store" => "Неможливо встановити додаток. Версія в файлі info.xml/version не співпадає з заявленою в магазині додатків", "Application is not enabled" => "Додаток не увімкнений", "Authentication error" => "Помилка автентифікації", "Token expired. Please reload page." => "Строк дії токена скінчився. Будь ласка, перезавантажте сторінку.", +"Unknown user" => "Невідомий користувач", "%s enter the database username." => "%s введіть ім'я користувача бази даних.", "%s enter the database name." => "%s введіть назву бази даних.", "%s you may not use dots in the database name" => "%s не можна використовувати крапки в назві бази даних", "MS SQL username and/or password not valid: %s" => "MS SQL ім'я користувача та/або пароль не дійсні: %s", "You need to enter either an existing account or the administrator." => "Вам потрібно ввести або існуючий обліковий запис або administrator.", +"MySQL/MariaDB username and/or password not valid" => "MySQL/MariaDB ім'я користувача та/або пароль не дійсні", "DB Error: \"%s\"" => "Помилка БД: \"%s\"", "Offending command was: \"%s\"" => "Команда, що викликала проблему: \"%s\"", +"MySQL/MariaDB user '%s'@'localhost' exists already." => "Користувач MySQL/MariaDB '%s'@'localhost' вже існує.", +"Drop this user from MySQL/MariaDB" => "Видалити цього користувача з MySQL/MariaDB", +"MySQL/MariaDB user '%s'@'%%' already exists" => "Користувач MySQL/MariaDB '%s'@'%%' вже існує", +"Drop this user from MySQL/MariaDB." => "Видалити цього користувача з MySQL/MariaDB.", +"Oracle connection could not be established" => "Не можемо з'єднатися з Oracle ", "Oracle username and/or password not valid" => "Oracle ім'я користувача та/або пароль не дійсні", "Offending command was: \"%s\", name: %s, password: %s" => "Команда, що викликала проблему: \"%s\", ім'я: %s, пароль: %s", "PostgreSQL username and/or password not valid" => "PostgreSQL ім'я користувача та/або пароль не дійсні", "Set an admin username." => "Встановіть ім'я адміністратора.", "Set an admin password." => "Встановіть пароль адміністратора.", +"Can't create or write into the data directory %s" => "Неможливо створити або записати каталог даних %s", "%s shared »%s« with you" => "%s розподілено »%s« з тобою", +"Sharing %s failed, because the file does not exist" => "Не вдалося поділитися %s, оскільки файл не існує", +"You are not allowed to share %s" => "Вам заборонено поширювати %s", +"Sharing %s failed, because the user %s is the item owner" => "Не вдалося поділитися з %s, оскільки %s вже є володарем", +"Sharing %s failed, because the user %s does not exist" => "Не вдалося поділитися з %s, оскільки користувач %s не існує", +"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" => "Не вдалося поділитися %s, оскільки користувач %s не є членом будь-якої групи в яку входить %s", +"Sharing %s failed, because this item is already shared with %s" => "Не вдалося поділитися %s, оскільки файл вже в загальному доступі з %s", +"Sharing %s failed, because the group %s does not exist" => "Не вдалося поділитися %s, оскільки група %s не існує", +"Sharing %s failed, because %s is not a member of the group %s" => "Не вдалося поділитися %s, оскільки %s не є членом групи %s", +"You need to provide a password to create a public link, only protected links are allowed" => "Вам необхідно задати пароль для створення публічного посилання. Дозволені лише захищені посилання", +"Sharing %s failed, because sharing with links is not allowed" => "Не вдалося поділитися %s, оскільки публічний доступ через посилання заборонений", "Could not find category \"%s\"" => "Не вдалося знайти категорію \"%s\"", "seconds ago" => "секунди тому", "_%n minute ago_::_%n minutes ago_" => array("","","%n хвилин тому"), diff --git a/lib/private/db.php b/lib/private/db.php index 9b904a1518f..b820281b8a3 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -205,6 +205,13 @@ class OC_DB { } /** + * Rollback the database changes done during a transaction that is in progress + */ + public static function rollback() { + return \OC::$server->getDatabaseConnection()->rollback(); + } + + /** * saves database schema to xml file * @param string $file name of file * @param int $mode diff --git a/lib/private/db/connectionfactory.php b/lib/private/db/connectionfactory.php index 1f676f1fca2..f6253e09b95 100644 --- a/lib/private/db/connectionfactory.php +++ b/lib/private/db/connectionfactory.php @@ -153,6 +153,13 @@ class ConnectionFactory { } $connectionParams['tablePrefix'] = $config->getSystemValue('dbtableprefix', 'oc_'); + + //additional driver options, eg. for mysql ssl + $driverOptions = $config->getSystemValue('dbdriveroptions', null); + if ($driverOptions) { + $connectionParams['driverOptions'] = $driverOptions; + } + return $connectionParams; } } diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index 3c367f144db..632e320576c 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -144,7 +144,7 @@ class MDB2SchemaManager { } /** - * @param \Doctrine\DBAL\Schema\Schema $schema + * @param \Doctrine\DBAL\Schema\Schema|\Doctrine\DBAL\Schema\SchemaDiff $schema * @return bool */ private function executeSchemaChange($schema) { diff --git a/lib/private/files.php b/lib/private/files.php index a983f6f32f5..571d3215caa 100644 --- a/lib/private/files.php +++ b/lib/private/files.php @@ -195,7 +195,7 @@ class OC_Files { * @param ZipStreamer $zip * @param string $internalDir */ - public static function zipAddDir($dir, $zip, $internalDir='') { + public static function zipAddDir($dir, ZipStreamer $zip, $internalDir='') { $dirname=basename($dir); $rootDir = $internalDir.$dirname; if (!empty($rootDir)) { diff --git a/lib/private/files/mount/manager.php b/lib/private/files/mount/manager.php index e5180cfe173..0ccf42941de 100644 --- a/lib/private/files/mount/manager.php +++ b/lib/private/files/mount/manager.php @@ -19,7 +19,7 @@ class Manager { /** * @param Mount $mount */ - public function addMount($mount) { + public function addMount(Mount $mount) { $this->mounts[$mount->getMountPoint()] = $mount; } diff --git a/lib/private/files/storage/local.php b/lib/private/files/storage/local.php index 0a612ae505b..1c5fafc12fa 100644 --- a/lib/private/files/storage/local.php +++ b/lib/private/files/storage/local.php @@ -90,6 +90,7 @@ if (\OC_Util::runningOnWindows()) { } public function stat($path) { + clearstatcache(); $fullPath = $this->datadir . $path; $statResult = stat($fullPath); if (PHP_INT_SIZE === 4 && !$this->is_dir($path)) { @@ -276,5 +277,25 @@ if (\OC_Util::runningOnWindows()) { public function isLocal() { return true; } + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + public function getETag($path) { + if ($this->is_file($path)) { + $stat = $this->stat($path); + return md5( + $stat['mtime'] . + $stat['ino'] . + $stat['dev'] . + $stat['size'] + ); + } else { + return parent::getETag($path); + } + } } } diff --git a/lib/private/helper.php b/lib/private/helper.php index 628af14fa08..5b1d31bfc59 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -25,7 +25,6 @@ * Collection of useful functions */ class OC_Helper { - private static $tmpFiles = array(); private static $mimetypeIcons = array(); private static $mimetypeDetector; private static $templateManager; @@ -593,136 +592,24 @@ class OC_Helper { * * @param string $postfix * @return string + * @deprecated Use the TempManager instead * * temporary files are automatically cleaned up after the script is finished */ public static function tmpFile($postfix = '') { - $file = get_temp_dir() . '/' . md5(time() . rand()) . $postfix; - $fh = fopen($file, 'w'); - if ($fh!==false){ - fclose($fh); - self::$tmpFiles[] = $file; - } else { - OC_Log::write( - 'OC_Helper', - sprintf( - 'Can not create a temporary file in directory %s. Check it exists and has correct permissions', - get_temp_dir() - ), - OC_Log::WARN - ); - $file = false; - } - return $file; - } - - /** - * move a file to oc-noclean temp dir - * - * @param string $filename - * @return mixed - * - */ - public static function moveToNoClean($filename = '') { - if ($filename == '') { - return false; - } - $tmpDirNoClean = get_temp_dir() . '/oc-noclean/'; - if (!file_exists($tmpDirNoClean) || !is_dir($tmpDirNoClean)) { - if (file_exists($tmpDirNoClean)) { - unlink($tmpDirNoClean); - } - mkdir($tmpDirNoClean); - } - $newname = $tmpDirNoClean . basename($filename); - if (rename($filename, $newname)) { - return $newname; - } else { - return false; - } + return \OC::$server->getTempManager()->getTemporaryFile($postfix); } /** * create a temporary folder with an unique filename * * @return string + * @deprecated Use the TempManager instead * * temporary files are automatically cleaned up after the script is finished */ public static function tmpFolder() { - $path = get_temp_dir() . DIRECTORY_SEPARATOR . md5(time() . rand()); - mkdir($path); - self::$tmpFiles[] = $path; - return $path . DIRECTORY_SEPARATOR; - } - - /** - * remove all files created by self::tmpFile - */ - public static function cleanTmp() { - $leftoversFile = get_temp_dir() . '/oc-not-deleted'; - if (file_exists($leftoversFile)) { - $leftovers = file($leftoversFile); - foreach ($leftovers as $file) { - try { - self::rmdirr($file); - } catch (UnexpectedValueException $ex) { - // not really much we can do here anymore - if (!is_null(\OC::$server)) { - $message = $ex->getMessage(); - \OC::$server->getLogger()->error("Error deleting file/folder: $file - Reason: $message", - array('app' => 'core')); - } - } - } - unlink($leftoversFile); - } - - foreach (self::$tmpFiles as $file) { - if (file_exists($file)) { - try { - if (!self::rmdirr($file)) { - file_put_contents($leftoversFile, $file . "\n", FILE_APPEND); - } - } catch (UnexpectedValueException $ex) { - // not really much we can do here anymore - if (!is_null(\OC::$server)) { - $message = $ex->getMessage(); - \OC::$server->getLogger()->error("Error deleting file/folder: $file - Reason: $message", - array('app' => 'core')); - } - } - } - } - } - - /** - * remove all files in PHP /oc-noclean temp dir - */ - public static function cleanTmpNoClean() { - $tmpDirNoCleanName=get_temp_dir() . '/oc-noclean/'; - if(file_exists($tmpDirNoCleanName) && is_dir($tmpDirNoCleanName)) { - $files=scandir($tmpDirNoCleanName); - foreach($files as $file) { - $fileName = $tmpDirNoCleanName . $file; - if (!\OC\Files\Filesystem::isIgnoredDir($file) && filemtime($fileName) + 600 < time()) { - unlink($fileName); - } - } - // if oc-noclean is empty delete it - $isTmpDirNoCleanEmpty = true; - $tmpDirNoClean = opendir($tmpDirNoCleanName); - if(is_resource($tmpDirNoClean)) { - while (false !== ($file = readdir($tmpDirNoClean))) { - if (!\OC\Files\Filesystem::isIgnoredDir($file)) { - $isTmpDirNoCleanEmpty = false; - } - } - } - if ($isTmpDirNoCleanEmpty) { - rmdir($tmpDirNoCleanName); - } - } + return \OC::$server->getTempManager()->getTemporaryFolder(); } /** diff --git a/lib/private/preview.php b/lib/private/preview.php index f8b19f11cb0..dbbe173bf80 100644 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -779,7 +779,7 @@ class Preview { * @param \OC\Files\FileInfo $file * @return bool */ - public static function isAvailable($file) { + public static function isAvailable(\OC\Files\FileInfo $file) { if (!\OC_Config::getValue('enable_previews', true)) { return false; } diff --git a/lib/private/server.php b/lib/private/server.php index b0d63af1554..186714740f7 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -72,15 +72,15 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('PreviewManager', function ($c) { return new PreviewManager(); }); - $this->registerService('TagMapper', function($c) { + $this->registerService('TagMapper', function(Server $c) { return new TagMapper($c->getDb()); }); - $this->registerService('TagManager', function ($c) { + $this->registerService('TagManager', function (Server $c) { $tagMapper = $c->query('TagMapper'); $user = \OC_User::getUser(); return new TagManager($tagMapper, $user); }); - $this->registerService('RootFolder', function ($c) { + $this->registerService('RootFolder', function (Server $c) { // TODO: get user and user manager from container as well $user = \OC_User::getUser(); /** @var $c SimpleContainer */ @@ -90,28 +90,16 @@ class Server extends SimpleContainer implements IServerContainer { $view = new View(); return new Root($manager, $view, $user); }); - $this->registerService('UserManager', function ($c) { - /** - * @var SimpleContainer $c - * @var \OC\AllConfig $config - */ - $config = $c->query('AllConfig'); + $this->registerService('UserManager', function (Server $c) { + $config = $c->getConfig(); return new \OC\User\Manager($config); }); - $this->registerService('GroupManager', function ($c) { - /** - * @var SimpleContainer $c - * @var \OC\User\Manager $userManager - */ - $userManager = $c->query('UserManager'); + $this->registerService('GroupManager', function (Server $c) { + $userManager = $c->getUserManager(); return new \OC\Group\Manager($userManager); }); - $this->registerService('UserSession', function ($c) { - /** - * @var SimpleContainer $c - * @var \OC\User\Manager $manager - */ - $manager = $c->query('UserManager'); + $this->registerService('UserSession', function (Server $c) { + $manager = $c->getUserManager(); $userSession = new \OC\User\Session($manager, new \OC\Session\Memory('')); $userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) { \OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password)); @@ -160,9 +148,8 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('L10NFactory', function ($c) { return new \OC\L10N\Factory(); }); - $this->registerService('URLGenerator', function ($c) { - /** @var $c SimpleContainer */ - $config = $c->query('AllConfig'); + $this->registerService('URLGenerator', function (Server $c) { + $config = $c->getConfig(); return new \OC\URLGenerator($config); }); $this->registerService('AppHelper', function ($c) { @@ -181,25 +168,18 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('AvatarManager', function ($c) { return new AvatarManager(); }); - $this->registerService('Logger', function ($c) { - /** @var $c SimpleContainer */ + $this->registerService('Logger', function (Server $c) { $logClass = $c->query('AllConfig')->getSystemValue('log_type', 'owncloud'); $logger = 'OC_Log_' . ucfirst($logClass); call_user_func(array($logger, 'init')); return new Log($logger); }); - $this->registerService('JobList', function ($c) { - /** - * @var Server $c - */ + $this->registerService('JobList', function (Server $c) { $config = $c->getConfig(); return new \OC\BackgroundJob\JobList($c->getDatabaseConnection(), $config); }); - $this->registerService('Router', function ($c) { - /** - * @var Server $c - */ + $this->registerService('Router', function (Server $c) { $cacheFactory = $c->getMemCacheFactory(); if ($cacheFactory->isAvailable()) { $router = new \OC\Route\CachingRouter($cacheFactory->create('route')); @@ -214,13 +194,10 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('SecureRandom', function ($c) { return new SecureRandom(); }); - $this->registerService('Crypto', function ($c) { - return new Crypto(\OC::$server->getConfig(), \OC::$server->getSecureRandom()); + $this->registerService('Crypto', function (Server $c) { + return new Crypto($c->getConfig(), $c->getSecureRandom()); }); - $this->registerService('DatabaseConnection', function ($c) { - /** - * @var Server $c - */ + $this->registerService('DatabaseConnection', function (Server $c) { $factory = new \OC\DB\ConnectionFactory(); $type = $c->getConfig()->getSystemValue('dbtype', 'sqlite'); if (!$factory->isValidType($type)) { @@ -231,18 +208,14 @@ class Server extends SimpleContainer implements IServerContainer { $connection->getConfiguration()->setSQLLogger($c->getQueryLogger()); return $connection; }); - $this->registerService('Db', function ($c) { - /** - * @var Server $c - */ + $this->registerService('Db', function (Server $c) { return new Db($c->getDatabaseConnection()); }); - $this->registerService('HTTPHelper', function (SimpleContainer $c) { - $config = $c->query('AllConfig'); + $this->registerService('HTTPHelper', function (Server $c) { + $config = $c->getConfig(); return new HTTPHelper($config); }); - $this->registerService('EventLogger', function ($c) { - /** @var Server $c */ + $this->registerService('EventLogger', function (Server $c) { if (defined('DEBUG') and DEBUG) { return new EventLogger(); } else { @@ -256,6 +229,10 @@ class Server extends SimpleContainer implements IServerContainer { return new NullQueryLogger(); } }); + $this->registerService('TempManager', function ($c) { + /** @var Server $c */ + return new TempManager(get_temp_dir(), $c->getLogger()); + }); } /** @@ -617,4 +594,13 @@ class Server extends SimpleContainer implements IServerContainer { function getQueryLogger() { return $this->query('QueryLogger'); } + + /** + * Get the manager for temporary files and folders + * + * @return \OCP\ITempManager + */ + function getTempManager() { + return $this->query('TempManager'); + } } diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index cbaadd5768f..a93449f202f 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -33,7 +33,6 @@ class OC_TemplateLayout extends OC_Template { $this->config = \OC::$server->getConfig(); // Decide which page we show - if( $renderAs == 'user' ) { parent::__construct( 'core', 'layout.user' ); if(in_array(OC_APP::getCurrentApp(), array('settings','admin', 'help'))!==false) { @@ -85,7 +84,11 @@ class OC_TemplateLayout extends OC_Template { $this->assign('bodyid', 'body-login'); } else { parent::__construct('core', 'layout.base'); + } + // Send the language to our layouts + $this->assign('language', OC_L10N::findLanguage()); + if(empty(self::$versionHash)) { self::$versionHash = md5(implode(',', OC_App::getAppVersions())); diff --git a/lib/private/tempmanager.php b/lib/private/tempmanager.php new file mode 100644 index 00000000000..a3bb07f9d63 --- /dev/null +++ b/lib/private/tempmanager.php @@ -0,0 +1,146 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC; + +use OCP\ILogger; +use OCP\ITempManager; + +class TempManager implements ITempManager { + /** + * Current temporary files and folders + * + * @var string[] + */ + protected $current = array(); + + /** + * i.e. /tmp on linux systems + * + * @var string + */ + protected $tmpBaseDir; + + /** + * @var \OCP\ILogger + */ + protected $log; + + /** + * @param string $baseDir + * @param \OCP\ILogger $logger + */ + public function __construct($baseDir, ILogger $logger) { + $this->tmpBaseDir = $baseDir; + $this->log = $logger; + } + + protected function generatePath($postFix) { + return $this->tmpBaseDir . '/oc_tmp_' . md5(time() . rand()) . $postFix; + } + + /** + * Create a temporary file and return the path + * + * @param string $postFix + * @return string + */ + public function getTemporaryFile($postFix = '') { + $file = $this->generatePath($postFix); + if (is_writable($this->tmpBaseDir)) { + touch($file); + $this->current[] = $file; + return $file; + } else { + $this->log->warning( + 'Can not create a temporary file in directory {dir}. Check it exists and has correct permissions', + array( + 'dir' => $this->tmpBaseDir + ) + ); + return false; + } + } + + /** + * Create a temporary folder and return the path + * + * @param string $postFix + * @return string + */ + public function getTemporaryFolder($postFix = '') { + $path = $this->generatePath($postFix); + if (is_writable($this->tmpBaseDir)) { + mkdir($path); + $this->current[] = $path; + return $path . '/'; + } else { + $this->log->warning( + 'Can not create a temporary folder in directory {dir}. Check it exists and has correct permissions', + array( + 'dir' => $this->tmpBaseDir + ) + ); + return false; + } + } + + /** + * Remove the temporary files and folders generated during this request + */ + public function clean() { + $this->cleanFiles($this->current); + } + + protected function cleanFiles($files) { + foreach ($files as $file) { + if (file_exists($file)) { + try { + \OC_Helper::rmdirr($file); + } catch (\UnexpectedValueException $ex) { + $this->log->warning( + "Error deleting temporary file/folder: {file} - Reason: {error}", + array( + 'file' => $file, + 'error' => $ex->getMessage() + ) + ); + } + } + } + } + + /** + * Remove old temporary files and folders that were failed to be cleaned + */ + public function cleanOld() { + $this->cleanFiles($this->getOldFiles()); + } + + /** + * Get all temporary files and folders generated by oc older than an hour + * + * @return string[] + */ + protected function getOldFiles() { + $cutOfTime = time() - 3600; + $files = array(); + $dh = opendir($this->tmpBaseDir); + while (($file = readdir($dh)) !== false) { + if (substr($file, 0, 7) === 'oc_tmp_') { + $path = $this->tmpBaseDir . '/' . $file; + $mtime = filemtime($path); + if ($mtime < $cutOfTime) { + $files[] = $path; + } + } + } + return $files; + } +} diff --git a/lib/private/util.php b/lib/private/util.php index dd131e41310..6cd982c222e 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -420,7 +420,7 @@ class OC_Util { * @param \OCP\IConfig $config * @return array arrays with error messages and hints */ - public static function checkServer($config) { + public static function checkServer(\OCP\IConfig $config) { $l = \OC::$server->getL10N('lib'); $errors = array(); $CONFIG_DATADIRECTORY = $config->getSystemValue('datadirectory', OC::$SERVERROOT . '/data'); @@ -1306,7 +1306,7 @@ class OC_Util { * @param \OCP\IConfig $config * @return bool whether the core or any app needs an upgrade */ - public static function needUpgrade($config) { + public static function needUpgrade(\OCP\IConfig $config) { if ($config->getSystemValue('installed', false)) { $installedVersion = $config->getSystemValue('version', '0.0.0'); $currentVersion = implode('.', OC_Util::getVersion()); diff --git a/lib/public/db.php b/lib/public/db.php index ba3a4724ce0..e8fc817106e 100644 --- a/lib/public/db.php +++ b/lib/public/db.php @@ -97,6 +97,13 @@ class DB { } /** + * Rollback the database changes done during a transaction that is in progress + */ + public static function rollback() { + \OC_DB::rollback(); + } + + /** * Check if a result is an error, works with Doctrine * @param mixed $result * @return bool diff --git a/lib/public/iconfig.php b/lib/public/iconfig.php index 404cf030dee..554fee5b22f 100644 --- a/lib/public/iconfig.php +++ b/lib/public/iconfig.php @@ -46,7 +46,7 @@ interface IConfig { * Looks up a system wide defined value * * @param string $key the key of the value, under which it was saved - * @param string $default the default value to be returned if the value isn't set + * @param mixed $default the default value to be returned if the value isn't set * @return mixed the value or $default */ public function getSystemValue($key, $default = ''); diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index 55c2c89b710..c1592551978 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -264,4 +264,11 @@ interface IServerContainer { * @return \OCP\Diagnostics\IQueryLogger */ function getQueryLogger(); + + /** + * Get the manager for temporary files and folders + * + * @return \OCP\ITempManager + */ + function getTempManager(); } diff --git a/lib/public/itempmanager.php b/lib/public/itempmanager.php new file mode 100644 index 00000000000..ebd94978038 --- /dev/null +++ b/lib/public/itempmanager.php @@ -0,0 +1,38 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP; + +interface ITempManager { + /** + * Create a temporary file and return the path + * + * @param string $postFix + * @return string + */ + public function getTemporaryFile($postFix = ''); + + /** + * Create a temporary folder and return the path + * + * @param string $postFix + * @return string + */ + public function getTemporaryFolder($postFix = ''); + + /** + * Remove the temporary files and folders generated during this request + */ + public function clean(); + + /** + * Remove old temporary files and folders that were failed to be cleaned + */ + public function cleanOld(); +} diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index 23fbf6589ff..786ad676868 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Очаква се валидно име на група", "deleted {groupName}" => "{groupName} изтрит", "undo" => "възтановяване", +"no group" => "няма група", "never" => "никога", "deleted {userName}" => "{userName} изтрит", "add group" => "нова група", @@ -78,6 +79,7 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Валидна парола трябва да бъде зададена.", "Warning: Home directory for user \"{user}\" already exists" => "Предупреждение: Личната директория на потребителя \"{user}\" вече съществува.", "__language_name__" => "__language_name__", +"Personal Info" => "Лична Информация", "SSL root certificates" => "SSL root сертификати", "Encryption" => "Криптиране", "Everything (fatal issues, errors, warnings, info, debug)" => "Всичко (фатални проблеми, грешки, предупреждения, информация, дебъгване)", @@ -226,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Неограничено", "Other" => "Друга...", "Username" => "Потребителско Име", +"Group Admin for" => "Групов администратор за", "Quota" => "Квота", "Storage Location" => "Място за Запис", "Last Login" => "Последно Вписване", diff --git a/settings/l10n/cs_CZ.php b/settings/l10n/cs_CZ.php index 8c8b4e4692d..0b003082c50 100644 --- a/settings/l10n/cs_CZ.php +++ b/settings/l10n/cs_CZ.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Musíte zadat platný název skupiny", "deleted {groupName}" => "smazána {groupName}", "undo" => "vrátit zpět", +"no group" => "není ve skupině", "never" => "nikdy", "deleted {userName}" => "smazán {userName}", "add group" => "přidat skupinu", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Neomezeně", "Other" => "Jiný", "Username" => "Uživatelské jméno", +"Group Admin for" => "Administrátor skupiny ", "Quota" => "Kvóta", "Storage Location" => "Umístění úložiště", "Last Login" => "Poslední přihlášení", diff --git a/settings/l10n/de.php b/settings/l10n/de.php index c8c8cc32a2b..19d18f82061 100644 --- a/settings/l10n/de.php +++ b/settings/l10n/de.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" => "{groupName} gelöscht", "undo" => "rückgängig machen", +"no group" => "Keine Gruppe", "never" => "niemals", "deleted {userName}" => "{userName} gelöscht", "add group" => "Gruppe hinzufügen", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Unbegrenzt", "Other" => "Andere", "Username" => "Benutzername", +"Group Admin for" => "Gruppenadministrator für", "Quota" => "Quota", "Storage Location" => "Speicherort", "Last Login" => "Letzte Anmeldung", diff --git a/settings/l10n/de_DE.php b/settings/l10n/de_DE.php index 1a5da377b77..25328f377e3 100644 --- a/settings/l10n/de_DE.php +++ b/settings/l10n/de_DE.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" => "{groupName} gelöscht", "undo" => "rückgängig machen", +"no group" => "Keine Gruppe", "never" => "niemals", "deleted {userName}" => "{userName} gelöscht", "add group" => "Gruppe hinzufügen", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Unbegrenzt", "Other" => "Andere", "Username" => "Benutzername", +"Group Admin for" => "Gruppenadministrator für", "Quota" => "Kontingent", "Storage Location" => "Speicherort", "Last Login" => "Letzte Anmeldung", diff --git a/settings/l10n/el.php b/settings/l10n/el.php index 71e7c9ce387..82fefc35c61 100644 --- a/settings/l10n/el.php +++ b/settings/l10n/el.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Πρέπει να δοθεί ένα έγκυρο όνομα ομάδας", "deleted {groupName}" => "διαγραφή {groupName}", "undo" => "αναίρεση", +"no group" => "καμια ομάδα", "never" => "ποτέ", "deleted {userName}" => "διαγραφή {userName}", "add group" => "προσθήκη ομάδας", diff --git a/settings/l10n/en_GB.php b/settings/l10n/en_GB.php index dc8faf2b877..86101c029c0 100644 --- a/settings/l10n/en_GB.php +++ b/settings/l10n/en_GB.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "A valid group name must be provided", "deleted {groupName}" => "deleted {groupName}", "undo" => "undo", +"no group" => "no group", "never" => "never", "deleted {userName}" => "deleted {userName}", "add group" => "add group", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Unlimited", "Other" => "Other", "Username" => "Username", +"Group Admin for" => "Group Admin for", "Quota" => "Quota", "Storage Location" => "Storage Location", "Last Login" => "Last Login", diff --git a/settings/l10n/es.php b/settings/l10n/es.php index 36825fd90f0..adf474cda01 100644 --- a/settings/l10n/es.php +++ b/settings/l10n/es.php @@ -227,6 +227,7 @@ $TRANSLATIONS = array( "Unlimited" => "Ilimitado", "Other" => "Otro", "Username" => "Nombre de usuario", +"Group Admin for" => "Grupo administrador para", "Quota" => "Cuota", "Storage Location" => "Ubicación de almacenamiento", "Last Login" => "Último inicio de sesión", diff --git a/settings/l10n/fi_FI.php b/settings/l10n/fi_FI.php index f423410b725..e09c2d019c5 100644 --- a/settings/l10n/fi_FI.php +++ b/settings/l10n/fi_FI.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Anna kelvollinen ryhmän nimi", "deleted {groupName}" => "poistettu {groupName}", "undo" => "kumoa", +"no group" => "ei ryhmää", "never" => "ei koskaan", "deleted {userName}" => "poistettu {userName}", "add group" => "lisää ryhmä", @@ -217,6 +218,7 @@ $TRANSLATIONS = array( "Unlimited" => "Rajoittamaton", "Other" => "Muu", "Username" => "Käyttäjätunnus", +"Group Admin for" => "Ryhmäylläpitäjä kohteille", "Quota" => "Kiintiö", "Storage Location" => "Tallennustilan sijainti", "Last Login" => "Viimeisin kirjautuminen", diff --git a/settings/l10n/fr.php b/settings/l10n/fr.php index 988321b82d3..41c5635bb68 100644 --- a/settings/l10n/fr.php +++ b/settings/l10n/fr.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Vous devez spécifier un nom de groupe valide", "deleted {groupName}" => "{groupName} supprimé", "undo" => "annuler", +"no group" => "Aucun groupe", "never" => "jamais", "deleted {userName}" => "{userName} supprimé", "add group" => "ajouter un groupe", @@ -78,6 +79,7 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Un mot de passe valide doit être saisi", "Warning: Home directory for user \"{user}\" already exists" => "Attention : Le dossier Home pour l'utilisateur \"{user}\" existe déjà", "__language_name__" => "Français", +"Personal Info" => "Informations personnelles", "SSL root certificates" => "Certificats racine SSL", "Encryption" => "Chiffrement", "Everything (fatal issues, errors, warnings, info, debug)" => "Tout (erreurs fatales, erreurs, avertissements, informations, debogage)", @@ -226,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Illimité", "Other" => "Autre", "Username" => "Nom d'utilisateur", +"Group Admin for" => "Administrateur de groupe pour", "Quota" => "Quota", "Storage Location" => "Emplacement du Stockage", "Last Login" => "Dernière Connexion", diff --git a/settings/l10n/id.php b/settings/l10n/id.php index 579a7129703..639d62b7114 100644 --- a/settings/l10n/id.php +++ b/settings/l10n/id.php @@ -1,15 +1,25 @@ <?php $TRANSLATIONS = array( "Enabled" => "Diaktifkan", -"Authentication error" => "Galat saat autentikasi", +"Not enabled" => "Tidak diaktifkan", +"Recommended" => "Direkomendasikan", +"Authentication error" => "Terjadi kesalahan saat otentikasi", "Your full name has been changed." => "Nama lengkap Anda telah diubah", "Unable to change full name" => "Tidak dapat mengubah nama lengkap", "Group already exists" => "Grup sudah ada", "Unable to add group" => "Tidak dapat menambah grup", +"Files decrypted successfully" => "Berkas berhasil dideskripsi", +"Couldn't decrypt your files, please check your owncloud.log or ask your administrator" => "Tidak dapat mendeskripsi berkas Anda, mohon periksa owncloud.log Anda atau tanyakan pada administrator Anda", +"Couldn't decrypt your files, check your password and try again" => "Tidak dapat mendeskripsi berkas Anda, periksa sandi Anda dan coba lagi", +"Encryption keys deleted permanently" => "Kunci enkripsi dihapus secara permanen", +"Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" => "Tidak dapat menghapus kunci enkripsi anda secara permanen, mohon periksa owncloud.log atau tanyakan pada administrator Anda", +"Couldn't remove app." => "Tidak dapat menghapus aplikasi.", "Email saved" => "Email disimpan", "Invalid email" => "Email tidak valid", "Unable to delete group" => "Tidak dapat menghapus grup", "Unable to delete user" => "Tidak dapat menghapus pengguna", +"Backups restored successfully" => "Cadangan berhasil dipulihkan", +"Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" => "Tidak dapat memulihkan kunci enkripsi Anda, mohon periksa owncloud.log Anda atau tanyakan pada administrator Anda.", "Language changed" => "Bahasa telah diubah", "Invalid request" => "Permintaan tidak valid", "Admins can't remove themself from the admin group" => "Admin tidak dapat menghapus dirinya sendiri dari grup admin", @@ -18,41 +28,58 @@ $TRANSLATIONS = array( "Couldn't update app." => "Tidak dapat memperbarui aplikasi.", "Wrong password" => "Sandi salah", "No user supplied" => "Tidak ada pengguna yang diberikan", +"Please provide an admin recovery password, otherwise all user data will be lost" => "Mohon sediakan sandi pemulihan admin, jika tidak semua data pengguna akan terhapus", "Wrong admin recovery password. Please check the password and try again." => "Sandi pemulihan admin salah. Periksa sandi dan ulangi kembali.", "Back-end doesn't support password change, but the users encryption key was successfully updated." => "Back-end tidak mendukung perubahan password, tetapi kunci enkripsi pengguna berhasil diperbarui.", "Unable to change password" => "Tidak dapat mengubah sandi", "Saved" => "Disimpan", "test email settings" => "pengaturan email percobaan", "If you received this email, the settings seem to be correct." => "Jika Anda menerma email ini, pengaturan tampaknya sudah benar.", +"A problem occurred while sending the email. Please revise your settings." => "Muncul masalah tidak terduga saat mengirim email. Mohon merevisi pengaturan Anda.", "Email sent" => "Email terkirim", "You need to set your user email before being able to send test emails." => "Anda perlu menetapkan email pengguna Anda sebelum dapat mengirim email percobaan.", +"Are you really sure you want add \"{domain}\" as trusted domain?" => "Apakah And yakin ingin menambahkan \"{domain}\" sebagai domain terpercaya?", +"Add trusted domain" => "Tambah domain terpercaya", "Sending..." => "Mengirim", "All" => "Semua", "Please wait...." => "Mohon tunggu....", -"Error while disabling app" => "Galat saat menonaktifkan aplikasi", +"Error while disabling app" => "Terjadi kesalahan saat menonaktifkan aplikasi", "Disable" => "Nonaktifkan", "Enable" => "Aktifkan", -"Error while enabling app" => "Galat saat mengakifkan aplikasi", +"Error while enabling app" => "Terjadi kesalahan saat mengakifkan aplikasi", "Updating...." => "Memperbarui....", -"Error while updating app" => "Gagal ketika memperbarui aplikasi", +"Error while updating app" => "Terjadi kesalahan saat memperbarui aplikasi", "Updated" => "Diperbarui", +"Uninstalling ...." => "Mencopot ...", +"Error while uninstalling app" => "Terjadi kesalahan saat mencopot aplikasi", +"Uninstall" => "Copot", "Select a profile picture" => "Pilih foto profil", "Very weak password" => "Sandi sangat lemah", "Weak password" => "Sandi lemah", "So-so password" => "Sandi lumayan", "Good password" => "Sandi baik", "Strong password" => "Sandi kuat", +"Valid until {date}" => "Berlaku sampai {date}", "Delete" => "Hapus", -"Decrypting files... Please wait, this can take some time." => "Mendeskripsi berkas... Modon tunggu, ini memerlukan beberapa saat.", +"Decrypting files... Please wait, this can take some time." => "Mendeskripsi berkas... Mohon tunggu, ini memerlukan beberapa saat.", +"Delete encryption keys permanently." => "Hapus kunci enkripsi secara permanen.", +"Restore encryption keys." => "memulihkan kunci enkripsi.", "Groups" => "Grup", +"Unable to delete {objName}" => "Tidak dapat menghapus {objName}", +"Error creating group" => "Terjadi kesalahan saat membuat grup", +"A valid group name must be provided" => "Harus memberikan nama grup yang benar.", +"deleted {groupName}" => "menghapus {groupName}", "undo" => "urungkan", +"no group" => "tanpa grup", "never" => "tidak pernah", +"deleted {userName}" => "menghapus {userName}", "add group" => "tambah grup", -"A valid username must be provided" => "Tuliskan nama pengguna yang valid", -"Error creating user" => "Gagal membuat pengguna", -"A valid password must be provided" => "Tuliskan sandi yang valid", +"A valid username must be provided" => "Harus memberikan nama pengguna yang benar", +"Error creating user" => "Terjadi kesalahan saat membuat pengguna", +"A valid password must be provided" => "Harus memberikan sandi yang benar", "Warning: Home directory for user \"{user}\" already exists" => "Peringatan: Direktori home untuk pengguna \"{user}\" sudah ada", "__language_name__" => "__language_name__", +"Personal Info" => "Info Pribadi", "SSL root certificates" => "Sertifikat root SSL", "Encryption" => "Enkripsi", "Everything (fatal issues, errors, warnings, info, debug)" => "Semuanya (Masalah fatal, galat, peringatan, info, debug)", @@ -69,25 +96,47 @@ $TRANSLATIONS = array( "Security Warning" => "Peringatan Keamanan", "You are accessing %s via HTTP. We strongly suggest you configure your server to require using HTTPS instead." => "Anda mengakses %s melalui HTTP. Kami sangat menyarankan Anda untuk mengkonfigurasi server dengan menggunakan HTTPS sebagai gantinya.", "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." => "Direktori data dan berkas Anda mungkin dapat diakses dari internet. Berkas .htaccess tidak bekerja. Kami sangat menyarankan untuk mengkonfigurasi server web Anda agar direktori data tidak lagi dapat diakses atau Anda dapat memindahkan direktori data di luar dokumen root webserver.", -"Setup Warning" => "Peringatan Persiapan", -"Module 'fileinfo' missing" => "Module 'fileinfo' tidak ada", +"Setup Warning" => "Peringatan Pengaturan", +"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." => "Tampaknya pengaturan PHP strip inline doc blocks. Hal ini akan membuat beberapa aplikasi inti tidak dapat diakses.", +"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." => "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.", +"Database Performance Info" => "Info Performa Basis Data", +"SQLite is used as database. For larger installations we recommend to change this. To migrate to another database use the command line tool: 'occ db:convert-type'" => "SQLite akan digunakan sebagai basis data. Untuk instalasi besar, kami merekomendasikan untuk mengubahnya. Untuk berpindah ke basis data lainnya, gunakan alat baris perintah: 'occ db:convert-type'", +"Module 'fileinfo' missing" => "Modul 'fileinfo' tidak ada", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." => "Module 'fileinfo' pada PHP tidak ada. Kami sangat menyarankan untuk mengaktifkan modul ini untuk mendapatkan hasil terbaik pada proses pendeteksian mime-type.", "Your PHP version is outdated" => "Versi PHP telah usang", "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." => "Versi PHP telah usang. Kami sangat menyarankan untuk diperbarui ke versi 5.3.8 atau yang lebih baru karena versi lama diketahui rusak. Ada kemungkinan bahwa instalasi ini tidak bekerja dengan benar.", +"PHP charset is not set to UTF-8" => "Charset PHP tidak disetel ke UTF-8", +"PHP charset is not set to UTF-8. This can cause major issues with non-ASCII characters in file names. We highly recommend to change the value of 'default_charset' php.ini to 'UTF-8'." => "Charset PHP tidak disetel ke UTF-8. Hal ini dapat menyebabkan masalah besar dengan karakter non-ASCII di nama berkas. Kami sangat merekomendasikan untuk mengubah nilai 'default_charset' php.ini ke 'UTF-8'.", "Locale not working" => "Kode pelokalan tidak berfungsi", "System locale can not be set to a one which supports UTF-8." => "Sistem lokal tidak dapat diatur untuk satu yang mendukung UTF-8.", "This means that there might be problems with certain characters in file names." => "Ini artinya mungkin ada masalah dengan karakter tertentu pada nama berkas.", "We strongly suggest to install the required packages on your system to support one of the following locales: %s." => "Kami sangat menyarankan untuk menginstal paket yang dibutuhkan pada sistem agar mendukung salah satu bahasa berikut: %s.", +"URL generation in notification emails" => "URL dibuat dalam email pemberitahuan", +"If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" => "Jika instalasi Anda tidak terinstal didalam root domain dan menggunakan cron sistem, ini dapat menyebabkan masalah dengan pembuatan URL. Untuk mencegah masalah ini, mohon atur opsi \"overwritewebroot\" didalam berkas config.php ke jalur lokasi webroot instalasi Anda (Disarankan: \"%s\")", +"Connectivity checks" => "Pemeriksaan konektivitas", +"No problems found" => "Masalah tidak ditemukan", "Please double check the <a href='%s'>installation guides</a>." => "Silakan periksa ulang <a href='%s'>panduan instalasi</a>.", "Cron" => "Cron", "Last cron was executed at %s." => "Cron terakhir dieksekusi pada %s.", +"Last cron was executed at %s. This is more than an hour ago, something seems wrong." => "Cron terakhir dieksekusi pada %s. Hal ini lebih dari sejam yang lalu, ada sesuatu yang salah.", +"Cron was not executed yet!" => "Cron masih belum dieksekusi!", "Execute one task with each page loaded" => "Jalankan tugas setiap kali halaman dimuat", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." => "cron.php didaftarkan pada layanan webcron untuk memanggil cron.php setiap 15 menit melalui http.", +"Use system's cron service to call the cron.php file every 15 minutes." => "Gunakan layanan cron sistem untuk memanggil berkas cron.php setiap 15 menit.", "Sharing" => "Berbagi", "Allow apps to use the Share API" => "Izinkan aplikasi untuk menggunakan API Pembagian", +"Allow users to share via link" => "Izinkan pengguna untuk membagikan via tautan", +"Enforce password protection" => "Berlakukan perlindungan sandi", "Allow public uploads" => "Izinkan unggahan publik", +"Set default expiration date" => "Atur tanggal kadaluarsa default", +"Expire after " => "Kadaluarsa setelah", "days" => "hari", +"Enforce expiration date" => "Berlakukan tanggal kadaluarsa", "Allow resharing" => "Izinkan pembagian ulang", +"Restrict users to only share with users in their groups" => "Batasi pengguna untuk hanya membagikan dengan pengguna didalam grup mereka", +"Allow users to send mail notification for shared files" => "Izinkan pengguna untuk mengirimkan email pemberitahuan untuk berkas berbagi", +"Exclude groups from sharing" => "Tidak termasuk grup untuk berbagi", +"These groups will still be able to receive shares, but not to initiate them." => "Grup ini akan tetap dapat menerima berbagi, tatapi tidak dapat membagikan.", "Security" => "Keamanan", "Enforce HTTPS" => "Selalu Gunakan HTTPS", "Forces the clients to connect to %s via an encrypted connection." => "Memaksa klien untuk menghubungkan ke %s menggunakan sambungan yang dienskripsi.", @@ -96,6 +145,7 @@ $TRANSLATIONS = array( "This is used for sending out notifications." => "Ini digunakan untuk mengirim notifikasi keluar.", "Send mode" => "Modus kirim", "From address" => "Dari alamat", +"mail" => "email", "Authentication method" => "Metode otentikasi", "Authentication required" => "Diperlukan otentikasi", "Server address" => "Alamat server", @@ -103,24 +153,32 @@ $TRANSLATIONS = array( "Credentials" => "Kredensial", "SMTP Username" => "Nama pengguna SMTP", "SMTP Password" => "Sandi SMTP", +"Store credentials" => "Simpan kredensial", "Test email settings" => "Pengaturan email percobaan", "Send email" => "Kirim email", -"Log" => "Catat", -"Log level" => "Level pencatatan", +"Log" => "Log", +"Log level" => "Level log", "More" => "Lainnya", "Less" => "Ciutkan", "Version" => "Versi", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Dikembangkan oleh <a href=\"http://ownCloud.org/contact\" target=\"_blank\">komunitas ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">kode sumber</a> dilisensikan di bawah <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", +"More apps" => "Lebih banyak aplikasi", +"Add your app" => "Tambah aplikasi Anda", "by" => "oleh", +"licensed" => "dilisensikan", "Documentation:" => "Dokumentasi:", "User Documentation" => "Dokumentasi Pengguna", "Admin Documentation" => "Dokumentasi Admin", +"Update to %s" => "Perbarui ke %s", +"Enable only for specific groups" => "Aktifkan hanya untuk grup tertentu", +"Uninstall App" => "Copot aplikasi", "Administrator Documentation" => "Dokumentasi Administrator", "Online Documentation" => "Dokumentasi Online", "Forum" => "Forum", "Bugtracker" => "Bugtracker", "Commercial Support" => "Dukungan Komersial", "Get the apps to sync your files" => "Dapatkan aplikasi untuk sinkronisasi berkas Anda", +"If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\">spread the word</a>!" => "Jika Anda ingin mendukung proyek ini\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\">bergabung dengan pembagunan</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\">sebarkan promosi</a>!", "Show First Run Wizard again" => "Tampilkan Penuntun Konfigurasi Awal", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Anda telah menggunakan <strong>%s</strong> dari total <strong>%s</strong>", "Password" => "Sandi", @@ -137,29 +195,45 @@ $TRANSLATIONS = array( "Upload new" => "Unggah baru", "Select new from Files" => "Pilih baru dari Berkas", "Remove image" => "Hapus gambar", -"Either png or jpg. Ideally square but you will be able to crop it." => "Bisa png atau jpg. Idealnya berbentuk persegi tetapi jika tidak Anda bisa memotongnya nanti.", +"Either png or jpg. Ideally square but you will be able to crop it." => "Boleh png atau jpg. Idealnya berbentuk persegi tetapi jika tidak, Anda bisa memotongnya nanti.", "Your avatar is provided by your original account." => "Avatar disediakan oleh akun asli Anda.", "Cancel" => "Batal", "Choose as profile image" => "Pilih sebagai gambar profil", "Language" => "Bahasa", "Help translate" => "Bantu menerjemahkan", +"Common Name" => "Nama umum", +"Valid until" => "Berlaku sampai", +"Issued By" => "Diterbitkan oleh", +"Valid until %s" => "Berlaku sampai %s", "Import Root Certificate" => "Impor Sertifikat Root", "The encryption app is no longer enabled, please decrypt all your files" => "Aplikasi enkripsi tidak lagi diaktifkan, silahkan mendekripsi semua file Anda", "Log-in password" => "Sandi masuk", "Decrypt all Files" => "Deskripsi semua Berkas", +"Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." => "Kunci enkripsi Anda dipindahkan ke lokasi cadangan. Jika terjadi sesuatu yang tidak beres, Anda dapat memulihkan kunci. Hanya menghapusnya secara permanen jika Anda yakin bahwa semua berkas telah didekripsi dengan benar.", +"Restore Encryption Keys" => "Pulihkan Kunci Enkripsi", +"Delete Encryption Keys" => "Hapus Kuncu Enkripsi", +"Show storage location" => "Tampilkan kolasi penyimpanan", +"Show last log in" => "Tampilkan masuk terakhir", "Login Name" => "Nama Masuk", "Create" => "Buat", "Admin Recovery Password" => "Sandi pemulihan Admin", "Enter the recovery password in order to recover the users files during password change" => "Masukkan sandi pemulihan untuk memulihkan berkas pengguna saat penggantian sandi", +"Search Users and Groups" => "Telusuri Pengguna dan Grup", +"Add Group" => "Tambah Grup", "Group" => "Grup", +"Everyone" => "Semua orang", +"Admins" => "Admin", "Default Quota" => "Kuota default", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" => "Silakan masukkan jumlah penyimpanan (contoh: \"512 MB\" atau \"12 GB\")", "Unlimited" => "Tak terbatas", "Other" => "Lainnya", "Username" => "Nama pengguna", +"Group Admin for" => "Grup Admin untuk", "Quota" => "Quota", +"Storage Location" => "Lokasi Penyimpanan", +"Last Login" => "Masuk Terakhir", "change full name" => "ubah nama lengkap", "set new password" => "setel sandi baru", -"Default" => "Baku" +"Default" => "Default" ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/settings/l10n/ja.php b/settings/l10n/ja.php index f91bb756add..8d0770a1745 100644 --- a/settings/l10n/ja.php +++ b/settings/l10n/ja.php @@ -1,6 +1,7 @@ <?php $TRANSLATIONS = array( "Enabled" => "有効", +"Recommended" => "推奨", "Authentication error" => "認証エラー", "Your full name has been changed." => "名前を変更しました。", "Unable to change full name" => "名前を変更できません", @@ -31,7 +32,7 @@ $TRANSLATIONS = array( "Back-end doesn't support password change, but the users encryption key was successfully updated." => "バックエンドはパスワード変更をサポートしていませんが、ユーザーの暗号化キーは正常に更新されました。", "Unable to change password" => "パスワードを変更できません", "Saved" => "保存されました", -"test email settings" => "メール設定をテスト", +"test email settings" => "メール設定のテスト", "If you received this email, the settings seem to be correct." => "このメールを受け取ったら、設定は正しいはずです。", "Email sent" => "メールを送信しました", "You need to set your user email before being able to send test emails." => "ユーザーメールを設定して初めて、テストメールを送信することができるようになります。", @@ -137,7 +138,7 @@ $TRANSLATIONS = array( "Forces the clients to connect to %s via an encrypted connection." => "クライアントから %sへの接続を常に暗号化します。", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." => "強制的なSSL接続を有効/無効にするには、HTTPS経由で %s へ接続してください。", "Email Server" => "メールサーバー", -"This is used for sending out notifications." => "これは通知の送信に使われます。", +"This is used for sending out notifications." => "通知を送信する際に使用します。", "Send mode" => "送信モード", "From address" => "送信元アドレス", "mail" => "メール", @@ -148,7 +149,7 @@ $TRANSLATIONS = array( "Credentials" => "資格情報", "SMTP Username" => "SMTP ユーザー名", "SMTP Password" => "SMTP パスワード", -"Test email settings" => "メール設定をテスト", +"Test email settings" => "メール設定のテスト", "Send email" => "メールを送信", "Log" => "ログ", "Log level" => "ログレベル", diff --git a/settings/l10n/nl.php b/settings/l10n/nl.php index c7538e1300f..081dc50c80e 100644 --- a/settings/l10n/nl.php +++ b/settings/l10n/nl.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Er moet een geldige groepsnaam worden opgegeven", "deleted {groupName}" => "verwijderd {groupName}", "undo" => "ongedaan maken", +"no group" => "geen groep", "never" => "geen", "deleted {userName}" => "verwijderd {userName}", "add group" => "toevoegen groep", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Ongelimiteerd", "Other" => "Anders", "Username" => "Gebruikersnaam", +"Group Admin for" => "Groepsbeheerder voor", "Quota" => "Limieten", "Storage Location" => "Opslaglocatie", "Last Login" => "Laatste inlog", diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index dce1fab40a4..4b7cfb6ed76 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Um nome de grupo válido deve ser fornecido", "deleted {groupName}" => "eliminado {groupName}", "undo" => "desfazer", +"no group" => "nenhum grupo", "never" => "nunca", "deleted {userName}" => "eliminado {userName}", "add group" => "adicionar grupo", @@ -78,6 +79,7 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Forneça uma senha válida", "Warning: Home directory for user \"{user}\" already exists" => "Aviso: O diretório home para o usuário \"{user}\" já existe", "__language_name__" => "__language_name__", +"Personal Info" => "Informação Pessoal", "SSL root certificates" => "Certificados SSL raíz", "Encryption" => "Criptografia", "Everything (fatal issues, errors, warnings, info, debug)" => "Tudo (questões fatais, erros, avisos, informações, depuração)", @@ -226,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Ilimitado", "Other" => "Outro", "Username" => "Nome de Usuário", +"Group Admin for" => "Grupo Admin para", "Quota" => "Cota", "Storage Location" => "Local de Armazenamento", "Last Login" => "Último Login", diff --git a/settings/l10n/pt_PT.php b/settings/l10n/pt_PT.php index e06715c061b..363cf1959f7 100644 --- a/settings/l10n/pt_PT.php +++ b/settings/l10n/pt_PT.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Um nome válido do grupo tem de ser fornecido", "deleted {groupName}" => "apagar {Nome do grupo}", "undo" => "desfazer", +"no group" => "sem grupo", "never" => "nunca", "deleted {userName}" => "apagar{utilizador}", "add group" => "Adicionar grupo", @@ -227,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Ilimitado", "Other" => "Outro", "Username" => "Nome de utilizador", +"Group Admin for" => "Administrador de Grupo para", "Quota" => "Quota", "Storage Location" => "Localização do Armazenamento", "Last Login" => "Ultimo acesso", diff --git a/settings/l10n/sl.php b/settings/l10n/sl.php index 90858ab4360..914c5890551 100644 --- a/settings/l10n/sl.php +++ b/settings/l10n/sl.php @@ -1,6 +1,8 @@ <?php $TRANSLATIONS = array( "Enabled" => "Omogočeno", +"Not enabled" => "Ni omogočeno", +"Recommended" => "Priporočljivo", "Authentication error" => "Napaka med overjanjem", "Your full name has been changed." => "Vaše polno ime je spremenjeno.", "Unable to change full name" => "Ni mogoče spremeniti polnega imena", @@ -9,12 +11,15 @@ $TRANSLATIONS = array( "Files decrypted successfully" => "Datoteke so uspešno odšifrirane", "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" => "Datotek ni mogoče odšifrirati. Preverite dnevnik owncloud.log ali pa se posvetujte s skrbnikom.", "Couldn't decrypt your files, check your password and try again" => "Datotek ni mogoče odšifrirati. Preverite geslo in poskusite znova.", +"Encryption keys deleted permanently" => "Šifrirni ključi so trajno izbrisani", +"Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" => "Ni mogoče trajno izbrisati šifrirnih ključev. Preverite dnevnik owncloud.log ali pa stopite v stik s skrbnikom sistema.", "Couldn't remove app." => "Ni mogoče odstraniti programa.", "Email saved" => "Elektronski naslov je shranjen", "Invalid email" => "Neveljaven elektronski naslov", "Unable to delete group" => "Skupine ni mogoče izbrisati", "Unable to delete user" => "Uporabnika ni mogoče izbrisati", "Backups restored successfully" => "Varnostne kopije so uspešno obnovljene.", +"Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" => "Ni mogoče obnoviti šifrirnih ključev. Preverite dnevnik owncloud.log ali pa stopite v stik s skrbnikom sistema.", "Language changed" => "Jezik je spremenjen", "Invalid request" => "Neveljavna zahteva", "Admins can't remove themself from the admin group" => "Skrbnikov ni mogoče odstraniti iz skupine skrbnikov (admin)", @@ -30,8 +35,10 @@ $TRANSLATIONS = array( "Saved" => "Shranjeno", "test email settings" => "preizkusi nastavitve elektronske pošte", "If you received this email, the settings seem to be correct." => "Če ste prejeli to sporočilo, so nastavitve pravilne.", +"A problem occurred while sending the email. Please revise your settings." => "Prišlo je do napake med pošiljanjem sporočila na elektronski naslov. Spremeniti je treba nastavitve.", "Email sent" => "Elektronska pošta je poslana", "You need to set your user email before being able to send test emails." => "Pred preizkusnim pošiljanjem sporočil je treba nastaviti elektronski naslov uporabnika.", +"Are you really sure you want add \"{domain}\" as trusted domain?" => "Ali ste prepričani, da želite dodati \"{domain}\" kot varno domeno?", "Add trusted domain" => "Dodaj varno domeno", "Sending..." => "Poteka pošiljanje ...", "All" => "Vsi", @@ -60,14 +67,19 @@ $TRANSLATIONS = array( "Groups" => "Skupine", "Unable to delete {objName}" => "Ni mogoče izbrisati {objName}", "Error creating group" => "Napaka ustvarjanja skupine", +"A valid group name must be provided" => "Navedeno mora biti veljavno ime skupine", +"deleted {groupName}" => "izbrisano {groupName}", "undo" => "razveljavi", +"no group" => "ni skupine", "never" => "nikoli", +"deleted {userName}" => "izbrisano {userName}", "add group" => "dodaj skupino", "A valid username must be provided" => "Navedeno mora biti veljavno uporabniško ime", "Error creating user" => "Napaka ustvarjanja uporabnika", "A valid password must be provided" => "Navedeno mora biti veljavno geslo", "Warning: Home directory for user \"{user}\" already exists" => "Opozorilo: osebna mapa uporabnika \"{user}\" že obstaja", "__language_name__" => "Slovenščina", +"Personal Info" => "Osebni podatki", "SSL root certificates" => "Korenska potrdila SSL", "Encryption" => "Šifriranje", "Everything (fatal issues, errors, warnings, info, debug)" => "Vse (podrobnosti, opozorila, hrošče, napake in usodne dogodke)", @@ -85,15 +97,18 @@ $TRANSLATIONS = array( "You are accessing %s via HTTP. We strongly suggest you configure your server to require using HTTPS instead." => "Dostop do %s poteka preko HTTP. Priporočljivo je nastaviti strežnik na privzeto uporabo varne povezave preko protokola HTTPS.", "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." => "Vaša podatkovna mapa in datoteke so najverjetneje dosegljive preko interneta. Datoteka .htaccess ni ustrezno nastavljena. Priporočljivo je nastaviti spletni strežnik tako, da podatkovna mapa ni prosto dostopna. To je mogoče zagotoviti tudi tako, da je mapa premaknjena iz neustrezne korenske v podrejeno mapo .", "Setup Warning" => "Opozorilo nastavitve", +"Database Performance Info" => "Podrobnosti delovanja podatkovne zbirke", "Module 'fileinfo' missing" => "Manjka modul 'fileinfo'.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." => "Manjka modul PHP 'fileinfo'. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.", "Your PHP version is outdated" => "Nameščena različica PHP je zastarela", "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." => "Nameščena različica PHP je zastarela. Priporočljivo je posodobiti namestitev na različico 5.3.8 ali novejše, saj starejše različice ne podpirajo vseh zmožnosti. Mogoče je, da namestitev ne deluje pravilno.", +"PHP charset is not set to UTF-8" => "Jezikovni znakovni nabor PHP ni določen kot UTF-8", "Locale not working" => "Jezikovne prilagoditve ne delujejo.", "System locale can not be set to a one which supports UTF-8." => "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.", "This means that there might be problems with certain characters in file names." => "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.", "We strongly suggest to install the required packages on your system to support one of the following locales: %s." => "Priporočljivo je namestiti zahtevane pakete v sistem za podporo ene izmed navedenih jezikovnih možnosti: %s", "Connectivity checks" => "Preverjanje povezav", +"No problems found" => "Ni zaznanih težav", "Please double check the <a href='%s'>installation guides</a>." => "Preverite <a href='%s'>navodila namestitve</a>.", "Cron" => "Periodično opravilo", "Last cron was executed at %s." => "Zadnje opravilo cron je bilo izvedeno ob %s.", @@ -103,6 +118,7 @@ $TRANSLATIONS = array( "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." => "Datoteka cron.php je vpisana v storitvi webcron za potrditev sklica vsakih 15 minut pri povezavi preko HTTP.", "Sharing" => "Souporaba", "Allow apps to use the Share API" => "Dovoli programom uporabo vmesnika API souporabe", +"Allow users to share via link" => "Uporabnikom dovoli omogočanje souporabe s povezavami", "Enforce password protection" => "Vsili zaščito z geslom", "Allow public uploads" => "Dovoli javno pošiljanje datotek v oblak", "Set default expiration date" => "Nastavitev privzetega datuma poteka", @@ -110,6 +126,7 @@ $TRANSLATIONS = array( "days" => "dneh", "Enforce expiration date" => "Vsili datum preteka", "Allow resharing" => "Dovoli nadaljnjo souporabo", +"Restrict users to only share with users in their groups" => "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", "Allow users to send mail notification for shared files" => "Dovoli uporabnikom pošiljati obvestila o souporabi datotek po elektronski pošti.", "Exclude groups from sharing" => "Izloči skupine iz souporabe", "Security" => "Varnost", @@ -117,7 +134,9 @@ $TRANSLATIONS = array( "Forces the clients to connect to %s via an encrypted connection." => "Vsili povezavo odjemalca z %s preko šifrirane povezave.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." => "Za nastavljanje šifriranja SSL je treba vzpostaviti povezavo z mestom %s preko protokola HTTPS.", "Email Server" => "Poštni strežnik", +"This is used for sending out notifications." => "Možnost je uporabljena za omogočanje pošiljanja obvestil.", "Send mode" => "Način pošiljanja", +"From address" => "Naslov pošiljatelja", "Authentication method" => "Način overitve", "Authentication required" => "Zahtevana je overitev", "Server address" => "Naslov strežnika", @@ -125,6 +144,7 @@ $TRANSLATIONS = array( "Credentials" => "Poverila", "SMTP Username" => "Uporabniško ime SMTP", "SMTP Password" => "Geslo SMTP", +"Store credentials" => "Shrani poverila", "Test email settings" => "Preizkus nastavitev elektronske pošte", "Send email" => "Pošlji elektronsko sporočilo", "Log" => "Dnevnik", @@ -133,10 +153,13 @@ $TRANSLATIONS = array( "Less" => "Manj", "Version" => "Različica", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Programski paket razvija <a href=\"http://ownCloud.org/contact\" target=\"_blank\">skupnost ownCloud</a>. <a href=\"https://github.com/owncloud\" target=\"_blank\">Izvorna koda</a> je objavljena pod pogoji <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Splošnega javnega dovoljenja Affero\">AGPL</abbr></a>.", +"More apps" => "Več programov", +"Add your app" => "Dodajte program", "by" => "od", "Documentation:" => "Dokumentacija:", "User Documentation" => "Uporabniška dokumentacija", "Admin Documentation" => "Skrbniška dokumentacija", +"Update to %s" => "Posodobi na %s", "Enable only for specific groups" => "Omogoči le za posamezne skupine", "Uninstall App" => "Odstrani program", "Administrator Documentation" => "Skrbniška dokumentacija", @@ -175,6 +198,7 @@ $TRANSLATIONS = array( "Decrypt all Files" => "Odšifriraj vse datoteke", "Restore Encryption Keys" => "Obnovi šifrirne ključe", "Delete Encryption Keys" => "Izbriši šifrirne ključe", +"Show last log in" => "Pokaži podatke zadnje prijave", "Login Name" => "Prijavno ime", "Create" => "Ustvari", "Admin Recovery Password" => "Obnovitev skrbniškega gesla", @@ -189,7 +213,9 @@ $TRANSLATIONS = array( "Unlimited" => "Neomejeno", "Other" => "Drugo", "Username" => "Uporabniško ime", +"Group Admin for" => "Skrbnik skupine za", "Quota" => "Količinska omejitev", +"Storage Location" => "Mesto shrambe", "Last Login" => "Zadnja prijava", "change full name" => "Spremeni polno ime", "set new password" => "nastavi novo geslo", diff --git a/settings/l10n/tr.php b/settings/l10n/tr.php index 7432e486d99..23a0f1dcdd4 100644 --- a/settings/l10n/tr.php +++ b/settings/l10n/tr.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Geçerli bir grup adı mutlaka sağlanmalı", "deleted {groupName}" => "{groupName} silindi", "undo" => "geri al", +"no group" => "grup yok", "never" => "hiçbir zaman", "deleted {userName}" => "{userName} silindi", "add group" => "grup ekle", @@ -78,6 +79,7 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Geçerli bir parola mutlaka sağlanmalı", "Warning: Home directory for user \"{user}\" already exists" => "Uyarı: \"{user}\" kullanıcısı için zaten bir Ev dizini mevcut", "__language_name__" => "Türkçe", +"Personal Info" => "Kişisel Bilgi", "SSL root certificates" => "SSL kök sertifikaları", "Encryption" => "Şifreleme", "Everything (fatal issues, errors, warnings, info, debug)" => "Her şey (Ciddi sorunlar, hatalar, uyarılar, bilgi, hata ayıklama)", @@ -226,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Sınırsız", "Other" => "Diğer", "Username" => "Kullanıcı Adı", +"Group Admin for" => "Grup Yöneticisi", "Quota" => "Kota", "Storage Location" => "Depolama Konumu", "Last Login" => "Son Giriş", diff --git a/settings/l10n/uk.php b/settings/l10n/uk.php index 68369d782ff..39cb54a4f1a 100644 --- a/settings/l10n/uk.php +++ b/settings/l10n/uk.php @@ -70,6 +70,7 @@ $TRANSLATIONS = array( "A valid group name must be provided" => "Потрібно задати вірне ім'я групи", "deleted {groupName}" => "видалено {groupName}", "undo" => "відмінити", +"no group" => "без групи", "never" => "ніколи", "deleted {userName}" => "видалено {userName}", "add group" => "додати групу", @@ -78,6 +79,7 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Потрібно задати вірний пароль", "Warning: Home directory for user \"{user}\" already exists" => "Попередження: домашня тека користувача \"{user}\" вже існує", "__language_name__" => "__language_name__", +"Personal Info" => "Особиста інформація", "SSL root certificates" => "SSL корневі сертифікати", "Encryption" => "Шифрування", "Everything (fatal issues, errors, warnings, info, debug)" => "Усі (критичні проблеми, помилки, попередження, інформаційні, налагодження)", @@ -226,6 +228,7 @@ $TRANSLATIONS = array( "Unlimited" => "Необмежено", "Other" => "Інше", "Username" => "Ім'я користувача", +"Group Admin for" => "Адміністратор групи", "Quota" => "Квота", "Storage Location" => "Місцезнаходження сховища", "Last Login" => "Останній вхід", diff --git a/tests/lib/files/storage/local.php b/tests/lib/files/storage/local.php index 1aad138aa33..8fd9f0648ad 100644 --- a/tests/lib/files/storage/local.php +++ b/tests/lib/files/storage/local.php @@ -1,24 +1,24 @@ <?php /** -* ownCloud -* -* @author Robin Appelman -* @copyright 2012 Robin Appelman icewind@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ + * ownCloud + * + * @author Robin Appelman + * @copyright 2012 Robin Appelman icewind@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ namespace Test\Files\Storage; @@ -27,13 +27,30 @@ class Local extends Storage { * @var string tmpDir */ private $tmpDir; + public function setUp() { - $this->tmpDir=\OC_Helper::tmpFolder(); - $this->instance=new \OC\Files\Storage\Local(array('datadir'=>$this->tmpDir)); + $this->tmpDir = \OC_Helper::tmpFolder(); + $this->instance = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); } public function tearDown() { \OC_Helper::rmdirr($this->tmpDir); } + + public function testStableEtag() { + $this->instance->file_put_contents('test.txt', 'foobar'); + $etag1 = $this->instance->getETag('test.txt'); + $etag2 = $this->instance->getETag('test.txt'); + $this->assertEquals($etag1, $etag2); + } + + public function testEtagChange() { + $this->instance->file_put_contents('test.txt', 'foo'); + $this->instance->touch('test.txt', time() - 2); + $etag1 = $this->instance->getETag('test.txt'); + $this->instance->file_put_contents('test.txt', 'bar'); + $etag2 = $this->instance->getETag('test.txt'); + $this->assertNotEquals($etag1, $etag2); + } } diff --git a/tests/lib/tempmanager.php b/tests/lib/tempmanager.php new file mode 100644 index 00000000000..f16fbce2c7c --- /dev/null +++ b/tests/lib/tempmanager.php @@ -0,0 +1,143 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test; + +use OC\Log; + +class NullLogger extends Log { + public function __construct($logger = null) { + //disable original constructor + } + + public function log($level, $message, array $context = array()) { + //noop + } +} + +class TempManager extends \PHPUnit_Framework_TestCase { + protected $baseDir; + + public function setUp() { + $this->baseDir = get_temp_dir() . '/oc_tmp_test'; + if (!is_dir($this->baseDir)) { + mkdir($this->baseDir); + } + } + + public function tearDown() { + \OC_Helper::rmdirr($this->baseDir); + } + + /** + * @param \Psr\Log\LoggerInterface $logger + * @return \OC\TempManager + */ + protected function getManager($logger = null) { + if (!$logger) { + $logger = new NullLogger(); + } + return new \OC\TempManager($this->baseDir, $logger); + } + + public function testGetFile() { + $manager = $this->getManager(); + $file = $manager->getTemporaryFile('.txt'); + $this->assertStringEndsWith('.txt', $file); + $this->assertTrue(is_file($file)); + $this->assertTrue(is_writable($file)); + + file_put_contents($file, 'bar'); + $this->assertEquals('bar', file_get_contents($file)); + } + + public function testGetFolder() { + $manager = $this->getManager(); + $folder = $manager->getTemporaryFolder(); + $this->assertStringEndsWith('/', $folder); + $this->assertTrue(is_dir($folder)); + $this->assertTrue(is_writable($folder)); + + file_put_contents($folder . 'foo.txt', 'bar'); + $this->assertEquals('bar', file_get_contents($folder . 'foo.txt')); + } + + public function testCleanFiles() { + $manager = $this->getManager(); + $file1 = $manager->getTemporaryFile('.txt'); + $file2 = $manager->getTemporaryFile('.txt'); + $this->assertTrue(file_exists($file1)); + $this->assertTrue(file_exists($file2)); + + $manager->clean(); + + $this->assertFalse(file_exists($file1)); + $this->assertFalse(file_exists($file2)); + } + + public function testCleanFolder() { + $manager = $this->getManager(); + $folder1 = $manager->getTemporaryFolder(); + $folder2 = $manager->getTemporaryFolder(); + touch($folder1 . 'foo.txt'); + touch($folder1 . 'bar.txt'); + $this->assertTrue(file_exists($folder1)); + $this->assertTrue(file_exists($folder2)); + $this->assertTrue(file_exists($folder1 . 'foo.txt')); + $this->assertTrue(file_exists($folder1 . 'bar.txt')); + + $manager->clean(); + + $this->assertFalse(file_exists($folder1)); + $this->assertFalse(file_exists($folder2)); + $this->assertFalse(file_exists($folder1 . 'foo.txt')); + $this->assertFalse(file_exists($folder1 . 'bar.txt')); + } + + public function testCleanOld() { + $manager = $this->getManager(); + $oldFile = $manager->getTemporaryFile('.txt'); + $newFile = $manager->getTemporaryFile('.txt'); + $folder = $manager->getTemporaryFolder(); + $nonOcFile = $this->baseDir . '/foo.txt'; + file_put_contents($nonOcFile, 'bar'); + + $past = time() - 2 * 3600; + touch($oldFile, $past); + touch($folder, $past); + touch($nonOcFile, $past); + + $manager2 = $this->getManager(); + $manager2->cleanOld(); + $this->assertFalse(file_exists($oldFile)); + $this->assertFalse(file_exists($folder)); + $this->assertTrue(file_exists($nonOcFile)); + $this->assertTrue(file_exists($newFile)); + } + + public function testLogCantCreateFile() { + $logger = $this->getMock('\Test\NullLogger'); + $manager = $this->getManager($logger); + chmod($this->baseDir, 0500); + $logger->expects($this->once()) + ->method('warning') + ->with($this->stringContains('Can not create a temporary file in directory')); + $this->assertFalse($manager->getTemporaryFile('.txt')); + } + + public function testLogCantCreateFolder() { + $logger = $this->getMock('\Test\NullLogger'); + $manager = $this->getManager($logger); + chmod($this->baseDir, 0500); + $logger->expects($this->once()) + ->method('warning') + ->with($this->stringContains('Can not create a temporary folder in directory')); + $this->assertFalse($manager->getTemporaryFolder()); + } +} |