diff --git a/.gitignore b/.gitignore index 40d6e6ca0fe..b0cc783123c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ owncloud config/config.php config/mount.php apps/inc.php -3rdparty # ignore all apps except core ones apps/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..b9c1a3702cf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "3rdparty"] + path = 3rdparty + url = git://github.com/owncloud/3rdparty.git diff --git a/3rdparty b/3rdparty new file mode 160000 index 00000000000..63cb2847921 --- /dev/null +++ b/3rdparty @@ -0,0 +1 @@ +Subproject commit 63cb2847921d668c2b48b572872cfddbcf41bea4 diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 5b697777e47..b9eea2fea62 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -47,7 +47,7 @@ $totalSize = 0; foreach ($files['size'] as $size) { $totalSize += $size; } -if ($totalSize > $maxUploadFilesize) { +if ($maxUploadFilesize >= 0 and $totalSize > $maxUploadFilesize) { OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'), 'uploadMaxFilesize' => $maxUploadFilesize, 'maxHumanFilesize' => $maxHumanFilesize))); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 38f5bab6f73..f3264da5a12 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -112,7 +112,7 @@ var FileActions = { addAction(name, action); } }); - if(actions.Share){ + if(actions.Share && !($('#dir').val() === '/' && file === 'Shared')){ addAction('Share', actions.Share); } diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php index ce8a34acedb..aa005913a9e 100644 --- a/apps/files/l10n/ar.php +++ b/apps/files/l10n/ar.php @@ -1,24 +1,73 @@ "فشل في نقل الملف %s - يوجد ملف بنفس هذا الاسم", +"Could not move %s" => "فشل في نقل %s", +"Unable to rename file" => "فشل في اعادة تسمية الملف", +"No file was uploaded. Unknown error" => "لم يتم رفع أي ملف , خطأ غير معروف", "There is no error, the file uploaded with success" => "تم ترفيع الملفات بنجاح.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "حجم الملف المرفوع تجاوز قيمة upload_max_filesize الموجودة في ملف php.ini ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "حجم الملف الذي تريد ترفيعه أعلى مما MAX_FILE_SIZE يسمح به في واجهة ال HTML.", "The uploaded file was only partially uploaded" => "تم ترفيع جزء من الملفات الذي تريد ترفيعها فقط", "No file was uploaded" => "لم يتم ترفيع أي من الملفات", "Missing a temporary folder" => "المجلد المؤقت غير موجود", +"Failed to write to disk" => "خطأ في الكتابة على القرص الصلب", +"Not enough storage available" => "لا يوجد مساحة تخزينية كافية", +"Invalid directory." => "مسار غير صحيح.", "Files" => "الملفات", +"Delete permanently" => "حذف بشكل دائم", "Delete" => "محذوف", +"Rename" => "إعادة تسميه", +"Pending" => "قيد الانتظار", +"{new_name} already exists" => "{new_name} موجود مسبقا", +"replace" => "استبدال", +"suggest name" => "اقترح إسم", +"cancel" => "إلغاء", +"replaced {new_name} with {old_name}" => "استبدل {new_name} بـ {old_name}", +"undo" => "تراجع", +"perform delete operation" => "جاري تنفيذ عملية الحذف", +"'.' is an invalid file name." => "\".\" اسم ملف غير صحيح.", +"File name cannot be empty." => "اسم الملف لا يجوز أن يكون فارغا", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "اسم غير صحيح , الرموز '\\', '/', '<', '>', ':', '\"', '|', '?' و \"*\" غير مسموح استخدامها", +"Your storage is full, files can not be updated or synced anymore!" => "مساحتك التخزينية ممتلئة, لا يمكم تحديث ملفاتك أو مزامنتها بعد الآن !", +"Your storage is almost full ({usedSpacePercent}%)" => "مساحتك التخزينية امتلأت تقريبا ", +"Your download is being prepared. This might take some time if the files are big." => "جاري تجهيز عملية التحميل. قد تستغرق بعض الوقت اذا كان حجم الملفات كبير.", +"Unable to upload your file as it is a directory or has 0 bytes" => "فشل في رفع ملفاتك , إما أنها مجلد أو حجمها 0 بايت", +"Upload Error" => "خطأ في رفع الملفات", "Close" => "إغلق", +"1 file uploading" => "جاري رفع 1 ملف", +"{count} files uploading" => "جاري رفع {count} ملفات", +"Upload cancelled." => "تم إلغاء عملية رفع الملفات .", +"File upload is in progress. Leaving the page now will cancel the upload." => "عملية رفع الملفات قيد التنفيذ. اغلاق الصفحة سوف يلغي عملية رفع الملفات.", +"URL cannot be empty." => "عنوان ال URL لا يجوز أن يكون فارغا.", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "إسم مجلد غير صحيح. استخدام مصطلح \"Shared\" محجوز للنظام", "Name" => "الاسم", "Size" => "حجم", "Modified" => "معدل", +"1 folder" => "مجلد عدد 1", +"{count} folders" => "{count} مجلدات", +"1 file" => "ملف واحد", +"{count} files" => "{count} ملفات", "Upload" => "إرفع", +"File handling" => "التعامل مع الملف", "Maximum upload size" => "الحد الأقصى لحجم الملفات التي يمكن رفعها", +"max. possible: " => "الحد الأقصى المسموح به", +"Needed for multi-file and folder downloads." => "اجباري للسماح بالتحميل المتعدد للمجلدات والملفات", +"Enable ZIP-download" => "تفعيل خاصية تحميل ملفات ZIP", +"0 is unlimited" => "0 = غير محدود", +"Maximum input size for ZIP files" => "الحد الأقصى المسموح به لملفات ZIP", "Save" => "حفظ", "New" => "جديد", "Text file" => "ملف", "Folder" => "مجلد", +"From link" => "من رابط", +"Deleted files" => "حذف الملفات", +"Cancel upload" => "إلغاء رفع الملفات", +"You don’t have write permissions here." => "لا تملك صلاحيات الكتابة هنا.", "Nothing in here. Upload something!" => "لا يوجد شيء هنا. إرفع بعض الملفات!", "Download" => "تحميل", "Unshare" => "إلغاء مشاركة", "Upload too large" => "حجم الترفيع أعلى من المسموح", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "حجم الملفات التي تريد ترفيعها أعلى من المسموح على الخادم." +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "حجم الملفات التي تريد ترفيعها أعلى من المسموح على الخادم.", +"Files are being scanned, please wait." => "يرجى الانتظار , جاري فحص الملفات .", +"Current scanning" => "الفحص الحالي", +"Upgrading filesystem cache..." => "تحديث ذاكرة التخزين المؤقت(الكاش) الخاصة بملفات النظام ..." ); diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index 63759f1201e..7682ae24b09 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -61,6 +61,7 @@ "From link" => "Από σύνδεσμο", "Deleted files" => "Διαγραμμένα αρχεία", "Cancel upload" => "Ακύρωση αποστολής", +"You don’t have write permissions here." => "Δεν έχετε δικαιώματα εγγραφής εδώ.", "Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Μεταφορτώστε κάτι!", "Download" => "Λήψη", "Unshare" => "Διακοπή κοινής χρήσης", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index f16385a652d..6cd7c026922 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -61,6 +61,7 @@ "From link" => "Desde enlace", "Deleted files" => "Archivos Borrados", "Cancel upload" => "Cancelar subida", +"You don’t have write permissions here." => "No tenés permisos de escritura acá.", "Nothing in here. Upload something!" => "No hay nada. ¡Subí contenido!", "Download" => "Descargar", "Unshare" => "Dejar de compartir", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index b9a88b57912..e507ee715c5 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -10,6 +10,7 @@ "No file was uploaded" => "هیچ فایلی بارگذاری نشده", "Missing a temporary folder" => "یک پوشه موقت گم شده است", "Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموفق بود", +"Not enough storage available" => "فضای کافی در دسترس نیست", "Invalid directory." => "فهرست راهنما نامعتبر می باشد.", "Files" => "فایل ها", "Delete permanently" => "حذف قطعی", @@ -22,9 +23,12 @@ "cancel" => "لغو", "replaced {new_name} with {old_name}" => "{نام_جدید} با { نام_قدیمی} جایگزین شد.", "undo" => "بازگشت", +"perform delete operation" => "انجام عمل حذف", "'.' is an invalid file name." => "'.' یک نام پرونده نامعتبر است.", "File name cannot be empty." => "نام پرونده نمی تواند خالی باشد.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "نام نامعتبر ، '\\', '/', '<', '>', ':', '\"', '|', '?' و '*' مجاز نمی باشند.", +"Your storage is full, files can not be updated or synced anymore!" => "فضای ذخیره ی شما کاملا پر است، بیش از این فایلها بهنگام یا همگام سازی نمی توانند بشوند!", +"Your storage is almost full ({usedSpacePercent}%)" => "فضای ذخیره ی شما تقریبا پر است ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "دانلود شما در حال آماده شدن است. در صورتیکه پرونده ها بزرگ باشند ممکن است مدتی طول بکشد.", "Unable to upload your file as it is a directory or has 0 bytes" => "ناتوان در بارگذاری یا فایل یک پوشه است یا 0بایت دارد", "Upload Error" => "خطا در بار گذاری", @@ -57,11 +61,13 @@ "From link" => "از پیوند", "Deleted files" => "فایل های حذف شده", "Cancel upload" => "متوقف کردن بار گذاری", +"You don’t have write permissions here." => "شما اجازه ی نوشتن در اینجا را ندارید", "Nothing in here. Upload something!" => "اینجا هیچ چیز نیست.", "Download" => "بارگیری", "Unshare" => "لغو اشتراک", "Upload too large" => "حجم بارگذاری بسیار زیاد است", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "فایلها بیش از حد تعیین شده در این سرور هستند\nمترجم:با تغییر فایل php,ini میتوان این محدودیت را برطرف کرد", "Files are being scanned, please wait." => "پرونده ها در حال بازرسی هستند لطفا صبر کنید", -"Current scanning" => "بازرسی کنونی" +"Current scanning" => "بازرسی کنونی", +"Upgrading filesystem cache..." => "بهبود فایل سیستمی ذخیره گاه..." ); diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index 9849184441d..5e53f5ab024 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -61,6 +61,7 @@ "From link" => "Depuis le lien", "Deleted files" => "Fichiers supprimés", "Cancel upload" => "Annuler l'envoi", +"You don’t have write permissions here." => "Vous n'avez pas le droit d'écriture ici.", "Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Download" => "Télécharger", "Unshare" => "Ne plus partager", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index bcbef8daf35..547b490330a 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -61,6 +61,7 @@ "From link" => "Bağlantıdan", "Deleted files" => "Dosyalar silindi", "Cancel upload" => "Yüklemeyi iptal et", +"You don’t have write permissions here." => "Buraya erişim hakkınız yok.", "Nothing in here. Upload something!" => "Burada hiçbir şey yok. Birşeyler yükleyin!", "Download" => "İndir", "Unshare" => "Paylaşılmayan", diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index 88fdc537c3a..2923126d10f 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -10,8 +10,10 @@ "No file was uploaded" => "文件没有上传", "Missing a temporary folder" => "缺少临时目录", "Failed to write to disk" => "写入磁盘失败", +"Not enough storage available" => "没有足够的存储空间", "Invalid directory." => "无效文件夹。", "Files" => "文件", +"Delete permanently" => "永久删除", "Delete" => "删除", "Rename" => "重命名", "Pending" => "操作等待中", @@ -21,9 +23,12 @@ "cancel" => "取消", "replaced {new_name} with {old_name}" => "已将 {old_name}替换成 {new_name}", "undo" => "撤销", +"perform delete operation" => "进行删除操作", "'.' is an invalid file name." => "'.' 是一个无效的文件名。", "File name cannot be empty." => "文件名不能为空。", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "无效名称,'\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 不被允许使用。", +"Your storage is full, files can not be updated or synced anymore!" => "您的存储空间已满,文件将无法更新或同步!", +"Your storage is almost full ({usedSpacePercent}%)" => "您的存储空间即将用完 ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "下载正在准备中。如果文件较大可能会花费一些时间。", "Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大小为 0 字节", "Upload Error" => "上传错误", @@ -54,12 +59,15 @@ "Text file" => "文本文件", "Folder" => "文件夹", "From link" => "来自链接", +"Deleted files" => "删除文件", "Cancel upload" => "取消上传", +"You don’t have write permissions here." => "您没有写权限", "Nothing in here. Upload something!" => "这里还什么都没有。上传些东西吧!", "Download" => "下载", "Unshare" => "取消分享", "Upload too large" => "上传文件过大", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正尝试上传的文件超过了此服务器可以上传的最大容量限制", "Files are being scanned, please wait." => "文件正在被扫描,请稍候。", -"Current scanning" => "当前扫描" +"Current scanning" => "当前扫描", +"Upgrading filesystem cache..." => "正在更新文件系统缓存..." ); diff --git a/apps/files/l10n/zh_HK.php b/apps/files/l10n/zh_HK.php new file mode 100644 index 00000000000..4eaa908476b --- /dev/null +++ b/apps/files/l10n/zh_HK.php @@ -0,0 +1,9 @@ + "文件", +"Delete" => "刪除", +"Name" => "名稱", +"Upload" => "上傳", +"Save" => "儲存", +"Download" => "下載", +"Unshare" => "取消分享" +); diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index a53df4e2d3e..0d7185bcb78 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -23,8 +23,10 @@ method="post" enctype="multipart/form-data" target="file_upload_target_1"> + = 0):?> + diff --git a/apps/files_encryption/l10n/ar.php b/apps/files_encryption/l10n/ar.php index 375fbd9a9a6..c8a475afd67 100644 --- a/apps/files_encryption/l10n/ar.php +++ b/apps/files_encryption/l10n/ar.php @@ -1,4 +1,7 @@ "التشفير", +"File encryption is enabled." => "تشفير الملفات فعال.", +"The following file types will not be encrypted:" => "الملفات الاتية لن يتم تشفيرها:", +"Exclude the following file types from encryption:" => "إستثناء أنواع الملفات الاتية من التشفير: ", "None" => "لا شيء" ); diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 21ad7e56566..7acf196b791 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,4 +1,7 @@ "رمزگذاری", +"File encryption is enabled." => "رمزنگاری فایلها فعال شد.", +"The following file types will not be encrypted:" => "فایلهای زیر رمزنگاری نخواهند شد:", +"Exclude the following file types from encryption:" => "فایلهای زیر از رمزنگاری نادیده گرفته می شوند:", "None" => "هیچ‌کدام" ); diff --git a/apps/files_encryption/l10n/sl.php b/apps/files_encryption/l10n/sl.php index 39a5a0d40f8..4754e21214e 100644 --- a/apps/files_encryption/l10n/sl.php +++ b/apps/files_encryption/l10n/sl.php @@ -2,6 +2,6 @@ "Encryption" => "Šifriranje", "File encryption is enabled." => "Šifriranje datotek je omogočeno.", "The following file types will not be encrypted:" => "Navedene vrste datotek ne bodo šifrirane:", -"Exclude the following file types from encryption:" => "Izloči navedene vrste datotek med šifriranjem:", +"Exclude the following file types from encryption:" => "Ne šifriraj navedenih vrst datotek:", "None" => "Brez" ); diff --git a/apps/files_encryption/l10n/zh_CN.php b/apps/files_encryption/l10n/zh_CN.php index 867d000f2ed..13fa95203e4 100644 --- a/apps/files_encryption/l10n/zh_CN.php +++ b/apps/files_encryption/l10n/zh_CN.php @@ -1,4 +1,7 @@ "加密", -"None" => "None" +"File encryption is enabled." => "文件加密已启用.", +"The following file types will not be encrypted:" => "如下的文件类型将不会被加密:", +"Exclude the following file types from encryption:" => "从加密中排除如下的文件类型:", +"None" => "无" ); diff --git a/apps/files_encryption/l10n/zh_HK.php b/apps/files_encryption/l10n/zh_HK.php new file mode 100644 index 00000000000..0c0b709fdc1 --- /dev/null +++ b/apps/files_encryption/l10n/zh_HK.php @@ -0,0 +1,6 @@ + "加密", +"File encryption is enabled." => "檔案加密已開啟", +"The following file types will not be encrypted:" => "以下文件類別將不會被加密", +"None" => "空" +); diff --git a/apps/files_external/l10n/fa.php b/apps/files_external/l10n/fa.php index a7eac596b04..1921ba9f2ae 100644 --- a/apps/files_external/l10n/fa.php +++ b/apps/files_external/l10n/fa.php @@ -3,9 +3,11 @@ "Configuration" => "پیکربندی", "Options" => "تنظیمات", "Applicable" => "قابل اجرا", +"None set" => "تنظیم نشده", "All Users" => "تمام کاربران", "Groups" => "گروه ها", "Users" => "کاربران", "Delete" => "حذف", -"Enable User External Storage" => "فعال سازی حافظه خارجی کاربر" +"Enable User External Storage" => "فعال سازی حافظه خارجی کاربر", +"Allow users to mount their own external storage" => "اجازه به کاربران برای متصل کردن منابع ذخیره ی خارجی خودشان" ); diff --git a/apps/files_external/l10n/fr.php b/apps/files_external/l10n/fr.php index db4140b483d..c42c89f8572 100644 --- a/apps/files_external/l10n/fr.php +++ b/apps/files_external/l10n/fr.php @@ -8,9 +8,11 @@ "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Attention : Le support FTP de PHP n'est pas activé ou installé. Le montage des partages FTP n'est pas disponible. Contactez votre administrateur système pour l'installer.", "External Storage" => "Stockage externe", "Folder name" => "Nom du dossier", +"External storage" => "Stockage externe", "Configuration" => "Configuration", "Options" => "Options", "Applicable" => "Disponible", +"Add storage" => "Ajouter un support de stockage", "None set" => "Aucun spécifié", "All Users" => "Tous les utilisateurs", "Groups" => "Groupes", diff --git a/apps/files_external/l10n/zh_CN.php b/apps/files_external/l10n/zh_CN.php index 1860b6f70d7..7f95320511f 100644 --- a/apps/files_external/l10n/zh_CN.php +++ b/apps/files_external/l10n/zh_CN.php @@ -8,9 +8,11 @@ "Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "警告:PHP中尚未启用或安装FTP。FTP 分享挂载无法实现。请咨询系统管理员进行安装。", "External Storage" => "外部存储", "Folder name" => "目录名称", +"External storage" => "外部存储", "Configuration" => "配置", "Options" => "选项", "Applicable" => "适用的", +"Add storage" => "添加存储", "None set" => "未设置", "All Users" => "所有用户", "Groups" => "组", diff --git a/apps/files_external/l10n/zh_HK.php b/apps/files_external/l10n/zh_HK.php new file mode 100644 index 00000000000..a85b5a03b8a --- /dev/null +++ b/apps/files_external/l10n/zh_HK.php @@ -0,0 +1,5 @@ + "群組", +"Users" => "用戶", +"Delete" => "刪除" +); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 86492699fc2..b3b94a1dafd 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -155,7 +155,7 @@ - + diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 57116698159..9363a5431fa 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -12,7 +12,7 @@ OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); OCP\Util::addScript('files_sharing', 'share'); \OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Shared_Updater', 'writeHook'); -\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook'); +\OC_Hook::connect('OC_Filesystem', 'delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook'); \OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Shared_Updater', 'renameHook'); \OC_Hook::connect('OCP\Share', 'post_shared', '\OC\Files\Cache\Shared_Updater', 'shareHook'); \OC_Hook::connect('OCP\Share', 'pre_unshare', '\OC\Files\Cache\Shared_Updater', 'shareHook'); \ No newline at end of file diff --git a/apps/files_sharing/l10n/zh_HK.php b/apps/files_sharing/l10n/zh_HK.php new file mode 100644 index 00000000000..7ef0f19ca43 --- /dev/null +++ b/apps/files_sharing/l10n/zh_HK.php @@ -0,0 +1,4 @@ + "密碼", +"Download" => "下載" +); diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index 1834fb54003..16c39ab3853 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -10,6 +10,7 @@ $list = json_decode($files); $error = array(); $success = array(); + $i = 0; foreach ($list as $file) { if ( $dirlisting=='0') { @@ -28,6 +29,7 @@ foreach ($list as $file) { $i++; } else { $error[] = $filename; + OC_Log::write('trashbin','can\'t delete ' . $filename . ' permanently.', OC_Log::ERROR); } } diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php index 80de3c31f91..9d78f166765 100644 --- a/apps/files_trashbin/ajax/undelete.php +++ b/apps/files_trashbin/ajax/undelete.php @@ -24,6 +24,7 @@ foreach ($list as $file) { if ( !OCA\Files_Trashbin\Trashbin::restore($file, $filename, $timestamp) ) { $error[] = $filename; + OC_Log::write('trashbin','can\'t restore ' . $filename, OC_Log::ERROR); } else { $success[$i]['filename'] = $file; $success[$i]['timestamp'] = $timestamp; diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php index 24ccd8c4609..8a5875b9ce6 100644 --- a/apps/files_trashbin/index.php +++ b/apps/files_trashbin/index.php @@ -43,7 +43,7 @@ if ($dir) { } else { $dirlisting = false; - $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE user = ?'); + $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE `user` = ?'); $result = $query->execute(array($user))->fetchAll(); } diff --git a/apps/files_trashbin/l10n/ar.php b/apps/files_trashbin/l10n/ar.php index 7b2e2863367..2065c964d42 100644 --- a/apps/files_trashbin/l10n/ar.php +++ b/apps/files_trashbin/l10n/ar.php @@ -1,4 +1,9 @@ "حذف بشكل دائم", "Name" => "اسم", +"1 folder" => "مجلد عدد 1", +"{count} folders" => "{count} مجلدات", +"1 file" => "ملف واحد", +"{count} files" => "{count} ملفات", "Delete" => "إلغاء" ); diff --git a/apps/files_trashbin/l10n/de.php b/apps/files_trashbin/l10n/de.php index b1c9e13defb..60a0e40d455 100644 --- a/apps/files_trashbin/l10n/de.php +++ b/apps/files_trashbin/l10n/de.php @@ -3,7 +3,7 @@ "Couldn't restore %s" => "Konnte %s nicht wiederherstellen", "perform restore operation" => "Wiederherstellung ausführen", "delete file permanently" => "Datei dauerhaft löschen", -"Delete permanently" => "Permanent löschen", +"Delete permanently" => "Endgültig löschen", "Name" => "Name", "Deleted" => "gelöscht", "1 folder" => "1 Ordner", diff --git a/apps/files_trashbin/l10n/de_DE.php b/apps/files_trashbin/l10n/de_DE.php index 48d1425ded7..802a110fd18 100644 --- a/apps/files_trashbin/l10n/de_DE.php +++ b/apps/files_trashbin/l10n/de_DE.php @@ -13,5 +13,5 @@ "Nothing in here. Your trash bin is empty!" => "Nichts zu löschen, Ihr Papierkorb ist leer!", "Restore" => "Wiederherstellen", "Delete" => "Löschen", -"Deleted Files" => "gelöschte Dateien" +"Deleted Files" => "Gelöschte Dateien" ); diff --git a/apps/files_trashbin/l10n/fa.php b/apps/files_trashbin/l10n/fa.php index 879ee722a63..57ca6d10d6b 100644 --- a/apps/files_trashbin/l10n/fa.php +++ b/apps/files_trashbin/l10n/fa.php @@ -1,10 +1,17 @@ "%s را نمی توان برای همیشه حذف کرد", +"Couldn't restore %s" => "%s را نمی توان بازگرداند", +"perform restore operation" => "انجام عمل بازگرداندن", +"delete file permanently" => "حذف فایل برای همیشه", "Delete permanently" => "حذف قطعی", "Name" => "نام", +"Deleted" => "حذف شده", "1 folder" => "1 پوشه", "{count} folders" => "{ شمار} پوشه ها", "1 file" => "1 پرونده", "{count} files" => "{ شمار } فایل ها", +"Nothing in here. Your trash bin is empty!" => "هیچ چیزی اینجا نیست. سطل زباله ی شما خالی است.", "Restore" => "بازیابی", -"Delete" => "حذف" +"Delete" => "حذف", +"Deleted Files" => "فایلهای حذف شده" ); diff --git a/apps/files_trashbin/l10n/zh_CN.php b/apps/files_trashbin/l10n/zh_CN.php index 17bbe93f2b5..c2cc1f123e2 100644 --- a/apps/files_trashbin/l10n/zh_CN.php +++ b/apps/files_trashbin/l10n/zh_CN.php @@ -1,9 +1,17 @@ "无法彻底删除文件%s", +"Couldn't restore %s" => "无法恢复%s", +"perform restore operation" => "执行恢复操作", +"delete file permanently" => "彻底删除文件", +"Delete permanently" => "永久删除", "Name" => "名称", +"Deleted" => "已删除", "1 folder" => "1个文件夹", "{count} folders" => "{count} 个文件夹", "1 file" => "1 个文件", "{count} files" => "{count} 个文件", +"Nothing in here. Your trash bin is empty!" => "这里没有东西. 你的回收站是空的!", +"Restore" => "恢复", "Delete" => "删除", "Deleted Files" => "已删除文件" ); diff --git a/apps/files_trashbin/l10n/zh_HK.php b/apps/files_trashbin/l10n/zh_HK.php new file mode 100644 index 00000000000..6967e190355 --- /dev/null +++ b/apps/files_trashbin/l10n/zh_HK.php @@ -0,0 +1,4 @@ + "名稱", +"Delete" => "刪除" +); diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 2fc8a8bc3c6..33abe608d8f 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -64,7 +64,7 @@ class Trashbin { $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view); if ( $view->file_exists('files_trashbin/files/'.$deleted.'.d'.$timestamp) ) { - $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)"); + $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (`id`,`timestamp`,`location`,`type`,`mime`,`user`) VALUES (?,?,?,?,?,?)"); $result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user)); if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin. $view->deleteAll('files_trashbin/files/'.$deleted.'.d'.$timestamp); @@ -144,8 +144,8 @@ class Trashbin { $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); } if ( $timestamp ) { - $query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash' - .' WHERE user=? AND id=? AND timestamp=?'); + $query = \OC_DB::prepare('SELECT `location`,`type` FROM *PREFIX*files_trash' + .' WHERE `user`=? AND `id`=? AND `timestamp`=?'); $result = $query->execute(array($user,$filename,$timestamp))->fetchAll(); if ( count($result) != 1 ) { \OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR); @@ -228,7 +228,7 @@ class Trashbin { } if ( $timestamp ) { - $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE `user`=? AND `id`=? AND `timestamp`=?'); $query->execute(array($user,$filename,$timestamp)); } @@ -259,7 +259,7 @@ class Trashbin { } if ( $timestamp ) { - $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE `user`=? AND `id`=? AND `timestamp`=?'); $query->execute(array($user,$filename,$timestamp)); $file = $filename.'.d'.$timestamp; } else { @@ -344,7 +344,7 @@ class Trashbin { $view = new \OC\Files\View('/'.$user); $size = 0; - $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?'); + $query = \OC_DB::prepare('SELECT `location`,`type`,`id`,`timestamp` FROM *PREFIX*files_trash WHERE `user`=?'); $result = $query->execute(array($user))->fetchAll(); $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', @@ -362,8 +362,8 @@ class Trashbin { $availableSpace = $availableSpace + $size; // if size limit for trash bin reached, delete oldest files in trash bin if ($availableSpace < 0) { - $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash' - .' WHERE user=? ORDER BY timestamp ASC'); + $query = \OC_DB::prepare('SELECT `location`,`type`,`id`,`timestamp` FROM *PREFIX*files_trash' + .' WHERE `user`=? ORDER BY `timestamp` ASC'); $result = $query->execute(array($user))->fetchAll(); $length = count($result); $i = 0; @@ -490,7 +490,7 @@ class Trashbin { * @return mixed trash bin size or false if no trash bin size is stored */ private static function getTrashbinSize($user) { - $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_trashsize WHERE user=?'); + $query = \OC_DB::prepare('SELECT `size` FROM *PREFIX*files_trashsize WHERE `user`=?'); $result = $query->execute(array($user))->fetchAll(); if ($result) { @@ -507,9 +507,9 @@ class Trashbin { */ private static function setTrashbinSize($user, $size) { if ( self::getTrashbinSize($user) === false) { - $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_trashsize (size, user) VALUES (?, ?)'); + $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_trashsize (`size`, `user`) VALUES (?, ?)'); }else { - $query = \OC_DB::prepare('UPDATE *PREFIX*files_trashsize SET size=? WHERE user=?'); + $query = \OC_DB::prepare('UPDATE *PREFIX*files_trashsize SET `size`=? WHERE `user`=?'); } $query->execute(array($size, $user)); } diff --git a/apps/files_versions/l10n/fr.php b/apps/files_versions/l10n/fr.php index 76ad8fc97a6..e2698c5c4aa 100644 --- a/apps/files_versions/l10n/fr.php +++ b/apps/files_versions/l10n/fr.php @@ -6,5 +6,6 @@ "File %s could not be reverted to version %s" => "Le fichier %s ne peut être restauré dans sa version %s", "No old versions available" => "Aucune ancienne version n'est disponible", "No path specified" => "Aucun chemin spécifié", +"Versions" => "Versions", "Revert a file to a previous version by clicking on its revert button" => "Restaurez un fichier dans une version antérieure en cliquant sur son bouton de restauration" ); diff --git a/apps/files_versions/l10n/sl.php b/apps/files_versions/l10n/sl.php index d6dfbee6aaf..2df00fc8264 100644 --- a/apps/files_versions/l10n/sl.php +++ b/apps/files_versions/l10n/sl.php @@ -3,7 +3,7 @@ "success" => "uspešno", "File %s was reverted to version %s" => "Datoteka %s je povrnjena na različico %s.", "failure" => "spodletelo", -"File %s could not be reverted to version %s" => "Datoteka %s ni mogoče povrniti na različico %s.", +"File %s could not be reverted to version %s" => "Datoteke %s ni mogoče povrniti na različico %s.", "No old versions available" => "Ni starejših različic.", "No path specified" => "Ni določene poti", "Versions" => "Različice", diff --git a/apps/files_versions/l10n/zh_HK.php b/apps/files_versions/l10n/zh_HK.php new file mode 100644 index 00000000000..71bd3bbbd94 --- /dev/null +++ b/apps/files_versions/l10n/zh_HK.php @@ -0,0 +1,6 @@ + "成功", +"failure" => "失敗", +"No old versions available" => "沒有以往版本", +"Versions" => "版本" +); diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 20611c61ec7..6da0e434541 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -53,7 +53,7 @@ class Storage { * @return mixed versions size or false if no versions size is stored */ private static function getVersionsSize($user) { - $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_versions WHERE user=?'); + $query = \OC_DB::prepare('SELECT `size` FROM *PREFIX*files_versions WHERE `user`=?'); $result = $query->execute(array($user))->fetchAll(); if ($result) { @@ -70,9 +70,9 @@ class Storage { */ private static function setVersionsSize($user, $size) { if ( self::getVersionsSize($user) === false) { - $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_versions (size, user) VALUES (?, ?)'); + $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_versions (`size`, `user`) VALUES (?, ?)'); }else { - $query = \OC_DB::prepare('UPDATE *PREFIX*files_versions SET size=? WHERE user=?'); + $query = \OC_DB::prepare('UPDATE *PREFIX*files_versions SET `size`=? WHERE `user`=?'); } $query->execute(array($size, $user)); } @@ -156,11 +156,18 @@ class Storage { /** * rename versions of a file */ - public static function rename($oldpath, $newpath) { - list($uid, $oldpath) = self::getUidAndFilename($oldpath); - list($uidn, $newpath) = self::getUidAndFilename($newpath); + public static function rename($old_path, $new_path) { + list($uid, $oldpath) = self::getUidAndFilename($old_path); + list($uidn, $newpath) = self::getUidAndFilename($new_path); $versions_view = new \OC\Files\View('/'.$uid .'/files_versions'); $files_view = new \OC\Files\View('/'.$uid .'/files'); + + // if the file already exists than it was a upload of a existing file + // over the web interface -> store() is the right function we need here + if ($files_view->file_exists($newpath)) { + return self::store($new_path); + } + $abs_newpath = $versions_view->getLocalFile($newpath); if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) { diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index efa5f8b4fe3..3dbc5e7d895 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -139,6 +139,9 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { if(!$this->enabled) { return array(); } + if(!$this->groupExists($gid)) { + return false; + } $cachekey = 'usersInGroup-'.$gid.'-'.$search.'-'.$limit.'-'.$offset; // check for cache of the exact query $groupUsers = $this->connection->getFromCache($cachekey); @@ -214,6 +217,12 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { * @returns array with display names (value) and user ids(key) */ public function displayNamesInGroup($gid, $search, $limit, $offset) { + if(!$this->enabled) { + return array(); + } + if(!$this->groupExists($gid)) { + return false; + } $users = $this->usersInGroup($gid, $search, $limit, $offset); $displayNames = array(); foreach($users as $user) { diff --git a/apps/user_ldap/l10n/es.php b/apps/user_ldap/l10n/es.php index 1f0f92e7ac4..098e16a5d13 100644 --- a/apps/user_ldap/l10n/es.php +++ b/apps/user_ldap/l10n/es.php @@ -68,6 +68,7 @@ "Quota Default" => "Cuota por defecto", "in bytes" => "en bytes", "Email Field" => "E-mail", +"User Home Folder Naming Rule" => "Regla para la carpeta Home de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Vacío para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", "Test Configuration" => "Configuración de prueba", "Help" => "Ayuda" diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php index b0e7ec12b21..c8aec0cd41b 100644 --- a/apps/user_ldap/l10n/es_AR.php +++ b/apps/user_ldap/l10n/es_AR.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Desactivar la validación por certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la conexión sólo funciona con esta opción, importá el certificado SSL del servidor LDAP en tu servidor ownCloud.", "Not recommended, use for testing only." => "No recomendado, sólo para pruebas.", +"Cache Time-To-Live" => "Tiempo de vida del caché", "in seconds. A change empties the cache." => "en segundos. Cambiarlo vacía la cache.", "Directory Settings" => "Configuración de Directorio", "User Display Name Field" => "Campo de nombre de usuario a mostrar", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Atributos de búsqueda de grupo", "Group-Member association" => "Asociación Grupo-Miembro", "Special Attributes" => "Atributos Especiales", +"Quota Field" => "Campo de cuota", +"Quota Default" => "Cuota por defecto", "in bytes" => "en bytes", +"Email Field" => "Campo de e-mail", +"User Home Folder Naming Rule" => "Regla de nombre de los directorios de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Vacío para el nombre de usuario (por defecto). En otro caso, especificá un atributo LDAP/AD.", +"Test Configuration" => "Probar configuración", "Help" => "Ayuda" ); diff --git a/apps/user_ldap/l10n/fa.php b/apps/user_ldap/l10n/fa.php index 7816ef7c6f7..9a01a67703d 100644 --- a/apps/user_ldap/l10n/fa.php +++ b/apps/user_ldap/l10n/fa.php @@ -11,6 +11,7 @@ "Add Server Configuration" => "افزودن پیکربندی سرور", "Host" => "میزبانی", "Password" => "رمز عبور", +"Group Filter" => "فیلتر گروه", "Port" => "درگاه", "in bytes" => "در بایت", "Help" => "راه‌نما" diff --git a/apps/user_ldap/l10n/fr.php b/apps/user_ldap/l10n/fr.php index abe13635698..990658e147e 100644 --- a/apps/user_ldap/l10n/fr.php +++ b/apps/user_ldap/l10n/fr.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Désactiver la validation du certificat SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la connexion ne fonctionne qu'avec cette option, importez le certificat SSL du serveur LDAP dans le serveur ownCloud.", "Not recommended, use for testing only." => "Non recommandé, utilisation pour tests uniquement.", +"Cache Time-To-Live" => "Durée de vie du cache", "in seconds. A change empties the cache." => "en secondes. Tout changement vide le cache.", "Directory Settings" => "Paramètres du répertoire", "User Display Name Field" => "Champ \"nom d'affichage\" de l'utilisateur", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Recherche des attributs du groupe", "Group-Member association" => "Association groupe-membre", "Special Attributes" => "Attributs spéciaux", +"Quota Field" => "Champ du quota", +"Quota Default" => "Quota par défaut", "in bytes" => "en octets", +"Email Field" => "Champ Email", +"User Home Folder Naming Rule" => "Convention de nommage du répertoire utilisateur", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Laisser vide ", +"Test Configuration" => "Tester la configuration", "Help" => "Aide" ); diff --git a/apps/user_ldap/l10n/sl.php b/apps/user_ldap/l10n/sl.php index 22ed5dc2f74..8ff1fd53440 100644 --- a/apps/user_ldap/l10n/sl.php +++ b/apps/user_ldap/l10n/sl.php @@ -41,7 +41,7 @@ "Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Podati je treba izbirno varnostno kopijo gostitelja. Ta mora biti natančna replika strežnika LDAP/AD.", "Backup (Replica) Port" => "Varnostna kopija (replika) podatka vrat", "Disable Main Server" => "Onemogoči glavni strežnik", -"When switched on, ownCloud will only connect to the replica server." => "Ob priklopu bo strežnik ownCloud povezan le z kopijo (repliko) strežnika.", +"When switched on, ownCloud will only connect to the replica server." => "Ob priklopu bo strežnik ownCloud povezan le s kopijo (repliko) strežnika.", "Use TLS" => "Uporabi TLS", "Do not use it additionally for LDAPS connections, it will fail." => "Strežnika ni priporočljivo uporabljati za povezave LDAPS. Povezava bo spodletela.", "Case insensitve LDAP server (Windows)" => "Strežnik LDAP ne upošteva velikosti črk (Windows)", diff --git a/apps/user_ldap/l10n/zh_CN.php b/apps/user_ldap/l10n/zh_CN.php index d494945e2e4..1911734805f 100644 --- a/apps/user_ldap/l10n/zh_CN.php +++ b/apps/user_ldap/l10n/zh_CN.php @@ -1,9 +1,24 @@ "未能删除服务器配置", +"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 look in the ownCloud log for further details." => "配置无效。更多细节请查看 ownCloud 日志。", "Deletion failed" => "删除失败", +"Take over settings from recent server configuration?" => "从近期的服务器配置中导入设置?", +"Keep settings?" => "保留设置吗?", +"Cannot add server configuration" => "无法添加服务器配置", +"Connection test succeeded" => "连接测试成功", +"Connection test failed" => "连接测试失败", +"Do you really want to delete the current Server Configuration?" => "您真的想要删除当前服务器配置吗?", +"Confirm Deletion" => "确认删除", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "警告:应用 user_ldap 和 user_webdavauth 不兼容。您可能遭遇未预料的行为。请垂询您的系统管理员禁用其中一个。", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "警告: PHP LDAP 模块未安装,后端将无法工作。请请求您的系统管理员安装该模块。", +"Server configuration" => "服务器配置", +"Add Server Configuration" => "添加服务器配置", "Host" => "主机", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "可以忽略协议,但如要使用SSL,则需以ldaps://开头", "Base DN" => "Base DN", +"One Base DN per line" => "每行一个基本判别名", "You can specify Base DN for users and groups in the Advanced tab" => "您可以在高级选项卡里为用户和组指定Base DN", "User DN" => "User DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "客户端使用的DN必须与绑定的相同,比如uid=agent,dc=example,dc=com\n如需匿名访问,将DN和密码保留为空", @@ -18,21 +33,43 @@ "Group Filter" => "组过滤", "Defines the filter to apply, when retrieving groups." => "定义拉取组信息时的过滤器", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "无需占位符,例如\"objectClass=posixGroup\"", +"Connection Settings" => "连接设置", +"Configuration Active" => "现行配置", +"When unchecked, this configuration will be skipped." => "当反选后,此配置将被忽略。", "Port" => "端口", +"Backup (Replica) Host" => "备份 (镜像) 主机", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "给出一个可选的备份主机。它必须为主 LDAP/AD 服务器的一个镜像。", +"Backup (Replica) Port" => "备份 (镜像) 端口", +"Disable Main Server" => "禁用主服务器", +"When switched on, ownCloud will only connect to the replica server." => "当开启后,ownCloud 将仅连接到镜像服务器。", "Use TLS" => "使用TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "对于 LDAPS 连接不要额外启用它,连接必然失败。", "Case insensitve LDAP server (Windows)" => "大小写敏感LDAP服务器(Windows)", "Turn off SSL certificate validation." => "关闭SSL证书验证", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "如果链接仅在此选项时可用,在您的ownCloud服务器中导入LDAP服务器的SSL证书。", "Not recommended, use for testing only." => "暂不推荐,仅供测试", +"Cache Time-To-Live" => "缓存存活时间", "in seconds. A change empties the cache." => "以秒计。修改将清空缓存。", +"Directory Settings" => "目录设置", "User Display Name Field" => "用户显示名称字段", "The LDAP attribute to use to generate the user`s ownCloud name." => "用来生成用户的ownCloud名称的 LDAP属性", "Base User Tree" => "基础用户树", +"One User Base DN per line" => "每行一个用户基准判别名", +"User Search Attributes" => "用户搜索属性", +"Optional; one attribute per line" => "可选;每行一个属性", "Group Display Name Field" => "组显示名称字段", "The LDAP attribute to use to generate the groups`s ownCloud name." => "用来生成组的ownCloud名称的LDAP属性", "Base Group Tree" => "基础组树", +"One Group Base DN per line" => "每行一个群组基准判别名", +"Group Search Attributes" => "群组搜索属性", "Group-Member association" => "组成员关联", +"Special Attributes" => "特殊属性", +"Quota Field" => "配额字段", +"Quota Default" => "默认配额", "in bytes" => "字节数", +"Email Field" => "电邮字段", +"User Home Folder Naming Rule" => "用户主目录命名规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "将用户名称留空(默认)。否则指定一个LDAP/AD属性", +"Test Configuration" => "测试配置", "Help" => "帮助" ); diff --git a/apps/user_ldap/l10n/zh_HK.php b/apps/user_ldap/l10n/zh_HK.php new file mode 100644 index 00000000000..190e4eba798 --- /dev/null +++ b/apps/user_ldap/l10n/zh_HK.php @@ -0,0 +1,5 @@ + "密碼", +"Port" => "連接埠", +"Help" => "幫助" +); diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index a8cfd45bf4d..6d32e9b2ab0 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -62,7 +62,10 @@ abstract class Access { $dn = $this->DNasBaseParameter($dn); $rr = @ldap_read($cr, $dn, $filter, array($attr)); if(!is_resource($rr)) { - \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG); + if(!empty($attr)) { + //do not throw this message on userExists check, irritates + \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG); + } //in case an error occurs , e.g. object does not exist return false; } @@ -84,7 +87,7 @@ abstract class Access { for($i=0;$i<$result[$attr]['count'];$i++) { if($this->resemblesDN($attr)) { $values[] = $this->sanitizeDN($result[$attr][$i]); - } elseif(strtolower($attr) == 'objectguid') { + } elseif(strtolower($attr) == 'objectguid' || strtolower($attr) == 'guid') { $values[] = $this->convertObjectGUID2Str($result[$attr][$i]); } else { $values[] = $result[$attr][$i]; @@ -895,7 +898,7 @@ abstract class Access { } //for now, supported (known) attributes are entryUUID, nsuniqueid, objectGUID - $testAttributes = array('entryuuid', 'nsuniqueid', 'objectguid'); + $testAttributes = array('entryuuid', 'nsuniqueid', 'objectguid', 'guid'); foreach($testAttributes as $attribute) { \OCP\Util::writeLog('user_ldap', 'Testing '.$attribute.' as UUID attr', \OCP\Util::DEBUG); diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 6643428afe4..20784570e93 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -212,7 +212,6 @@ class Connection { */ private function readConfiguration($force = false) { if((!$this->configured || $force) && !is_null($this->configID)) { - $defaults = $this->getDefaults(); $v = 'getValue'; $this->config['ldapHost'] = $this->$v('ldap_host'); $this->config['ldapBackupHost'] = $this->$v('ldap_backup_host'); diff --git a/apps/user_ldap/lib/helper.php b/apps/user_ldap/lib/helper.php index 308da3ef724..612a088269b 100644 --- a/apps/user_ldap/lib/helper.php +++ b/apps/user_ldap/lib/helper.php @@ -51,7 +51,8 @@ class Helper { $query = ' SELECT DISTINCT `configkey` FROM `*PREFIX*appconfig` - WHERE `configkey` LIKE ? + WHERE `appid` = \'user_ldap\' + AND `configkey` LIKE ? '; if($activeConfigurations) { $query .= ' AND `configvalue` = \'1\''; diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 44a19478598..1277e074714 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -180,6 +180,11 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { * @return boolean */ public function getHome($uid) { + // user Exists check required as it is not done in user proxy! + if(!$this->userExists($uid)) { + return false; + } + $cacheKey = 'getHome'.$uid; if($this->connection->isCached($cacheKey)) { return $this->connection->getFromCache($cacheKey); @@ -217,6 +222,10 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { * @return display name */ public function getDisplayName($uid) { + if(!$this->userExists($uid)) { + return false; + } + $cacheKey = 'getDisplayName'.$uid; if(!is_null($displayName = $this->connection->getFromCache($cacheKey))) { return $displayName; diff --git a/core/ajax/share.php b/core/ajax/share.php index 9201b48cb95..5854b65aa03 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -95,12 +95,12 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo // setup the email $subject = (string)$l->t('User %s shared a file with you', $displayName); - if ($type === 'dir') + if ($type === 'folder') $subject = (string)$l->t('User %s shared a folder with you', $displayName); $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($displayName, $file, $link)); - if ($type === 'dir') + if ($type === 'folder') $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($displayName, $file, $link)); @@ -110,7 +110,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo // send it out now try { - OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $user); + OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $displayName); OCP\JSON::success(); } catch (Exception $exception) { OCP\JSON::error(array('data' => array('message' => OC_Util::sanitizeHTML($exception->getMessage())))); diff --git a/core/js/jquery.infieldlabel.js b/core/js/jquery.infieldlabel.js index c7daf61edd8..8a76da1b140 100644 --- a/core/js/jquery.infieldlabel.js +++ b/core/js/jquery.infieldlabel.js @@ -1,13 +1,14 @@ -/** - * @license In-Field Label jQuery Plugin - * http://fuelyourcoding.com/scripts/infield.html +/* + * jquery.infieldlabel + * A simple jQuery plugin for adding labels that sit over a form field and fade away when the fields are populated. + * + * Copyright (c) 2009 - 2013 Doug Neiner (http://code.dougneiner.com) + * Source: https://github.com/dcneiner/In-Field-Labels-jQuery-Plugin + * Dual licensed MIT or GPL + * MIT (http://www.opensource.org/licenses/mit-license) + * GPL (http://www.opensource.org/licenses/gpl-license) * - * Copyright (c) 2009-2010 Doug Neiner - * Dual licensed under the MIT and GPL licenses. - * Uses the same license as jQuery, see: - * http://docs.jquery.com/License - * - * @version 0.1.6 + * @version 0.1.3 */ (function ($) { @@ -27,15 +28,20 @@ base.showing = true; base.init = function () { + var initialSet; + // Merge supplied options with default options base.options = $.extend({}, $.InFieldLabels.defaultOptions, options); - // Check if the field is already filled in + // Check if the field is already filled in // add a short delay to handle autocomplete setTimeout(function() { if (base.$field.val() !== "") { base.$label.hide(); base.showing = false; + } else { + base.$label.show(); + base.showing = true; } }, 200); @@ -47,23 +53,28 @@ // Use of a namespace (.infieldlabel) allows us to // unbind just this method later base.hideOnChange(e); - }).bind('paste', function (e) { + }).bind('paste', function () { // Since you can not paste an empty string we can assume // that the fieldis not empty and the label can be cleared. base.setOpacity(0.0); - }).change(function (e) { + }).change(function () { base.checkForEmpty(); }).bind('onPropertyChange', function () { base.checkForEmpty(); }).bind('keyup.infieldlabel', function () { - base.checkForEmpty() + base.checkForEmpty(); }); - setInterval(function(){ - if(base.$field.val() != ""){ - base.$label.hide(); - base.showing = false; - }; - },100); + + if ( base.options.pollDuration > 0 ) { + initialSet = setInterval( function () { + if (base.$field.val() !== "") { + base.$label.hide(); + base.showing = false; + clearInterval( initialSet ); + } + }, base.options.pollDuration ); + + } }; // If the label is currently showing @@ -92,7 +103,7 @@ } }; - base.prepForShow = function (e) { + base.prepForShow = function () { if (!base.showing) { // Prepare for a animate in... base.$label.css({opacity: 0.0}).show(); @@ -127,37 +138,39 @@ $.InFieldLabels.defaultOptions = { fadeOpacity: 0.5, // Once a field has focus, how transparent should the label be - fadeDuration: 300 // How long should it take to animate from 1.0 opacity to the fadeOpacity + fadeDuration: 300, // How long should it take to animate from 1.0 opacity to the fadeOpacity + pollDuration: 0, // If set to a number greater than zero, this will poll until content is detected in a field + enabledInputTypes: [ "text", "search", "tel", "url", "email", "password", "number", "textarea" ] }; $.fn.inFieldLabels = function (options) { + var allowed_types = options && options.enabledInputTypes || $.InFieldLabels.defaultOptions.enabledInputTypes; + return this.each(function () { // Find input or textarea based on for= attribute // The for attribute on the label must contain the ID // of the input or textarea element - var for_attr = $(this).attr('for'), $field; + var for_attr = $(this).attr('for'), field, restrict_type; if (!for_attr) { return; // Nothing to attach, since the for field wasn't used } // Find the referenced input or textarea element - $field = $( - "input#" + for_attr + "[type='text']," + - "input#" + for_attr + "[type='search']," + - "input#" + for_attr + "[type='tel']," + - "input#" + for_attr + "[type='url']," + - "input#" + for_attr + "[type='email']," + - "input#" + for_attr + "[type='password']," + - "textarea#" + for_attr - ); + field = document.getElementById( for_attr ); + if ( !field ) { + return; // No element found + } - if ($field.length === 0) { + // Restrict input type + restrict_type = $.inArray( field.type, allowed_types ); + + if ( restrict_type === -1 && field.nodeName !== "TEXTAREA" ) { return; // Again, nothing to attach } - // Only create object for input[text], input[password], or textarea - (new $.InFieldLabels(this, $field[0], options)); + // Only create object for matched input types and textarea + (new $.InFieldLabels(this, field, options)); }); }; diff --git a/core/js/js.js b/core/js/js.js index 1a94215c27b..b237c6fcf5b 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -643,7 +643,9 @@ $(document).ready(function(){ $('#pass2').showPassword(); //use infield labels - $("label.infield").inFieldLabels(); + $("label.infield").inFieldLabels({ + pollDuration: 100 + }); var checkShowCredentials = function() { var empty = false; diff --git a/core/l10n/ar.php b/core/l10n/ar.php index 67514723e75..d3fa6552a83 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -1,6 +1,16 @@ "المستخدم %s قام بمشاركة ملف معك", +"User %s shared a folder with you" => "المستخدم %s قام بمشاركة مجلد معك", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "المستخدم %s قام بمشاركة الملف \"%s\" معك . الملف متاح للتحميل من هنا : %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "المستخدم %s قام بمشاركة المجلد \"%s\" معك . المجلد متاح للتحميل من هنا : %s", +"Category type not provided." => "نوع التصنيف لم يدخل", "No category to add?" => "ألا توجد فئة للإضافة؟", +"This category already exists: %s" => "هذا التصنيف موجود مسبقا : %s", +"Object type not provided." => "نوع العنصر لم يدخل", +"%s ID not provided." => "رقم %s لم يدخل", +"Error adding %s to favorites." => "خطأ في اضافة %s الى المفضلة", "No categories selected for deletion." => "لم يتم اختيار فئة للحذف", +"Error removing %s from favorites." => "خطأ في حذف %s من المفضلة", "Sunday" => "الاحد", "Monday" => "الأثنين", "Tuesday" => "الثلاثاء", @@ -24,13 +34,26 @@ "seconds ago" => "منذ ثواني", "1 minute ago" => "منذ دقيقة", "{minutes} minutes ago" => "{minutes} منذ دقائق", +"1 hour ago" => "قبل ساعة مضت", +"{hours} hours ago" => "{hours} ساعة مضت", "today" => "اليوم", +"yesterday" => "يوم أمس", +"{days} days ago" => "{days} يوم سابق", +"last month" => "الشهر الماضي", +"{months} months ago" => "{months} شهر مضت", +"months ago" => "شهر مضى", +"last year" => "السنةالماضية", +"years ago" => "سنة مضت", "Choose" => "اختيار", "Cancel" => "الغاء", "No" => "لا", "Yes" => "نعم", "Ok" => "موافق", +"The object type is not specified." => "نوع العنصر غير محدد.", "Error" => "خطأ", +"The app name is not specified." => "اسم التطبيق غير محدد.", +"The required file {file} is not installed!" => "الملف المطلوب {file} غير منصّب.", +"Shared" => "مشارك", "Share" => "شارك", "Error while sharing" => "حصل خطأ عند عملية المشاركة", "Error while unsharing" => "حصل خطأ عند عملية إزالة المشاركة", @@ -41,6 +64,8 @@ "Share with link" => "شارك مع رابط", "Password protect" => "حماية كلمة السر", "Password" => "كلمة السر", +"Email link to person" => "ارسل الرابط بالبريد الى صديق", +"Send" => "أرسل", "Set expiration date" => "تعيين تاريخ إنتهاء الصلاحية", "Expiration date" => "تاريخ إنتهاء الصلاحية", "Share via email:" => "مشاركة عبر البريد الإلكتروني:", @@ -57,6 +82,10 @@ "Password protected" => "محمي بكلمة السر", "Error unsetting expiration date" => "حصل خطأ عند عملية إزالة تاريخ إنتهاء الصلاحية", "Error setting expiration date" => "حصل خطأ عند عملية تعيين تاريخ إنتهاء الصلاحية", +"Sending ..." => "جاري الارسال ...", +"Email sent" => "تم ارسال البريد الالكتروني", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "حصل خطأ في عملية التحديث, يرجى ارسال تقرير بهذه المشكلة الى ownCloud community.", +"The update was successful. Redirecting you to ownCloud now." => "تم التحديث بنجاح , يتم اعادة توجيهك الان الى Owncloud", "ownCloud password reset" => "إعادة تعيين كلمة سر ownCloud", "Use the following link to reset your password: {link}" => "استخدم هذه الوصلة لاسترجاع كلمة السر: {link}", "You will receive a link to reset your password via Email." => "سوف نرسل لك بريد يحتوي على وصلة لتجديد كلمة السر.", @@ -79,6 +108,9 @@ "Add" => "أدخل", "Security Warning" => "تحذير أمان", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "لا يوجد مولّد أرقام عشوائية ، الرجاء تفعيل الـ PHP OpenSSL extension.", +"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "بدون وجود مولد أرقام عشوائية آمن قد يتمكن المهاجم من التنبؤ بكلمات اعادة ضبط كلمة المرور والتمكن من السيطرة على حسابك", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.", +"For information how to properly configure your server, please see the documentation." => "للحصول على معلومات عن كيفية اعداد الخادم الخاص بك , يرجى زيارة الرابط التالي documentation.", "Create an admin account" => "أضف مستخدم رئيسي ", "Advanced" => "خيارات متقدمة", "Data folder" => "مجلد المعلومات", @@ -98,6 +130,8 @@ "Lost your password?" => "هل نسيت كلمة السر؟", "remember" => "تذكر", "Log in" => "أدخل", +"Alternative Logins" => "اسماء دخول بديلة", "prev" => "السابق", -"next" => "التالي" +"next" => "التالي", +"Updating ownCloud to version %s, this may take a while." => "جاري تحديث Owncloud الى اصدار %s , قد يستغرق هذا بعض الوقت." ); diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index afd55d42bf4..cbe48f6b683 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -128,7 +128,7 @@ "If you did not change your password recently, your account may be compromised!" => "V nedávné době jste nezměnili své heslo, Váš účet může být kompromitován.", "Please change your password to secure your account again." => "Změňte, prosím, své heslo pro opětovné zabezpečení Vašeho účtu.", "Lost your password?" => "Ztratili jste své heslo?", -"remember" => "zapamatovat si", +"remember" => "zapamatovat", "Log in" => "Přihlásit", "Alternative Logins" => "Alternativní přihlášení", "prev" => "předchozí", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index 2420ee67df5..9cd3a5e9785 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -109,6 +109,8 @@ "Security Warning" => "اخطار امنیتی", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "هیچ مولد تصادفی امن در دسترس نیست، لطفا فرمت PHP OpenSSL را فعال نمایید.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "بدون وجود یک تولید کننده اعداد تصادفی امن ، یک مهاجم ممکن است این قابلیت را داشته باشد که پیشگویی کند پسوورد های راه انداز گرفته شده و کنترلی روی حساب کاربری شما داشته باشد .", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", +"For information how to properly configure your server, please see the documentation." => "برای مطلع شدن از چگونگی تنظیم سرورتان،لطفا این را ببینید.", "Create an admin account" => "لطفا یک شناسه برای مدیر بسازید", "Advanced" => "حرفه ای", "Data folder" => "پوشه اطلاعاتی", @@ -128,6 +130,7 @@ "Lost your password?" => "آیا گذرواژه تان را به یاد نمی آورید؟", "remember" => "بیاد آوری", "Log in" => "ورود", +"Alternative Logins" => "ورود متناوب", "prev" => "بازگشت", "next" => "بعدی", "Updating ownCloud to version %s, this may take a while." => "به روز رسانی OwnCloud به نسخه ی %s، این عملیات ممکن است زمان بر باشد." diff --git a/core/l10n/lv.php b/core/l10n/lv.php index 9e3f169b2f4..2ddea9421be 100644 --- a/core/l10n/lv.php +++ b/core/l10n/lv.php @@ -122,7 +122,7 @@ "Database tablespace" => "Datubāzes tabulas telpa", "Database host" => "Datubāzes serveris", "Finish setup" => "Pabeigt iestatīšanu", -"web services under your control" => "jūsu vadībā esošie tīmekļa servisi", +"web services under your control" => "tīmekļa servisi tavā varā", "Log out" => "Izrakstīties", "Automatic logon rejected!" => "Automātiskā ierakstīšanās ir noraidīta!", "If you did not change your password recently, your account may be compromised!" => "Ja neesat pēdējā laikā mainījis paroli, iespējams, ka jūsu konts ir kompromitēts.", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 6a2c2e35a48..631baf7cef9 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "用户 %s 与您共享了文件夹\"%s\"。文件夹下载地址:%s", "Category type not provided." => "未提供分类类型。", "No category to add?" => "没有可添加分类?", +"This category already exists: %s" => "此分类已存在:%s", "Object type not provided." => "未提供对象类型。", "%s ID not provided." => "%s ID未提供。", "Error adding %s to favorites." => "向收藏夹中新增%s时出错。", @@ -83,6 +84,8 @@ "Error setting expiration date" => "设置过期日期时出错", "Sending ..." => "正在发送...", "Email sent" => "邮件已发送", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "更新不成功。请汇报将此问题汇报给 ownCloud 社区。", +"The update was successful. Redirecting you to ownCloud now." => "更新成功。正在重定向至 ownCloud。", "ownCloud password reset" => "重置 ownCloud 密码", "Use the following link to reset your password: {link}" => "使用以下链接重置您的密码:{link}", "You will receive a link to reset your password via Email." => "您将会收到包含可以重置密码链接的邮件。", @@ -106,6 +109,8 @@ "Security Warning" => "安全警告", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "随机数生成器无效,请启用PHP的OpenSSL扩展", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "没有安全随机码生成器,攻击者可能会猜测密码重置信息从而窃取您的账户", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "您的数据目录和文件可能可以直接被互联网访问,因为 .htaccess 并未正常工作。", +"For information how to properly configure your server, please see the documentation." => "关于如何配置服务器,请参见 此文档。", "Create an admin account" => "创建管理员账号", "Advanced" => "高级", "Data folder" => "数据目录", @@ -125,6 +130,7 @@ "Lost your password?" => "忘记密码?", "remember" => "记住", "Log in" => "登录", +"Alternative Logins" => "其他登录方式", "prev" => "上一页", "next" => "下一页", "Updating ownCloud to version %s, this may take a while." => "更新 ownCloud 到版本 %s,这可能需要一些时间。" diff --git a/core/l10n/zh_HK.php b/core/l10n/zh_HK.php index f55da4d3ef9..d02b7be6601 100644 --- a/core/l10n/zh_HK.php +++ b/core/l10n/zh_HK.php @@ -1,3 +1,90 @@ "你已登出。" +"Sunday" => "星期日", +"Monday" => "星期一", +"Tuesday" => "星期二", +"Wednesday" => "星期三", +"Thursday" => "星期四", +"Friday" => "星期五", +"Saturday" => "星期六", +"January" => "一月", +"February" => "二月", +"March" => "三月", +"April" => "四月", +"May" => "五月", +"June" => "六月", +"July" => "七月", +"August" => "八月", +"September" => "九月", +"October" => "十月", +"November" => "十一月", +"December" => "十二月", +"Settings" => "設定", +"today" => "今日", +"yesterday" => "昨日", +"last month" => "前一月", +"months ago" => "個月之前", +"Cancel" => "取消", +"No" => "No", +"Yes" => "Yes", +"Ok" => "OK", +"Error" => "錯誤", +"Shared" => "已分享", +"Share" => "分享", +"Error while sharing" => "分享時發生錯誤", +"Error while unsharing" => "取消分享時發生錯誤", +"Error while changing permissions" => "更改權限時發生錯誤", +"Shared with you and the group {group} by {owner}" => "{owner}與你及群組的分享", +"Shared with you by {owner}" => "{owner}與你的分享", +"Share with" => "分享", +"Share with link" => "以連結分享", +"Password protect" => "密碼保護", +"Password" => "密碼", +"Send" => "傳送", +"Set expiration date" => "設定分享期限", +"Expiration date" => "分享期限", +"Share via email:" => "以電郵分享", +"No people found" => "找不到", +"Unshare" => "取消分享", +"create" => "新增", +"update" => "更新", +"delete" => "刪除", +"share" => "分享", +"Password protected" => "密碼保護", +"Sending ..." => "傳送中", +"Email sent" => "郵件已傳", +"The update was successful. Redirecting you to ownCloud now." => "更新成功, 正", +"Use the following link to reset your password: {link}" => "請用以下連結重設你的密碼: {link}", +"You will receive a link to reset your password via Email." => "你將收到一封電郵", +"Reset email send." => "重設密碼郵件已傳", +"Request failed!" => "請求失敗", +"Username" => "用戶名稱", +"Request reset" => "重設", +"Your password was reset" => "你的密碼已被重設", +"To login page" => "前往登入版面", +"New password" => "新密碼", +"Reset password" => "重設密碼", +"Personal" => "個人", +"Users" => "用戶", +"Apps" => "軟件", +"Admin" => "管理", +"Help" => "幫助", +"Cloud not found" => "未找到Cloud", +"Add" => "加入", +"Create an admin account" => "建立管理員帳戶", +"Advanced" => "進階", +"Configure the database" => "設定資料庫", +"will be used" => "將被使用", +"Database user" => "資料庫帳戶", +"Database password" => "資料庫密碼", +"Database name" => "資料庫名稱", +"Log out" => "登出", +"Automatic logon rejected!" => "自動登入被拒", +"If you did not change your password recently, your account may be compromised!" => "如果你近期未曾更改密碼, 你的帳號可能被洩露!", +"Please change your password to secure your account again." => "請更改你的密碼以保護你的帳戶", +"Lost your password?" => "忘記密碼", +"remember" => "記住", +"Log in" => "登入", +"prev" => "前一步", +"next" => "下一步", +"Updating ownCloud to version %s, this may take a while." => "ownCloud (ver. %s)更新中, 請耐心等侯" ); diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 982efb412b6..9af56b72c33 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -38,7 +38,7 @@ src="" alt="ownCloud" />