diff options
Diffstat (limited to 'apps')
304 files changed, 4426 insertions, 3071 deletions
diff --git a/apps/comments/l10n/es.js b/apps/comments/l10n/es.js index ee19397cf34..5c2060c862b 100644 --- a/apps/comments/l10n/es.js +++ b/apps/comments/l10n/es.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Comments" : "Comentarios", "Unknown user" : "Usuario desconocido", - "New comment …" : "Comentario nuevo", + "New comment …" : "Nuevo comentario", "Delete comment" : "Borrar comentario", "Post" : "Publicar", "Cancel" : "Cancelar", @@ -16,13 +16,13 @@ OC.L10N.register( "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}", "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}", "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", + "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"], + "Comment" : "Comentar", "You commented" : "Has comentado", "%1$s commented" : "%1$s comentados", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Has comentado en %1$s", - "You commented on {file}" : "Usted comentó Has comentado en {file}", + "You commented on {file}" : "Has comentado en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos", diff --git a/apps/comments/l10n/es.json b/apps/comments/l10n/es.json index 80cc155293f..8956aedb26b 100644 --- a/apps/comments/l10n/es.json +++ b/apps/comments/l10n/es.json @@ -1,7 +1,7 @@ { "translations": { "Comments" : "Comentarios", "Unknown user" : "Usuario desconocido", - "New comment …" : "Comentario nuevo", + "New comment …" : "Nuevo comentario", "Delete comment" : "Borrar comentario", "Post" : "Publicar", "Cancel" : "Cancelar", @@ -14,13 +14,13 @@ "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}", "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}", "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", + "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"], + "Comment" : "Comentar", "You commented" : "Has comentado", "%1$s commented" : "%1$s comentados", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Has comentado en %1$s", - "You commented on {file}" : "Usted comentó Has comentado en {file}", + "You commented on {file}" : "Has comentado en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos", diff --git a/apps/comments/l10n/si_LK.js b/apps/comments/l10n/si_LK.js index 9badedaef20..7335455d181 100644 --- a/apps/comments/l10n/si_LK.js +++ b/apps/comments/l10n/si_LK.js @@ -1,7 +1,33 @@ OC.L10N.register( "comments", { + "Comments" : "අදහස් දැක්වීම්", + "Unknown user" : "හදුනානොගත් සේවාදායකයා", + "New comment …" : "අලුත් අදහස් දැක්වීමක් ...", + "Delete comment" : "අදහස් දැක්වීම මකන්න", + "Post" : "ලිපියක්", "Cancel" : "එපා", - "Save" : "සුරකින්න" + "Edit comment" : "අදහස වෙනස් කරන්න", + "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]", + "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !", + "More comments …" : "තවත් අදහස් ...", + "Save" : "සුරකින්න", + "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත", + "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත", + "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත", + "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත", + "Comment" : "අදහස", + "You commented" : "ඔයාගේ අදහස", + "%1$s commented" : "%1$s අදහස් දක්වා ඇත", + "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත", + "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත", + "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත", + "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත", + "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත", + "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>", + "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත", + "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත", + "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/si_LK.json b/apps/comments/l10n/si_LK.json index e5ce448e641..5720c3789c5 100644 --- a/apps/comments/l10n/si_LK.json +++ b/apps/comments/l10n/si_LK.json @@ -1,5 +1,31 @@ { "translations": { + "Comments" : "අදහස් දැක්වීම්", + "Unknown user" : "හදුනානොගත් සේවාදායකයා", + "New comment …" : "අලුත් අදහස් දැක්වීමක් ...", + "Delete comment" : "අදහස් දැක්වීම මකන්න", + "Post" : "ලිපියක්", "Cancel" : "එපා", - "Save" : "සුරකින්න" + "Edit comment" : "අදහස වෙනස් කරන්න", + "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]", + "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !", + "More comments …" : "තවත් අදහස් ...", + "Save" : "සුරකින්න", + "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත", + "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත", + "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත", + "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත", + "Comment" : "අදහස", + "You commented" : "ඔයාගේ අදහස", + "%1$s commented" : "%1$s අදහස් දක්වා ඇත", + "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත", + "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත", + "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත", + "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත", + "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත", + "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>", + "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත", + "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත", + "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/sr.js b/apps/comments/l10n/sr.js index 39b1595fc0f..94c0988bfbd 100644 --- a/apps/comments/l10n/sr.js +++ b/apps/comments/l10n/sr.js @@ -1,20 +1,34 @@ OC.L10N.register( "comments", { - "Type in a new comment..." : "Укуцајте нови коментар...", + "Comments" : "Коментари", + "Unknown user" : "Непознат корисник", + "New comment …" : "Нови коментар …", "Delete comment" : "Обриши коментар", "Post" : "Објави", "Cancel" : "Откажи", - "Edit comment" : "Уреди коментар", + "Edit comment" : "Измени коментар", "[Deleted user]" : "[Обрисан корисник]", - "Comments" : "Коментари", - "No other comments available" : "Нема других коментара", - "More comments..." : "Још коментара...", + "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију", + "More comments …" : "Преостали коментари …", "Save" : "Сачувај", "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}", - "{count} unread comments" : "{count} непрочитаних коментара", + "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}", + "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}", + "Error occurred while posting comment" : "Дошло је до грешке при објави коментара", + "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], "Comment" : "Коментар", - "%1$s commented" : "%1$s коментариса", - "%1$s commented on %2$s" : "%1$s коментариса на %2$s" + "You commented" : "Искоментарисали сте", + "%1$s commented" : "%1$s коментарисао", + "{author} commented" : "{author} коментарисао", + "You commented on %1$s" : "Коментарисали сте на %1$s", + "You commented on {file}" : "Коментаристали сте на {file}", + "%1$s commented on %2$s" : "%1$s коментарисао на %2$s", + "{author} commented on {file}" : "{author} коментарисао на {file}", + "<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове", + "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"", + "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/comments/l10n/sr.json b/apps/comments/l10n/sr.json index 6b3fe95ea9e..6710667913c 100644 --- a/apps/comments/l10n/sr.json +++ b/apps/comments/l10n/sr.json @@ -1,18 +1,32 @@ { "translations": { - "Type in a new comment..." : "Укуцајте нови коментар...", + "Comments" : "Коментари", + "Unknown user" : "Непознат корисник", + "New comment …" : "Нови коментар …", "Delete comment" : "Обриши коментар", "Post" : "Објави", "Cancel" : "Откажи", - "Edit comment" : "Уреди коментар", + "Edit comment" : "Измени коментар", "[Deleted user]" : "[Обрисан корисник]", - "Comments" : "Коментари", - "No other comments available" : "Нема других коментара", - "More comments..." : "Још коментара...", + "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију", + "More comments …" : "Преостали коментари …", "Save" : "Сачувај", "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}", - "{count} unread comments" : "{count} непрочитаних коментара", + "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}", + "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}", + "Error occurred while posting comment" : "Дошло је до грешке при објави коментара", + "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], "Comment" : "Коментар", - "%1$s commented" : "%1$s коментариса", - "%1$s commented on %2$s" : "%1$s коментариса на %2$s" + "You commented" : "Искоментарисали сте", + "%1$s commented" : "%1$s коментарисао", + "{author} commented" : "{author} коментарисао", + "You commented on %1$s" : "Коментарисали сте на %1$s", + "You commented on {file}" : "Коментаристали сте на {file}", + "%1$s commented on %2$s" : "%1$s коментарисао на %2$s", + "{author} commented on {file}" : "{author} коментарисао на {file}", + "<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове", + "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"", + "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/comments/l10n/tr.js b/apps/comments/l10n/tr.js index acab6a24100..423c7137407 100644 --- a/apps/comments/l10n/tr.js +++ b/apps/comments/l10n/tr.js @@ -25,7 +25,7 @@ OC.L10N.register( "You commented on {file}" : "{file} hakkında yorum yaptınız", "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı", - "<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>", + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti", "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti", "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti", diff --git a/apps/comments/l10n/tr.json b/apps/comments/l10n/tr.json index a39dfc68f8b..0fc01885c32 100644 --- a/apps/comments/l10n/tr.json +++ b/apps/comments/l10n/tr.json @@ -23,7 +23,7 @@ "You commented on {file}" : "{file} hakkında yorum yaptınız", "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı", - "<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>", + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti", "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti", "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti", diff --git a/apps/comments/l10n/vi.js b/apps/comments/l10n/vi.js index b21b2905116..8420c0616a7 100644 --- a/apps/comments/l10n/vi.js +++ b/apps/comments/l10n/vi.js @@ -1,7 +1,34 @@ OC.L10N.register( "comments", { + "Comments" : "Các bình luận", + "Unknown user" : "Người dùng không tồn tại", + "New comment …" : "Tạo bình luận mới", + "Delete comment" : "Xóa bình luận", + "Post" : "Đăng", "Cancel" : "Hủy", - "Save" : "Lưu" + "Edit comment" : "Sửa bình luận", + "[Deleted user]" : "[Người dùng bị xoá]", + "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", + "More comments …" : "Xem thêm các bình luận...", + "Save" : "Lưu", + "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}", + "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}", + "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}", + "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận", + "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], + "Comment" : "Bình luận", + "You commented" : "Bạn đã bình luận", + "%1$s commented" : "%1$s được bình luận", + "{author} commented" : "{author} đã bình luận", + "You commented on %1$s" : "Bạn đã bình luận về %1$s", + "You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}", + "%1$s commented on %2$s" : "%1$s đã bình luận về%2$s", + "{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}", + "<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin", + "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”", + "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/vi.json b/apps/comments/l10n/vi.json index 71ecdab9df5..0953f50171c 100644 --- a/apps/comments/l10n/vi.json +++ b/apps/comments/l10n/vi.json @@ -1,5 +1,32 @@ { "translations": { + "Comments" : "Các bình luận", + "Unknown user" : "Người dùng không tồn tại", + "New comment …" : "Tạo bình luận mới", + "Delete comment" : "Xóa bình luận", + "Post" : "Đăng", "Cancel" : "Hủy", - "Save" : "Lưu" + "Edit comment" : "Sửa bình luận", + "[Deleted user]" : "[Người dùng bị xoá]", + "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", + "More comments …" : "Xem thêm các bình luận...", + "Save" : "Lưu", + "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}", + "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}", + "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}", + "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận", + "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], + "Comment" : "Bình luận", + "You commented" : "Bạn đã bình luận", + "%1$s commented" : "%1$s được bình luận", + "{author} commented" : "{author} đã bình luận", + "You commented on %1$s" : "Bạn đã bình luận về %1$s", + "You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}", + "%1$s commented on %2$s" : "%1$s đã bình luận về%2$s", + "{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}", + "<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin", + "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”", + "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index b104cb7fd69..9b500c9f300 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <description>WebDAV endpoint</description> <licence>AGPL</licence> <author>owncloud.org</author> - <version>1.4.3</version> + <version>1.4.4</version> <default_enable/> <types> <filesystem/> diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php index bd9de775f44..b005ec2fcb8 100644 --- a/apps/dav/appinfo/v1/caldav.php +++ b/apps/dav/appinfo/v1/caldav.php @@ -49,7 +49,7 @@ $db = \OC::$server->getDatabaseConnection(); $userManager = \OC::$server->getUserManager(); $random = \OC::$server->getSecureRandom(); $dispatcher = \OC::$server->getEventDispatcher(); -$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, $random, $dispatcher, true); +$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, \OC::$server->getGroupManager(), $random, $dispatcher, true); $debugging = \OC::$server->getConfig()->getSystemValue('debug', false); diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php index 8dea6684742..74003f11c9b 100644 --- a/apps/dav/appinfo/v1/carddav.php +++ b/apps/dav/appinfo/v1/carddav.php @@ -48,7 +48,7 @@ $principalBackend = new Principal( 'principals/' ); $db = \OC::$server->getDatabaseConnection(); -$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getEventDispatcher()); +$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getGroupManager(), \OC::$server->getEventDispatcher()); $debugging = \OC::$server->getConfig()->getSystemValue('debug', false); diff --git a/apps/dav/appinfo/v2/remote.php b/apps/dav/appinfo/v2/remote.php index 3a00c8006ec..c1b29a4a177 100644 --- a/apps/dav/appinfo/v2/remote.php +++ b/apps/dav/appinfo/v2/remote.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2016, ownCloud, Inc. * * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @license AGPL-3.0 * diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js new file mode 100644 index 00000000000..1b176c5d506 --- /dev/null +++ b/apps/dav/l10n/ca.js @@ -0,0 +1,49 @@ +OC.L10N.register( + "dav", + { + "Calendar" : "Calendari", + "Todos" : "Tots", + "{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}", + "You created calendar {calendar}" : "Vosté ha creat el calentari {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} ha esborrat el calendari {calendar}", + "You deleted calendar {calendar}" : "Voste ha esborrat el calendari {calendar}", + "{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}", + "You updated calendar {calendar}" : "Vosté ha actualitzat el calendari {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vosté", + "You shared calendar {calendar} with {user}" : "Vosté ha compartit el calendari {calendar} amb {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} no ha compartit el calendari {calendar} amb vosté", + "You unshared calendar {calendar} from {user}" : "Vosté no ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} no ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} no comparteixen el calendari {calendar} de si mateixos", + "You shared calendar {calendar} with group {group}" : "Has compartit el calendari {calendar} amb el grup {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} ha compartit el calendari {calendar} amb el grup {group}", + "You unshared calendar {calendar} from group {group}" : "Has desactivat el calendari {calendar} del grup {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} calendari no publicat {calendar} del grup {grup}", + "{actor} created event {event} in calendar {calendar}" : "{actor} ha creat l'esdeveniment {event} al calendari {calendar}", + "You created event {event} in calendar {calendar}" : "Heu creat l'esdeveniment {event} al calendari {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminat esdeveniment {esdeveniment} del calendari {calendar}", + "You deleted event {event} from calendar {calendar}" : "Has eliminat l'esdeveniment {event} del calendari {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}", + "You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} creat tot {tot} a la llista {calendar}", + "You created todo {todo} in list {calendar}" : "Heu creat tot {tot} a la llista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} eliminat tot {tot} de la llista {calendar}", + "You deleted todo {todo} from list {calendar}" : "Heu eliminat tot {tot} de la llista {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} actualitzat tot {tot} a la llista {calendar}", + "You updated todo {todo} in list {calendar}" : "Heu actualitzat tot {tot} a la llista {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} resolt tot {tot} a la llista {calendar}", + "You solved todo {todo} in list {calendar}" : "Has resolt la tasca {todo} de {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} ha tornat a obrir tot {tot} a la llista {calendar}", + "You reopened todo {todo} in list {calendar}" : "Heu tornat a obrir tot {tot} a la llista {calendar}", + "A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat", + "A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari", + "A calendar <strong>todo</strong> was modified" : "<strong>Tot</strong> un calendari va ser modificat", + "Contact birthdays" : "Aniversaris dels contactes", + "Personal" : "Personal", + "Contacts" : "Contactes", + "Technical details" : "Detalls tècnics", + "Remote Address: %s" : "Adreça remota: %s", + "Request ID: %s" : "Sol·licitud ID: %s " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json new file mode 100644 index 00000000000..7c30c4050a0 --- /dev/null +++ b/apps/dav/l10n/ca.json @@ -0,0 +1,47 @@ +{ "translations": { + "Calendar" : "Calendari", + "Todos" : "Tots", + "{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}", + "You created calendar {calendar}" : "Vosté ha creat el calentari {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} ha esborrat el calendari {calendar}", + "You deleted calendar {calendar}" : "Voste ha esborrat el calendari {calendar}", + "{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}", + "You updated calendar {calendar}" : "Vosté ha actualitzat el calendari {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vosté", + "You shared calendar {calendar} with {user}" : "Vosté ha compartit el calendari {calendar} amb {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} no ha compartit el calendari {calendar} amb vosté", + "You unshared calendar {calendar} from {user}" : "Vosté no ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} no ha compartit el calendari {calendar} amb {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} no comparteixen el calendari {calendar} de si mateixos", + "You shared calendar {calendar} with group {group}" : "Has compartit el calendari {calendar} amb el grup {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} ha compartit el calendari {calendar} amb el grup {group}", + "You unshared calendar {calendar} from group {group}" : "Has desactivat el calendari {calendar} del grup {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} calendari no publicat {calendar} del grup {grup}", + "{actor} created event {event} in calendar {calendar}" : "{actor} ha creat l'esdeveniment {event} al calendari {calendar}", + "You created event {event} in calendar {calendar}" : "Heu creat l'esdeveniment {event} al calendari {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminat esdeveniment {esdeveniment} del calendari {calendar}", + "You deleted event {event} from calendar {calendar}" : "Has eliminat l'esdeveniment {event} del calendari {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}", + "You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} creat tot {tot} a la llista {calendar}", + "You created todo {todo} in list {calendar}" : "Heu creat tot {tot} a la llista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} eliminat tot {tot} de la llista {calendar}", + "You deleted todo {todo} from list {calendar}" : "Heu eliminat tot {tot} de la llista {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} actualitzat tot {tot} a la llista {calendar}", + "You updated todo {todo} in list {calendar}" : "Heu actualitzat tot {tot} a la llista {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} resolt tot {tot} a la llista {calendar}", + "You solved todo {todo} in list {calendar}" : "Has resolt la tasca {todo} de {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} ha tornat a obrir tot {tot} a la llista {calendar}", + "You reopened todo {todo} in list {calendar}" : "Heu tornat a obrir tot {tot} a la llista {calendar}", + "A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat", + "A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari", + "A calendar <strong>todo</strong> was modified" : "<strong>Tot</strong> un calendari va ser modificat", + "Contact birthdays" : "Aniversaris dels contactes", + "Personal" : "Personal", + "Contacts" : "Contactes", + "Technical details" : "Detalls tècnics", + "Remote Address: %s" : "Adreça remota: %s", + "Request ID: %s" : "Sol·licitud ID: %s " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js new file mode 100644 index 00000000000..ad84267ebf5 --- /dev/null +++ b/apps/dav/l10n/sr.js @@ -0,0 +1,49 @@ +OC.L10N.register( + "dav", + { + "Calendar" : "Календар", + "Todos" : "Подсетници", + "{actor} created calendar {calendar}" : "{actor} је направио календар {calendar}", + "You created calendar {calendar}" : "Креирали сте календар {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} је обрисао календар {calendar}", + "You deleted calendar {calendar}" : "Обрисали сте календар {calendar}", + "{actor} updated calendar {calendar}" : "{actor} је ажурирао календар {calendar}", + "You updated calendar {calendar}" : "Ажурирали сте календар {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} је поделио календар {calendar} са вама", + "You shared calendar {calendar} with {user}" : "Поделили сте календар {calendar} са {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} је поделио календар {calendar} са {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} је укинуо дељење календара {calendar} са вама", + "You unshared calendar {calendar} from {user}" : "Укинули сте дељење календара {calendar} са {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} је укинуо дељење календара {calendar} са {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} је укинуо дељење календара {calendar} од себе", + "You shared calendar {calendar} with group {group}" : "Поделили сте календар {calendar} са групом {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} је поделио календар {calendar} са групом {group}", + "You unshared calendar {calendar} from group {group}" : "Укинули сте дељење календара {calendar} са групом {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} је укинуо дељење календара {calendar} са групом {group}", + "{actor} created event {event} in calendar {calendar}" : "{actor} је направио догађај {event} у календару {calendar}", + "You created event {event} in calendar {calendar}" : "Креирали сте догађај {event} у календару {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} је обрисао догађај {event} из календара {calendar}", + "You deleted event {event} from calendar {calendar}" : "Обрисали сте догађај {event} из календара {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} је ажурирао догађај {event} у календару {calendar}", + "You updated event {event} in calendar {calendar}" : "Ажурирали сте догађај {event} у календару {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} је направио подсетник {todo} у листи {calendar}", + "You created todo {todo} in list {calendar}" : "Креирали сте подсетник {todo} у листи {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} је обрисао подсетник {todo} из листе {calendar}", + "You deleted todo {todo} from list {calendar}" : "Обрисали сте подсетник {todo} из листе {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} је ажурирао подсетник {todo} у листи {calendar}", + "You updated todo {todo} in list {calendar}" : "Ажурирали сте подсетник {todo} у листи {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} је обрисао подсетник {todo} из листе {calendar}", + "You solved todo {todo} in list {calendar}" : "Маркирали сте подсетник {todo} као готов у листи {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} је поново отворио подсетник {todo} у листи {calendar}", + "You reopened todo {todo} in list {calendar}" : "Поново сте отворили подсетник {todo} у листи {calendar}", + "A <strong>calendar</strong> was modified" : "<strong>Календар</strong> је измењен", + "A calendar <strong>event</strong> was modified" : "<strong>Догађај</strong> из календара је измењен", + "A calendar <strong>todo</strong> was modified" : "<strong>Подсетник</strong> из календара је измењен", + "Contact birthdays" : "Рођендани контаката", + "Personal" : "Лично", + "Contacts" : "Контакти", + "Technical details" : "Технички детаљи", + "Remote Address: %s" : "Удаљена адреса: %s", + "Request ID: %s" : "ИД захтева: %s" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json new file mode 100644 index 00000000000..613f034614b --- /dev/null +++ b/apps/dav/l10n/sr.json @@ -0,0 +1,47 @@ +{ "translations": { + "Calendar" : "Календар", + "Todos" : "Подсетници", + "{actor} created calendar {calendar}" : "{actor} је направио календар {calendar}", + "You created calendar {calendar}" : "Креирали сте календар {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} је обрисао календар {calendar}", + "You deleted calendar {calendar}" : "Обрисали сте календар {calendar}", + "{actor} updated calendar {calendar}" : "{actor} је ажурирао календар {calendar}", + "You updated calendar {calendar}" : "Ажурирали сте календар {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} је поделио календар {calendar} са вама", + "You shared calendar {calendar} with {user}" : "Поделили сте календар {calendar} са {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} је поделио календар {calendar} са {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} је укинуо дељење календара {calendar} са вама", + "You unshared calendar {calendar} from {user}" : "Укинули сте дељење календара {calendar} са {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} је укинуо дељење календара {calendar} са {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} је укинуо дељење календара {calendar} од себе", + "You shared calendar {calendar} with group {group}" : "Поделили сте календар {calendar} са групом {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} је поделио календар {calendar} са групом {group}", + "You unshared calendar {calendar} from group {group}" : "Укинули сте дељење календара {calendar} са групом {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} је укинуо дељење календара {calendar} са групом {group}", + "{actor} created event {event} in calendar {calendar}" : "{actor} је направио догађај {event} у календару {calendar}", + "You created event {event} in calendar {calendar}" : "Креирали сте догађај {event} у календару {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} је обрисао догађај {event} из календара {calendar}", + "You deleted event {event} from calendar {calendar}" : "Обрисали сте догађај {event} из календара {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} је ажурирао догађај {event} у календару {calendar}", + "You updated event {event} in calendar {calendar}" : "Ажурирали сте догађај {event} у календару {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} је направио подсетник {todo} у листи {calendar}", + "You created todo {todo} in list {calendar}" : "Креирали сте подсетник {todo} у листи {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} је обрисао подсетник {todo} из листе {calendar}", + "You deleted todo {todo} from list {calendar}" : "Обрисали сте подсетник {todo} из листе {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} је ажурирао подсетник {todo} у листи {calendar}", + "You updated todo {todo} in list {calendar}" : "Ажурирали сте подсетник {todo} у листи {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} је обрисао подсетник {todo} из листе {calendar}", + "You solved todo {todo} in list {calendar}" : "Маркирали сте подсетник {todo} као готов у листи {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} је поново отворио подсетник {todo} у листи {calendar}", + "You reopened todo {todo} in list {calendar}" : "Поново сте отворили подсетник {todo} у листи {calendar}", + "A <strong>calendar</strong> was modified" : "<strong>Календар</strong> је измењен", + "A calendar <strong>event</strong> was modified" : "<strong>Догађај</strong> из календара је измењен", + "A calendar <strong>todo</strong> was modified" : "<strong>Подсетник</strong> из календара је измењен", + "Contact birthdays" : "Рођендани контаката", + "Personal" : "Лично", + "Contacts" : "Контакти", + "Technical details" : "Технички детаљи", + "Remote Address: %s" : "Удаљена адреса: %s", + "Request ID: %s" : "ИД захтева: %s" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index ad86392341e..e292cfa7d59 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -26,19 +26,19 @@ OC.L10N.register( "You deleted event {event} from calendar {calendar}" : "{calendar} takviminden {event} etkinliğini sildiniz", "{actor} updated event {event} in calendar {calendar}" : "{actor}, {calendar} takvimindeki {event} etkinliğini güncelledi", "You updated event {event} in calendar {calendar}" : "{calendar} takvimindeki {event} etkinliğini güncellediniz", - "{actor} created todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesine {todo} işini ekledi", - "You created todo {todo} in list {calendar}" : "{calendar} takvimi listesine {todo} işini eklediniz", - "{actor} deleted todo {todo} from list {calendar}" : "{actor}, {calendar} takvimi listesinden {todo} işini sildi", - "You deleted todo {todo} from list {calendar}" : "{calendar} takvimi listesinden {todo} işini sildiniz", - "{actor} updated todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini güncelledi", - "You updated todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini güncellediniz", - "{actor} solved todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini tamamladı", - "You solved todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini tamamladınız", - "{actor} reopened todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini yeniden başlattı", - "You reopened todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini yeniden başlattınız", + "{actor} created todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesine {todo} yapılacak işini ekledi", + "You created todo {todo} in list {calendar}" : "{calendar} takvimi listesine {todo} yapılacak işini eklediniz", + "{actor} deleted todo {todo} from list {calendar}" : "{actor}, {calendar} takvimi listesinden {todo} yapılacak işini sildi", + "You deleted todo {todo} from list {calendar}" : "{calendar} takvimi listesinden {todo} yapılacak işini sildiniz", + "{actor} updated todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini güncelledi", + "You updated todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini güncellediniz", + "{actor} solved todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini tamamladı", + "You solved todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini tamamladınız", + "{actor} reopened todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini yeniden başlattı", + "You reopened todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini yeniden başlattınız", "A <strong>calendar</strong> was modified" : "Bir <strong>takvim</strong> düzenlendi", - "A calendar <strong>event</strong> was modified" : "Bir <strong>etkinlik</strong> düzenlendi", - "A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>işi</strong> düzenlendi", + "A calendar <strong>event</strong> was modified" : "Bir takvim <strong>etkinliği</strong> düzenlendi", + "A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>yapılacak işi</strong> düzenlendi", "Contact birthdays" : "Kişi doğum günleri", "Personal" : "Kişisel", "Contacts" : "Kişiler", diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index a2f97bc2faf..f189e713ec5 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -24,19 +24,19 @@ "You deleted event {event} from calendar {calendar}" : "{calendar} takviminden {event} etkinliğini sildiniz", "{actor} updated event {event} in calendar {calendar}" : "{actor}, {calendar} takvimindeki {event} etkinliğini güncelledi", "You updated event {event} in calendar {calendar}" : "{calendar} takvimindeki {event} etkinliğini güncellediniz", - "{actor} created todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesine {todo} işini ekledi", - "You created todo {todo} in list {calendar}" : "{calendar} takvimi listesine {todo} işini eklediniz", - "{actor} deleted todo {todo} from list {calendar}" : "{actor}, {calendar} takvimi listesinden {todo} işini sildi", - "You deleted todo {todo} from list {calendar}" : "{calendar} takvimi listesinden {todo} işini sildiniz", - "{actor} updated todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini güncelledi", - "You updated todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini güncellediniz", - "{actor} solved todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini tamamladı", - "You solved todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini tamamladınız", - "{actor} reopened todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} işini yeniden başlattı", - "You reopened todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} işini yeniden başlattınız", + "{actor} created todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesine {todo} yapılacak işini ekledi", + "You created todo {todo} in list {calendar}" : "{calendar} takvimi listesine {todo} yapılacak işini eklediniz", + "{actor} deleted todo {todo} from list {calendar}" : "{actor}, {calendar} takvimi listesinden {todo} yapılacak işini sildi", + "You deleted todo {todo} from list {calendar}" : "{calendar} takvimi listesinden {todo} yapılacak işini sildiniz", + "{actor} updated todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini güncelledi", + "You updated todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini güncellediniz", + "{actor} solved todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini tamamladı", + "You solved todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini tamamladınız", + "{actor} reopened todo {todo} in list {calendar}" : "{actor}, {calendar} takvimi listesindeki {todo} yapılacak işini yeniden başlattı", + "You reopened todo {todo} in list {calendar}" : "{calendar} takvimi listesindeki {todo} yapılacak işini yeniden başlattınız", "A <strong>calendar</strong> was modified" : "Bir <strong>takvim</strong> düzenlendi", - "A calendar <strong>event</strong> was modified" : "Bir <strong>etkinlik</strong> düzenlendi", - "A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>işi</strong> düzenlendi", + "A calendar <strong>event</strong> was modified" : "Bir takvim <strong>etkinliği</strong> düzenlendi", + "A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>yapılacak işi</strong> düzenlendi", "Contact birthdays" : "Kişi doğum günleri", "Personal" : "Kişisel", "Contacts" : "Kişiler", diff --git a/apps/dav/lib/AppInfo/PluginManager.php b/apps/dav/lib/AppInfo/PluginManager.php new file mode 100644 index 00000000000..9cdf358c80e --- /dev/null +++ b/apps/dav/lib/AppInfo/PluginManager.php @@ -0,0 +1,170 @@ +<?php +/** + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud GmbH. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\AppInfo; + +use OCP\App\IAppManager; +use OC\ServerContainer; +use OCP\AppFramework\QueryException; + +/** + * Manager for DAV plugins from apps, used to register them + * to the Sabre server. + */ +class PluginManager { + + /** + * @var ServerContainer + */ + private $container; + + /** + * @var IAppManager + */ + private $appManager; + + /** + * App plugins + * + * @var array + */ + private $plugins = null; + + /** + * App collections + * + * @var array + */ + private $collections = null; + + /** + * Contstruct a PluginManager + * + * @param ServerContainer $container server container for resolving plugin classes + * @param IAppManager $appManager app manager to loading apps and their info + */ + public function __construct(ServerContainer $container, IAppManager $appManager) { + $this->container = $container; + $this->appManager = $appManager; + } + + /** + * Returns an array of app-registered plugins + * + * @return array + */ + public function getAppPlugins() { + if (null === $this->plugins) { + $this->populate(); + } + return $this->plugins; + } + + /** + * Returns an array of app-registered collections + * + * @return array + */ + public function getAppCollections() { + if (null === $this->collections) { + $this->populate(); + } + return $this->collections; + } + + /** + * Retrieve plugin and collection list and populate attributes + */ + private function populate() { + $this->plugins = []; + $this->collections = []; + foreach ($this->appManager->getInstalledApps() as $app) { + // load plugins and collections from info.xml + $info = $this->appManager->getAppInfo($app); + if (!isset($info['types']) || !in_array('dav', $info['types'], true)) { + continue; + } + // FIXME: switch to public API once available + // load app to make sure its classes are available + \OC_App::loadApp($app); + $this->loadSabrePluginsFromInfoXml($this->extractPluginList($info)); + $this->loadSabreCollectionsFromInfoXml($this->extractCollectionList($info)); + } + } + + private function extractPluginList(array $array) { + if (isset($array['sabre']) && is_array($array['sabre'])) { + if (isset($array['sabre']['plugins']) && is_array($array['sabre']['plugins'])) { + if (isset($array['sabre']['plugins']['plugin'])) { + $items = $array['sabre']['plugins']['plugin']; + if (!is_array($items)) { + $items = [$items]; + } + return $items; + } + } + } + return []; + } + + private function extractCollectionList(array $array) { + if (isset($array['sabre']) && is_array($array['sabre'])) { + if (isset($array['sabre']['collections']) && is_array($array['sabre']['collections'])) { + if (isset($array['sabre']['collections']['collection'])) { + $items = $array['sabre']['collections']['collection']; + if (!is_array($items)) { + $items = [$items]; + } + return $items; + } + } + } + return []; + } + + private function loadSabrePluginsFromInfoXml(array $plugins) { + foreach ($plugins as $plugin) { + try { + $this->plugins[] = $this->container->query($plugin); + } catch (QueryException $e) { + if (class_exists($plugin)) { + $this->plugins[] = new $plugin(); + } else { + throw new \Exception("Sabre plugin class '$plugin' is unknown and could not be loaded"); + } + } + } + } + + private function loadSabreCollectionsFromInfoXml(array $collections) { + foreach ($collections as $collection) { + try { + $this->collections[] = $this->container->query($collection); + } catch (QueryException $e) { + if (class_exists($collection)) { + $this->collections[] = new $collection(); + } else { + throw new \Exception("Sabre collection class '$collection' is unknown and could not be loaded"); + } + } + } + } + +} diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 83ef06f29e1..2c34f6d6d31 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -32,6 +32,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder; use OCA\DAV\Connector\Sabre\Principal; use OCA\DAV\DAV\Sharing\Backend; use OCP\IDBConnection; +use OCP\IGroupManager; use OCP\IUser; use OCP\IUserManager; use OCP\Security\ISecureRandom; @@ -158,6 +159,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * @param IDBConnection $db * @param Principal $principalBackend * @param IUserManager $userManager + * @param IGroupManager $groupManager * @param ISecureRandom $random * @param EventDispatcherInterface $dispatcher * @param bool $legacyEndpoint @@ -165,13 +167,14 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription public function __construct(IDBConnection $db, Principal $principalBackend, IUserManager $userManager, + IGroupManager $groupManager, ISecureRandom $random, EventDispatcherInterface $dispatcher, $legacyEndpoint = false) { $this->db = $db; $this->principalBackend = $principalBackend; $this->userManager = $userManager; - $this->sharingBackend = new Backend($this->db, $principalBackend, 'calendar'); + $this->sharingBackend = new Backend($this->db, $this->userManager, $groupManager, $principalBackend, 'calendar'); $this->random = $random; $this->dispatcher = $dispatcher; $this->legacyEndpoint = $legacyEndpoint; diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 2e4acad6dfe..7c73a2cb941 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -33,6 +33,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder; use OCA\DAV\DAV\Sharing\Backend; use OCA\DAV\DAV\Sharing\IShareable; use OCP\IDBConnection; +use OCP\IGroupManager; use OCP\IUser; use OCP\IUserManager; use PDO; @@ -88,17 +89,19 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @param IDBConnection $db * @param Principal $principalBackend * @param IUserManager $userManager + * @param IGroupManager $groupManager * @param EventDispatcherInterface $dispatcher */ public function __construct(IDBConnection $db, Principal $principalBackend, IUserManager $userManager, + IGroupManager $groupManager, EventDispatcherInterface $dispatcher) { $this->db = $db; $this->principalBackend = $principalBackend; $this->userManager = $userManager; $this->dispatcher = $dispatcher; - $this->sharingBackend = new Backend($this->db, $principalBackend, 'addressbook'); + $this->sharingBackend = new Backend($this->db, $this->userManager, $groupManager, $principalBackend, 'addressbook'); } /** diff --git a/apps/dav/lib/Command/CreateCalendar.php b/apps/dav/lib/Command/CreateCalendar.php index 24990352fab..adc86faa190 100644 --- a/apps/dav/lib/Command/CreateCalendar.php +++ b/apps/dav/lib/Command/CreateCalendar.php @@ -79,7 +79,7 @@ class CreateCalendar extends Command { $dispatcher = \OC::$server->getEventDispatcher(); $name = $input->getArgument('name'); - $caldav = new CalDavBackend($this->dbConnection, $principalBackend, $this->userManager, $random, $dispatcher); + $caldav = new CalDavBackend($this->dbConnection, $principalBackend, $this->userManager, $this->groupManager, $random, $dispatcher); $caldav->createCalendar("principals/users/$user", $name, []); } } diff --git a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php index ca2195fc65a..ba7ea13c548 100644 --- a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php +++ b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php @@ -27,28 +27,34 @@ namespace OCA\DAV\Connector\Sabre; +use OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden; +use OCP\Files\StorageNotAvailableException; use OCP\ILogger; +use Sabre\DAV\Exception\Forbidden; +use Sabre\DAV\Exception\NotAuthenticated; +use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\Exception\PreconditionFailed; use Sabre\DAV\Exception\ServiceUnavailable; class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin { protected $nonFatalExceptions = [ - 'Sabre\DAV\Exception\NotAuthenticated' => true, + NotAuthenticated::class => true, // If tokenauth can throw this exception (which is basically as // NotAuthenticated. So not fatal. - 'OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden' => true, + PasswordLoginForbidden::class => true, // the sync client uses this to find out whether files exist, // so it is not always an error, log it as debug - 'Sabre\DAV\Exception\NotFound' => true, + NotFound::class => true, // this one mostly happens when the same file is uploaded at // exactly the same time from two clients, only one client // wins, the second one gets "Precondition failed" - 'Sabre\DAV\Exception\PreconditionFailed' => true, + PreconditionFailed::class => true, // forbidden can be expected when trying to upload to // read-only folders for example - 'Sabre\DAV\Exception\Forbidden' => true, + Forbidden::class => true, // Happens when an external storage or federated share is temporarily // not available - 'Sabre\DAV\Exception\StorageNotAvailableException' => true, + StorageNotAvailableException::class => true, ]; /** @var string */ diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php index 6cc5e3b6f50..aa4b137f2b0 100644 --- a/apps/dav/lib/DAV/Sharing/Backend.php +++ b/apps/dav/lib/DAV/Sharing/Backend.php @@ -26,11 +26,17 @@ namespace OCA\DAV\DAV\Sharing; use OCA\DAV\Connector\Sabre\Principal; use OCP\IDBConnection; +use OCP\IGroupManager; +use OCP\IUserManager; class Backend { /** @var IDBConnection */ private $db; + /** @var IUserManager */ + private $userManager; + /** @var IGroupManager */ + private $groupManager; /** @var Principal */ private $principalBackend; /** @var string */ @@ -42,11 +48,15 @@ class Backend { /** * @param IDBConnection $db + * @param IUserManager $userManager + * @param IGroupManager $groupManager * @param Principal $principalBackend * @param string $resourceType */ - public function __construct(IDBConnection $db, Principal $principalBackend, $resourceType) { + public function __construct(IDBConnection $db, IUserManager $userManager, IGroupManager $groupManager, Principal $principalBackend, $resourceType) { $this->db = $db; + $this->userManager = $userManager; + $this->groupManager = $groupManager; $this->principalBackend = $principalBackend; $this->resourceType = $resourceType; } @@ -81,6 +91,18 @@ class Backend { return; } + $principal = explode('/', $parts[1], 3); + if (count($principal) !== 3 || $principal[0] !== 'principals' || !in_array($principal[1], ['users', 'groups'], true)) { + // Invalid principal + return; + } + + if (($principal[1] === 'users' && !$this->userManager->userExists($principal[2])) || + ($principal[1] === 'groups' && !$this->groupManager->groupExists($principal[2]))) { + // User or group does not exist + return; + } + // remove the share if it already exists $this->unshare($shareable, $element['href']); $access = self::ACCESS_READ; diff --git a/apps/dav/lib/Migration/Version1004Date20170926103422.php b/apps/dav/lib/Migration/Version1004Date20170926103422.php new file mode 100644 index 00000000000..76adc8fe6a1 --- /dev/null +++ b/apps/dav/lib/Migration/Version1004Date20170926103422.php @@ -0,0 +1,35 @@ +<?php +namespace OCA\DAV\Migration; + +use Doctrine\DBAL\Schema\Schema; +use OCP\Migration\BigIntMigration; +use OCP\Migration\SimpleMigrationStep; +use OCP\Migration\IOutput; + +/** + * Auto-generated migration step: Please modify to your needs! + */ +class Version1004Date20170926103422 extends BigIntMigration { + + /** + * @return array Returns an array with the following structure + * ['table1' => ['column1', 'column2'], ...] + * @since 13.0.0 + */ + protected function getColumnsByTable() { + return [ + 'addressbooks' => ['id'], + 'addressbookchanges' => ['id', 'addressbookid'], + 'calendars' => ['id'], + 'calendarchanges' => ['id', 'calendarid'], + 'calendarobjects' => ['id', 'calendarid'], + 'calendarobjects_props' => ['id', 'calendarid', 'objectid'], + 'calendarsubscriptions' => ['id'], + 'cards' => ['id', 'addressbookid'], + 'cards_properties' => ['id', 'addressbookid', 'cardid'], + 'dav_shares' => ['id', 'resourceid'], + 'schedulingobjects' => ['id'], + ]; + } + +} diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php index a243ec6d00a..e4ba1f2c02a 100644 --- a/apps/dav/lib/RootCollection.php +++ b/apps/dav/lib/RootCollection.php @@ -41,15 +41,14 @@ class RootCollection extends SimpleCollection { $config = \OC::$server->getConfig(); $random = \OC::$server->getSecureRandom(); $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); $db = \OC::$server->getDatabaseConnection(); $dispatcher = \OC::$server->getEventDispatcher(); $userPrincipalBackend = new Principal( $userManager, - \OC::$server->getGroupManager() - ); - $groupPrincipalBackend = new GroupPrincipalBackend( - \OC::$server->getGroupManager() + $groupManager ); + $groupPrincipalBackend = new GroupPrincipalBackend($groupManager); // as soon as debug mode is enabled we allow listing of principals $disableListing = !$config->getSystemValue('debug', false); @@ -62,7 +61,7 @@ class RootCollection extends SimpleCollection { $systemPrincipals->disableListing = $disableListing; $filesCollection = new Files\RootCollection($userPrincipalBackend, 'principals/users'); $filesCollection->disableListing = $disableListing; - $caldavBackend = new CalDavBackend($db, $userPrincipalBackend, $userManager, $random, $dispatcher); + $caldavBackend = new CalDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $random, $dispatcher); $calendarRoot = new CalendarRoot($userPrincipalBackend, $caldavBackend, 'principals/users'); $calendarRoot->disableListing = $disableListing; $publicCalendarRoot = new PublicCalendarRoot($caldavBackend); @@ -71,28 +70,28 @@ class RootCollection extends SimpleCollection { $systemTagCollection = new SystemTag\SystemTagsByIdCollection( \OC::$server->getSystemTagManager(), \OC::$server->getUserSession(), - \OC::$server->getGroupManager() + $groupManager ); $systemTagRelationsCollection = new SystemTag\SystemTagsRelationsCollection( \OC::$server->getSystemTagManager(), \OC::$server->getSystemTagObjectMapper(), \OC::$server->getUserSession(), - \OC::$server->getGroupManager(), + $groupManager, \OC::$server->getEventDispatcher() ); $commentsCollection = new Comments\RootCollection( \OC::$server->getCommentsManager(), - \OC::$server->getUserManager(), + $userManager, \OC::$server->getUserSession(), \OC::$server->getEventDispatcher(), \OC::$server->getLogger() ); - $usersCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, \OC::$server->getUserManager(), $dispatcher); + $usersCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher); $usersAddressBookRoot = new AddressBookRoot($userPrincipalBackend, $usersCardDavBackend, 'principals/users'); $usersAddressBookRoot->disableListing = $disableListing; - $systemCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, \OC::$server->getUserManager(), $dispatcher); + $systemCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher); $systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, 'principals/system'); $systemAddressBookRoot->disableListing = $disableListing; diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 6f3ab3971ef..162833951a3 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -55,8 +55,8 @@ use OCP\SabrePluginEvent; use Sabre\CardDAV\VCFExportPlugin; use Sabre\DAV\Auth\Plugin; use OCA\DAV\Connector\Sabre\TagsPlugin; -use Sabre\HTTP\Auth\Bearer; use SearchDAV\DAV\SearchPlugin; +use OCA\DAV\AppInfo\PluginManager; class Server { @@ -184,7 +184,7 @@ class Server { } // wait with registering these until auth is handled and the filesystem is setup - $this->server->on('beforeMethod', function () { + $this->server->on('beforeMethod', function () use ($root) { // custom properties plugin must be the last one $userSession = \OC::$server->getUserSession(); $user = $userSession->getUser(); @@ -252,6 +252,18 @@ class Server { ))); } } + + // register plugins from apps + $pluginManager = new PluginManager( + \OC::$server, + \OC::$server->getAppManager() + ); + foreach ($pluginManager->getAppPlugins() as $appPlugin) { + $this->server->addPlugin($appPlugin); + } + foreach ($pluginManager->getAppCollections() as $appCollection) { + $root->addChild($appCollection); + } }); } diff --git a/apps/dav/tests/unit/AppInfo/PluginManagerTest.php b/apps/dav/tests/unit/AppInfo/PluginManagerTest.php new file mode 100644 index 00000000000..5776b939123 --- /dev/null +++ b/apps/dav/tests/unit/AppInfo/PluginManagerTest.php @@ -0,0 +1,104 @@ +<?php +/** + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud GmbH. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\unit\AppInfo; + +use Test\TestCase; +use OCP\App\IAppManager; +use OC\ServerContainer; +use OCA\DAV\AppInfo\PluginManager; + +/** + * Class PluginManagerTest + * + * @package OCA\DAV\Tests\Unit\AppInfo + */ +class PluginManagerTest extends TestCase { + public function test() { + $server = $this->createMock(ServerContainer::class); + + + $appManager = $this->createMock(IAppManager::class); + $appManager->method('getInstalledApps') + ->willReturn(['adavapp', 'adavapp2']); + + $appInfo1 = [ + 'types' => ['dav'], + 'sabre' => [ + 'plugins' => [ + 'plugin' => [ + '\OCA\DAV\ADavApp\PluginOne', + '\OCA\DAV\ADavApp\PluginTwo', + ], + ], + 'collections' => [ + 'collection' => [ + '\OCA\DAV\ADavApp\CollectionOne', + '\OCA\DAV\ADavApp\CollectionTwo', + ] + ], + ], + ]; + $appInfo2 = [ + 'types' => ['logging', 'dav'], + 'sabre' => [ + 'plugins' => [ + 'plugin' => '\OCA\DAV\ADavApp2\PluginOne', + ], + 'collections' => [ + 'collection' => '\OCA\DAV\ADavApp2\CollectionOne', + ], + ], + ]; + + $appManager->method('getAppInfo') + ->will($this->returnValueMap([ + ['adavapp', $appInfo1], + ['adavapp2', $appInfo2], + ])); + + $pluginManager = new PluginManager($server, $appManager); + + $server->method('query') + ->will($this->returnValueMap([ + ['\OCA\DAV\ADavApp\PluginOne', 'dummyplugin1'], + ['\OCA\DAV\ADavApp\PluginTwo', 'dummyplugin2'], + ['\OCA\DAV\ADavApp\CollectionOne', 'dummycollection1'], + ['\OCA\DAV\ADavApp\CollectionTwo', 'dummycollection2'], + ['\OCA\DAV\ADavApp2\PluginOne', 'dummy2plugin1'], + ['\OCA\DAV\ADavApp2\CollectionOne', 'dummy2collection1'], + ])); + + $expectedPlugins = [ + 'dummyplugin1', + 'dummyplugin2', + 'dummy2plugin1', + ]; + $expectedCollections = [ + 'dummycollection1', + 'dummycollection2', + 'dummy2collection1', + ]; + + $this->assertEquals($expectedPlugins, $pluginManager->getAppPlugins()); + $this->assertEquals($expectedCollections, $pluginManager->getAppCollections()); + } +} diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php index a7bf4432c64..3f3b744e5ab 100644 --- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php @@ -24,6 +24,7 @@ namespace OCA\DAV\Tests\unit\CalDAV; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\Connector\Sabre\Principal; +use OCP\IGroupManager; use OCP\IUserManager; use OCP\Security\ISecureRandom; use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet; @@ -37,7 +38,7 @@ use Test\TestCase; * * @package OCA\DAV\Tests\unit\CalDAV */ -abstract class AbstractCalDavBackendTest extends TestCase { +abstract class AbstractCalDavBackend extends TestCase { /** @var CalDavBackend */ protected $backend; @@ -46,6 +47,8 @@ abstract class AbstractCalDavBackendTest extends TestCase { protected $principal; /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ protected $userManager; + /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $groupManager; /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */ protected $dispatcher; @@ -61,6 +64,7 @@ abstract class AbstractCalDavBackendTest extends TestCase { parent::setUp(); $this->userManager = $this->createMock(IUserManager::class); + $this->groupManager = $this->createMock(IGroupManager::class); $this->dispatcher = $this->createMock(EventDispatcherInterface::class); $this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') ->disableOriginalConstructor() @@ -77,7 +81,7 @@ abstract class AbstractCalDavBackendTest extends TestCase { $db = \OC::$server->getDatabaseConnection(); $this->random = \OC::$server->getSecureRandom(); - $this->backend = new CalDavBackend($db, $this->principal, $this->userManager, $this->random, $this->dispatcher); + $this->backend = new CalDavBackend($db, $this->principal, $this->userManager, $this->groupManager, $this->random, $this->dispatcher); $this->cleanUpBackend(); } diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index fa298282d7e..50c8b39484e 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -42,7 +42,7 @@ use Sabre\DAVACL\IACL; * * @package OCA\DAV\Tests\unit\CalDAV */ -class CalDavBackendTest extends AbstractCalDavBackendTest { +class CalDavBackendTest extends AbstractCalDavBackend { public function testCalendarOperations() { @@ -130,6 +130,14 @@ class CalDavBackendTest extends AbstractCalDavBackendTest { return vsprintf($text, $parameters); })); + $this->userManager->expects($this->any()) + ->method('userExists') + ->willReturn(true); + + $this->groupManager->expects($this->any()) + ->method('groupExists') + ->willReturn(true); + $calendarId = $this->createTestCalendar(); $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); $this->assertCount(1, $calendars); diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php index eb9f9cd10d7..ec767f3dbd8 100644 --- a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php +++ b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php @@ -5,6 +5,7 @@ namespace OCA\DAV\Tests\unit\CalDAV; use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\PublicCalendar; use OCA\DAV\Connector\Sabre\Principal; +use OCP\IGroupManager; use OCP\IL10N; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\PublicCalendarRoot; @@ -33,6 +34,8 @@ class PublicCalendarRootTest extends TestCase { private $principal; /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ protected $userManager; + /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $groupManager; /** @var ISecureRandom */ private $random; @@ -43,6 +46,7 @@ class PublicCalendarRootTest extends TestCase { $db = \OC::$server->getDatabaseConnection(); $this->principal = $this->createMock('OCA\DAV\Connector\Sabre\Principal'); $this->userManager = $this->createMock(IUserManager::class); + $this->groupManager = $this->createMock(IGroupManager::class); $this->random = \OC::$server->getSecureRandom(); $dispatcher = $this->createMock(EventDispatcherInterface::class); @@ -54,6 +58,7 @@ class PublicCalendarRootTest extends TestCase { $db, $this->principal, $this->userManager, + $this->groupManager, $this->random, $dispatcher ); diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php index 8ca7e8a33b1..992445392d5 100644 --- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php +++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php @@ -33,6 +33,7 @@ use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\Connector\Sabre\Principal; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; +use OCP\IGroupManager; use OCP\IL10N; use OCP\IUserManager; use Sabre\DAV\PropPatch; @@ -60,6 +61,9 @@ class CardDavBackendTest extends TestCase { /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ private $userManager; + /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + private $groupManager; + /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */ private $dispatcher; @@ -80,6 +84,7 @@ class CardDavBackendTest extends TestCase { parent::setUp(); $this->userManager = $this->createMock(IUserManager::class); + $this->groupManager = $this->createMock(IGroupManager::class); $this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') ->disableOriginalConstructor() ->setMethods(['getPrincipalByPath', 'getGroupMembership']) @@ -96,7 +101,7 @@ class CardDavBackendTest extends TestCase { $this->db = \OC::$server->getDatabaseConnection(); - $this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, $this->dispatcher); + $this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher); // start every test with a empty cards_properties and cards table $query = $this->db->getQueryBuilder(); $query->delete('cards_properties')->execute(); @@ -154,6 +159,14 @@ class CardDavBackendTest extends TestCase { public function testAddressBookSharing() { + $this->userManager->expects($this->any()) + ->method('userExists') + ->willReturn(true); + + $this->groupManager->expects($this->any()) + ->method('groupExists') + ->willReturn(true); + $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); $this->assertEquals(1, count($books)); @@ -180,7 +193,7 @@ class CardDavBackendTest extends TestCase { /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backend */ $backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher]) ->setMethods(['updateProperties', 'purgeProperties'])->getMock(); // create a new address book @@ -253,7 +266,7 @@ class CardDavBackendTest extends TestCase { public function testMultiCard() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher]) ->setMethods(['updateProperties'])->getMock(); // create a new address book @@ -299,7 +312,7 @@ class CardDavBackendTest extends TestCase { public function testDeleteWithoutCard() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher]) ->setMethods([ 'getCardId', 'addChange', @@ -339,7 +352,7 @@ class CardDavBackendTest extends TestCase { public function testSyncSupport() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher]) ->setMethods(['updateProperties'])->getMock(); // create a new address book @@ -362,32 +375,41 @@ class CardDavBackendTest extends TestCase { } public function testSharing() { + + $this->userManager->expects($this->any()) + ->method('userExists') + ->willReturn(true); + + $this->groupManager->expects($this->any()) + ->method('groupExists') + ->willReturn(true); + $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); $this->assertEquals(1, count($books)); $l = $this->createMock(IL10N::class); $exampleBook = new AddressBook($this->backend, $books[0], $l); - $this->backend->updateShares($exampleBook, [['href' => 'principal:principals/best-friend']], []); + $this->backend->updateShares($exampleBook, [['href' => 'principal:' . self::UNIT_TEST_USER1]], []); $shares = $this->backend->getShares($exampleBook->getResourceId()); $this->assertEquals(1, count($shares)); // adding the same sharee again has no effect - $this->backend->updateShares($exampleBook, [['href' => 'principal:principals/best-friend']], []); + $this->backend->updateShares($exampleBook, [['href' => 'principal:' . self::UNIT_TEST_USER1]], []); $shares = $this->backend->getShares($exampleBook->getResourceId()); $this->assertEquals(1, count($shares)); - $books = $this->backend->getAddressBooksForUser('principals/best-friend'); + $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER1); $this->assertEquals(1, count($books)); - $this->backend->updateShares($exampleBook, [], ['principal:principals/best-friend']); + $this->backend->updateShares($exampleBook, [], ['principal:' . self::UNIT_TEST_USER1]); $shares = $this->backend->getShares($exampleBook->getResourceId()); $this->assertEquals(0, count($shares)); - $books = $this->backend->getAddressBooksForUser('principals/best-friend'); + $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER1); $this->assertEquals(0, count($books)); } @@ -398,7 +420,7 @@ class CardDavBackendTest extends TestCase { $cardId = 2; $backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher]) ->setMethods(['getCardId'])->getMock(); $backend->expects($this->any())->method('getCardId')->willReturn($cardId); diff --git a/apps/dav/tests/unit/ServerTest.php b/apps/dav/tests/unit/ServerTest.php index 19e75c7b24e..1b430b0f198 100644 --- a/apps/dav/tests/unit/ServerTest.php +++ b/apps/dav/tests/unit/ServerTest.php @@ -26,6 +26,7 @@ namespace OCA\DAV\Tests\unit; use OCA\DAV\Server; use OCP\IRequest; +use OCA\DAV\AppInfo\PluginManager; /** * Class ServerTest @@ -38,8 +39,7 @@ class ServerTest extends \Test\TestCase { public function test() { /** @var IRequest $r */ - $r = $this->getMockBuilder('\OCP\IRequest') - ->disableOriginalConstructor()->getMock(); + $r = $this->createMock(IRequest::class); $s = new Server($r, '/'); $this->assertInstanceOf('OCA\DAV\Server', $s); } diff --git a/apps/encryption/l10n/ca.js b/apps/encryption/l10n/ca.js index b9ca7f97565..208b2aebb11 100644 --- a/apps/encryption/l10n/ca.js +++ b/apps/encryption/l10n/ca.js @@ -1,23 +1,53 @@ OC.L10N.register( "encryption", { + "Missing recovery key password" : "Falta la clau de recuperació de contrasenya", + "Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya", + "Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada", "Recovery key successfully enabled" : "La clau de recuperació s'ha activat", "Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!", "Recovery key successfully disabled" : "La clau de recuperació s'ha descativat", "Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!", + "Missing parameters" : "Falten paràmetres", + "Please provide the old recovery password" : "Proporcioneu la contrasenya de recuperació antiga", "Please provide a new recovery password" : "Siusplau proporcioneu una nova contrasenya de recuperació", "Please repeat the new recovery password" : "Repetiu la nova contrasenya de recuperació", "Password successfully changed." : "La contrasenya s'ha canviat.", "Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.", + "Recovery Key disabled" : "Clau de recuperació desactivada", + "Recovery Key enabled" : "Clau de recuperació activada", + "Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador", + "Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.", + "The old password was not correct, please try again." : "La contrasenya antiga no es correcta, Si us plau, Intenteu-ho de nou.", + "The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, torneu-ho a provar.", "Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada de l'aplicació d'encriptació no és vàlida! Actualitzeu la contrasenya de la clau privada a l'arranjament personal per recuperar els fitxers encriptats.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necessiteu migrar les claus de xifratge des del xifratge antic (ownCloud <= 8.0) al nou. Si us plau, executeu 'encryption d'occ: migrate' o poseu-vos en contacte amb l'administrador", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no vàlida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Activeu el xifratge del servidor en la configuració de l'administrador per poder utilitzar el mòdul de xifratge.", + "Encryption app is enabled and ready" : "L'aplicació de xifrat està habilitada i preparada", + "Bad Signature" : "Signatura incorrecta", + "Missing Signature" : "Falta Signatura", + "one-time password for server-side-encryption" : "contrasenya única per al xifrat del costat del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.", "The share will expire on %s." : "La compartició venç el %s.", "Cheers!" : "Salut!", + "Default encryption module" : "Mòdul de xifrat per defecte", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.", + "Encrypt the home storage" : "Xifra l'emmagatzematge de casa", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció xifra tots els fitxers emmagatzemats a l'emmagatzematge principal, en cas contrari, només es codificaran els fitxers en emmagatzematge extern", + "Enable recovery key" : "Activa la clau de recuperació", + "Disable recovery key" : "Desactiva la clau de recuperació", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifrat addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari s'oblida de la seva contrasenya.", "Recovery key password" : "Clau de recuperació de la contrasenya", + "Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació", "Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:", + "Old recovery key password" : "Contrasenya antiga de clau de recuperació", + "New recovery key password" : "Nova contrasenya de clau de recuperació", + "Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova", "Change Password" : "Canvia la contrasenya", + "Basic encryption module" : "Mòdul bàsic de xifratge", "Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:", "Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:", " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.", @@ -27,6 +57,7 @@ OC.L10N.register( "Enable password recovery:" : "Habilita la recuperació de contrasenya:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya", "Enabled" : "Activat", - "Disabled" : "Desactivat" + "Disabled" : "Desactivat", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/ca.json b/apps/encryption/l10n/ca.json index cedebee12c0..1b02eea2feb 100644 --- a/apps/encryption/l10n/ca.json +++ b/apps/encryption/l10n/ca.json @@ -1,21 +1,51 @@ { "translations": { + "Missing recovery key password" : "Falta la clau de recuperació de contrasenya", + "Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya", + "Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada", "Recovery key successfully enabled" : "La clau de recuperació s'ha activat", "Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!", "Recovery key successfully disabled" : "La clau de recuperació s'ha descativat", "Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!", + "Missing parameters" : "Falten paràmetres", + "Please provide the old recovery password" : "Proporcioneu la contrasenya de recuperació antiga", "Please provide a new recovery password" : "Siusplau proporcioneu una nova contrasenya de recuperació", "Please repeat the new recovery password" : "Repetiu la nova contrasenya de recuperació", "Password successfully changed." : "La contrasenya s'ha canviat.", "Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.", + "Recovery Key disabled" : "Clau de recuperació desactivada", + "Recovery Key enabled" : "Clau de recuperació activada", + "Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador", + "Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.", + "The old password was not correct, please try again." : "La contrasenya antiga no es correcta, Si us plau, Intenteu-ho de nou.", + "The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, torneu-ho a provar.", "Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada de l'aplicació d'encriptació no és vàlida! Actualitzeu la contrasenya de la clau privada a l'arranjament personal per recuperar els fitxers encriptats.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necessiteu migrar les claus de xifratge des del xifratge antic (ownCloud <= 8.0) al nou. Si us plau, executeu 'encryption d'occ: migrate' o poseu-vos en contacte amb l'administrador", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no vàlida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Activeu el xifratge del servidor en la configuració de l'administrador per poder utilitzar el mòdul de xifratge.", + "Encryption app is enabled and ready" : "L'aplicació de xifrat està habilitada i preparada", + "Bad Signature" : "Signatura incorrecta", + "Missing Signature" : "Falta Signatura", + "one-time password for server-side-encryption" : "contrasenya única per al xifrat del costat del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.", "The share will expire on %s." : "La compartició venç el %s.", "Cheers!" : "Salut!", + "Default encryption module" : "Mòdul de xifrat per defecte", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.", + "Encrypt the home storage" : "Xifra l'emmagatzematge de casa", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció xifra tots els fitxers emmagatzemats a l'emmagatzematge principal, en cas contrari, només es codificaran els fitxers en emmagatzematge extern", + "Enable recovery key" : "Activa la clau de recuperació", + "Disable recovery key" : "Desactiva la clau de recuperació", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifrat addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari s'oblida de la seva contrasenya.", "Recovery key password" : "Clau de recuperació de la contrasenya", + "Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació", "Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:", + "Old recovery key password" : "Contrasenya antiga de clau de recuperació", + "New recovery key password" : "Nova contrasenya de clau de recuperació", + "Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova", "Change Password" : "Canvia la contrasenya", + "Basic encryption module" : "Mòdul bàsic de xifratge", "Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:", "Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:", " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.", @@ -25,6 +55,7 @@ "Enable password recovery:" : "Habilita la recuperació de contrasenya:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya", "Enabled" : "Activat", - "Disabled" : "Desactivat" + "Disabled" : "Desactivat", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/sr.js b/apps/encryption/l10n/sr.js index d875adebf2d..f41cc4ffeb6 100644 --- a/apps/encryption/l10n/sr.js +++ b/apps/encryption/l10n/sr.js @@ -17,15 +17,28 @@ OC.L10N.register( "Recovery Key disabled" : "Кључ за опоравак искључен", "Recovery Key enabled" : "Кључ за опоравак укључен", "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ за опоравак. Покушајте поново или контактирајте администратора", - "Could not update the private key password." : "Не могу да ажирирам лозинку личног кључа.", + "Could not update the private key password." : "Не могу да ажурирам лозинку тајног кључа.", "The old password was not correct, please try again." : "Стара лозинка није исправна. Покушајте поново.", "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.", "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) у нови. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са вама.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са вама.", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан тајни кључ за апликацију шифровања. Ажурирајте Ваш тајни кључ у личним подешавањима да вратите назад приступ шифрованим фајловима.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Апликација за шифровање је укључена, али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Укључите шифровање на страни сервера и администраторским подешавањима да бисте користили модул за шифровање.", + "Encryption app is enabled and ready" : "Апликација за шифровање је укључена и спремна", + "Bad Signature" : "Лош потпис", + "Missing Signature" : "Недостаје потпис", + "one-time password for server-side-encryption" : "једнокрана лозинка за шифровање на серверској страни", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са Вама.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са Вама.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Поштовање,\n\nадминистратор је укључио шифровање на серверској страни. Ваши фајлови су шифровани лозинком '%s'.\n\nУлогујте се на веб сучеље, идите на одељак 'основни модул за шифровање' у личним подешавањима и ажурирајте Вашу лозинку за шифровање тако што унесете ову лозинку у поље 'стара лозинка за пријаву' и Вашу тренутно лозинку за пријављивање.\n", "The share will expire on %s." : "Дељење истиче %s.", - "Cheers!" : "Здраво!", + "Cheers!" : "Поздрав!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Поштовање,<br><br>администратор је укључио шифровање на серверској страни. Ваши фајлови су шифровани лозинком <strong>%s</strong>.<br><br>Улогујте се на веб сучеље, идите на одељак 'основни модул за шифровање' у личним подешавањима и ажурирајте Вашу лозинку за шифровање тако што унесете ову лозинку у поље 'стара лозинка за пријаву' и Вашу тренутно лозинку за пријављивање.<br><br>", + "Default encryption module" : "Подразумевани модул за шифровање", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација за шифровање је укључена, али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", + "Encrypt the home storage" : "Шифрујте Ваше главно складиште", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Укључивањем ове опције ћете шифровати све фајлове на главном складишту, а у супротном ће само фајловим на спољашњем складишту бити шифровани", "Enable recovery key" : "Омогући кључ за опоравак", "Disable recovery key" : "Онемогући кључ за опоравак", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Кључ за опоравак је додатни шифрарски кључ који се користи за шифровање фајлова. Он омогућава опоравак корисничких фајлова ако корисник заборави своју лозинку.", @@ -36,6 +49,7 @@ OC.L10N.register( "New recovery key password" : "Нова лозинка кључа за опоравак", "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак", "Change Password" : "Измени лозинку", + "Basic encryption module" : "Основни модул за шифровање", "Your private key password no longer matches your log-in password." : "Лозинка вашег личног кључа више није иста као ваша лозинка за пријаву.", "Set your old private key password to your current log-in password:" : "Поставите стару лозинку личног кључа као тренутну лозинку за пријаву:", " If you don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.", @@ -44,8 +58,8 @@ OC.L10N.register( "Update Private Key Password" : "Ажурирај лозинку личног кључа", "Enable password recovery:" : "Укључи опоравак лозинке:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке", - "Enabled" : "укључено", - "Disabled" : "искључено", + "Enabled" : "Укључено", + "Disabled" : "Искључено", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/encryption/l10n/sr.json b/apps/encryption/l10n/sr.json index 69a73d1a6c2..316dd670947 100644 --- a/apps/encryption/l10n/sr.json +++ b/apps/encryption/l10n/sr.json @@ -15,15 +15,28 @@ "Recovery Key disabled" : "Кључ за опоравак искључен", "Recovery Key enabled" : "Кључ за опоравак укључен", "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ за опоравак. Покушајте поново или контактирајте администратора", - "Could not update the private key password." : "Не могу да ажирирам лозинку личног кључа.", + "Could not update the private key password." : "Не могу да ажурирам лозинку тајног кључа.", "The old password was not correct, please try again." : "Стара лозинка није исправна. Покушајте поново.", "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.", "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) у нови. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са вама.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са вама.", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан тајни кључ за апликацију шифровања. Ажурирајте Ваш тајни кључ у личним подешавањима да вратите назад приступ шифрованим фајловима.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Апликација за шифровање је укључена, али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Укључите шифровање на страни сервера и администраторским подешавањима да бисте користили модул за шифровање.", + "Encryption app is enabled and ready" : "Апликација за шифровање је укључена и спремна", + "Bad Signature" : "Лош потпис", + "Missing Signature" : "Недостаје потпис", + "one-time password for server-side-encryption" : "једнокрана лозинка за шифровање на серверској страни", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са Вама.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са Вама.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Поштовање,\n\nадминистратор је укључио шифровање на серверској страни. Ваши фајлови су шифровани лозинком '%s'.\n\nУлогујте се на веб сучеље, идите на одељак 'основни модул за шифровање' у личним подешавањима и ажурирајте Вашу лозинку за шифровање тако што унесете ову лозинку у поље 'стара лозинка за пријаву' и Вашу тренутно лозинку за пријављивање.\n", "The share will expire on %s." : "Дељење истиче %s.", - "Cheers!" : "Здраво!", + "Cheers!" : "Поздрав!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Поштовање,<br><br>администратор је укључио шифровање на серверској страни. Ваши фајлови су шифровани лозинком <strong>%s</strong>.<br><br>Улогујте се на веб сучеље, идите на одељак 'основни модул за шифровање' у личним подешавањима и ажурирајте Вашу лозинку за шифровање тако што унесете ову лозинку у поље 'стара лозинка за пријаву' и Вашу тренутно лозинку за пријављивање.<br><br>", + "Default encryption module" : "Подразумевани модул за шифровање", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација за шифровање је укључена, али кључеви још нису иницијализовани. Одјавите се и поново се пријавите.", + "Encrypt the home storage" : "Шифрујте Ваше главно складиште", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Укључивањем ове опције ћете шифровати све фајлове на главном складишту, а у супротном ће само фајловим на спољашњем складишту бити шифровани", "Enable recovery key" : "Омогући кључ за опоравак", "Disable recovery key" : "Онемогући кључ за опоравак", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Кључ за опоравак је додатни шифрарски кључ који се користи за шифровање фајлова. Он омогућава опоравак корисничких фајлова ако корисник заборави своју лозинку.", @@ -34,6 +47,7 @@ "New recovery key password" : "Нова лозинка кључа за опоравак", "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак", "Change Password" : "Измени лозинку", + "Basic encryption module" : "Основни модул за шифровање", "Your private key password no longer matches your log-in password." : "Лозинка вашег личног кључа више није иста као ваша лозинка за пријаву.", "Set your old private key password to your current log-in password:" : "Поставите стару лозинку личног кључа као тренутну лозинку за пријаву:", " If you don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.", @@ -42,8 +56,8 @@ "Update Private Key Password" : "Ажурирај лозинку личног кључа", "Enable password recovery:" : "Укључи опоравак лозинке:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке", - "Enabled" : "укључено", - "Disabled" : "искључено", + "Enabled" : "Укључено", + "Disabled" : "Искључено", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ca.js b/apps/federatedfilesharing/l10n/ca.js index 1ebf46ddf77..6f17c20b08e 100644 --- a/apps/federatedfilesharing/l10n/ca.js +++ b/apps/federatedfilesharing/l10n/ca.js @@ -2,23 +2,57 @@ OC.L10N.register( "federatedfilesharing", { "Federated sharing" : "Compartició federada", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voleu afegir la compartició remota {nom} des de {owner}@{remote}?", + "Remote share" : "Compartició remota", + "Remote share password" : "Contrasenya de compartició remota", + "Cancel" : "Cancel·la", + "Add remote share" : "Afegeix compartició remota", + "Copy" : "Copia", + "Copied!" : "Copiat!", + "Not supported!" : "No soportat!", + "Press ⌘-C to copy." : "Prem ⌘-C per copiar.", + "Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.", "Invalid Federated Cloud ID" : "ID de núvol federat invàlid", + "Server to server sharing is not enabled on this server" : "La compartició entre servidors no està activada en aquest servidor", + "Couldn't establish a federated share." : "No s'ha pogut establir una part federada.", + "Couldn't establish a federated share, maybe the password was wrong." : "No s'ha pogut establir una acció compartida federada, potser la contrasenya ha estat incorrecta.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "S'ha enviat la sol·licitud de participació federada, rebràs una invitació. Comproveu les vostres notificacions.", + "The mountpoint name contains invalid characters." : "El nom del punt de muntatge conté caràcters no vàlids.", + "Not allowed to create a federated share with the owner." : "No es permet crear una compartida federada amb el propietari.", + "Invalid or untrusted SSL certificate" : "El certificat SSL és invàlid o no és fiable", + "Could not authenticate to remote share, password might be wrong" : "No s'ha pogut autenticar per compartir de manera remota, la contrasenya podria estar equivocada", + "Storage not valid" : "Emmagatzemament no vàlid", + "Federated share added" : "S'ha afegit una part federada", + "Couldn't add remote share" : "No s'ha pogut afegir una compartició remota", "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s", "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari", "File is already shared with %s" : "El fitxer ja està compartit amb %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.", - "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", - "You received \"/%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "S'ha produït un error en compartir%s, no s'ha pogut trobar%s, potser el servidor no estigui disponible o s'utilitzi un certificat autofirmat.", + "Could not find share" : "No s'ha pogut trobar la compartició", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Has rebut {share} com un recompte remot de {user} (en nom de {nom})", + "You received \"%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "You received {share} as a remote share from {user}" : "Has rebut {share} com a recompte remot de {user}", "Accept" : "Acceptar", "Decline" : "Denegar", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartiu amb mi a través de la meva #Nextcloud Federated Cloud Id, vegeu%s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartiu amb mi a través de la meva #Nextcloud Federated Cloud ID", + "Sharing" : "Compartir", "Federated Cloud Sharing" : "Compartició federada de núvol", "Open documentation" : "Obre la documentació", + "Adjust how people can share between servers." : "Ajusteu com les persones poden compartir entre servidors.", "Allow users on this server to send shares to other servers" : "Permet als usuaris d'aquest servidor enviar comparticions a d'altres servidors", "Allow users on this server to receive shares from other servers" : "Permet als usuaris d'aquest servidor rebre comparticions a d'altres servidors", + "Search global and public address book for users" : "Cerca llibreta d'adreces global i pública per als usuaris", + "Allow users to publish their data to a global and public address book" : "Permetre als usuaris publicar les seves dades en una llibreta d'adreces global i pública", "Federated Cloud" : "Núvol federat", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Podeu compartir amb qualsevol persona que usi Nextcloud, ownCloud vs Pydio! Acaba de posar el seu identificador de núvol federat al diàleg d'accions. Sembla person@cloud.example.com", "Your Federated Cloud ID:" : "El teu ID de Núvol Federat:", - "Share it:" : "Comparteix-lo:", + "Share it so your friends can share files with you:" : "Compartiu-lo perquè els vostres amics puguin compartir fitxers amb vosaltres:", "Add to your website" : "Afegeix a la teva pàgina web", - "HTML Code:" : "Codi HTML:" + "Share with me via Nextcloud" : "Comparteix amb mi a través de Nextcloud", + "HTML Code:" : "Codi HTML:", + "Search global and public address book for users and let local users publish their data" : "Busqueu llibreta d'adreces global i pública per als usuaris i deixeu que els usuaris locals publiquin les seves dades", + "Share it:" : "Comparteix-lo:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/ca.json b/apps/federatedfilesharing/l10n/ca.json index e95724117f9..61f816eb2da 100644 --- a/apps/federatedfilesharing/l10n/ca.json +++ b/apps/federatedfilesharing/l10n/ca.json @@ -1,22 +1,56 @@ { "translations": { "Federated sharing" : "Compartició federada", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voleu afegir la compartició remota {nom} des de {owner}@{remote}?", + "Remote share" : "Compartició remota", + "Remote share password" : "Contrasenya de compartició remota", + "Cancel" : "Cancel·la", + "Add remote share" : "Afegeix compartició remota", + "Copy" : "Copia", + "Copied!" : "Copiat!", + "Not supported!" : "No soportat!", + "Press ⌘-C to copy." : "Prem ⌘-C per copiar.", + "Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.", "Invalid Federated Cloud ID" : "ID de núvol federat invàlid", + "Server to server sharing is not enabled on this server" : "La compartició entre servidors no està activada en aquest servidor", + "Couldn't establish a federated share." : "No s'ha pogut establir una part federada.", + "Couldn't establish a federated share, maybe the password was wrong." : "No s'ha pogut establir una acció compartida federada, potser la contrasenya ha estat incorrecta.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "S'ha enviat la sol·licitud de participació federada, rebràs una invitació. Comproveu les vostres notificacions.", + "The mountpoint name contains invalid characters." : "El nom del punt de muntatge conté caràcters no vàlids.", + "Not allowed to create a federated share with the owner." : "No es permet crear una compartida federada amb el propietari.", + "Invalid or untrusted SSL certificate" : "El certificat SSL és invàlid o no és fiable", + "Could not authenticate to remote share, password might be wrong" : "No s'ha pogut autenticar per compartir de manera remota, la contrasenya podria estar equivocada", + "Storage not valid" : "Emmagatzemament no vàlid", + "Federated share added" : "S'ha afegit una part federada", + "Couldn't add remote share" : "No s'ha pogut afegir una compartició remota", "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s", "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari", "File is already shared with %s" : "El fitxer ja està compartit amb %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.", - "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", - "You received \"/%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "S'ha produït un error en compartir%s, no s'ha pogut trobar%s, potser el servidor no estigui disponible o s'utilitzi un certificat autofirmat.", + "Could not find share" : "No s'ha pogut trobar la compartició", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Has rebut {share} com un recompte remot de {user} (en nom de {nom})", + "You received \"%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "You received {share} as a remote share from {user}" : "Has rebut {share} com a recompte remot de {user}", "Accept" : "Acceptar", "Decline" : "Denegar", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartiu amb mi a través de la meva #Nextcloud Federated Cloud Id, vegeu%s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartiu amb mi a través de la meva #Nextcloud Federated Cloud ID", + "Sharing" : "Compartir", "Federated Cloud Sharing" : "Compartició federada de núvol", "Open documentation" : "Obre la documentació", + "Adjust how people can share between servers." : "Ajusteu com les persones poden compartir entre servidors.", "Allow users on this server to send shares to other servers" : "Permet als usuaris d'aquest servidor enviar comparticions a d'altres servidors", "Allow users on this server to receive shares from other servers" : "Permet als usuaris d'aquest servidor rebre comparticions a d'altres servidors", + "Search global and public address book for users" : "Cerca llibreta d'adreces global i pública per als usuaris", + "Allow users to publish their data to a global and public address book" : "Permetre als usuaris publicar les seves dades en una llibreta d'adreces global i pública", "Federated Cloud" : "Núvol federat", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Podeu compartir amb qualsevol persona que usi Nextcloud, ownCloud vs Pydio! Acaba de posar el seu identificador de núvol federat al diàleg d'accions. Sembla person@cloud.example.com", "Your Federated Cloud ID:" : "El teu ID de Núvol Federat:", - "Share it:" : "Comparteix-lo:", + "Share it so your friends can share files with you:" : "Compartiu-lo perquè els vostres amics puguin compartir fitxers amb vosaltres:", "Add to your website" : "Afegeix a la teva pàgina web", - "HTML Code:" : "Codi HTML:" + "Share with me via Nextcloud" : "Comparteix amb mi a través de Nextcloud", + "HTML Code:" : "Codi HTML:", + "Search global and public address book for users and let local users publish their data" : "Busqueu llibreta d'adreces global i pública per als usuaris i deixeu que els usuaris locals publiquin les seves dades", + "Share it:" : "Comparteix-lo:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js index 24931800c9b..16443874c29 100644 --- a/apps/federatedfilesharing/l10n/ru.js +++ b/apps/federatedfilesharing/l10n/ru.js @@ -27,12 +27,12 @@ OC.L10N.register( "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться «%s», пользователю%s уже предоставлен доступ к этому элементу", "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем", "File is already shared with %s" : "Доступ к файлу уже предоставлен %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться «%s», не удалось найти %s, возможно, сервер не доступен или использует само-подписанный сертификат.", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться «%s», не удалось найти %s, возможно, сервер недоступен или использует самоподписанный сертификат.", "Could not find share" : "Не удалось найти общий ресурс", "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили «%3$s» в качестве удалённого ресурса из %1$s (от имени %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Вы получили «{share}» в качестве удалённого ресурса от {user} (от имени {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Вы получили «%3$s» в качестве удалённого ресурса из %1$s", - "You received {share} as a remote share from {user}" : "Вы получили «{share}» в качестве удалённого ресурса от {user}", + "You received {share} as a remote share from {user}" : "Вы получили {share} в качестве удалённого ресурса от {user}", "Accept" : "Принять", "Decline" : "Отклонить", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s", @@ -44,15 +44,15 @@ OC.L10N.register( "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов", "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов", "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге", - "Allow users to publish their data to a global and public address book" : "Резрешить пользователям публиковать свои данные в глобальной и общедосупной адресной книге", + "Allow users to publish their data to a global and public address book" : "Разрешить пользователям публиковать свои данные в глобальной и общедоступной адресной книге", "Federated Cloud" : "Федерация облачных хранилищ", "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можно поделиться с любым пользователем Nextcloud, ownCloud или Pydio! Просто введите его идентификатор федеративного облачного хранилища в диалоге предоставления общего доступа. Идентификатор указывается в виде «person@cloud.example.com».", "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:", - "Share it so your friends can share files with you:" : "Сообщите его друзьям, что бы они могли поделиться с вами файлами:", + "Share it so your friends can share files with you:" : "Сообщите его друзьям, чтобы они могли поделиться с вами файлами:", "Add to your website" : "Добавить к себе на сайт", "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud", "HTML Code:" : "HTML код:", - "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и резрешение публикации своих данных локальным пользователям ", + "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и разрешение публикации своих данных локальным пользователям ", "Share it:" : "Поделиться:" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json index f4bf96db775..b54c38a5339 100644 --- a/apps/federatedfilesharing/l10n/ru.json +++ b/apps/federatedfilesharing/l10n/ru.json @@ -25,12 +25,12 @@ "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться «%s», пользователю%s уже предоставлен доступ к этому элементу", "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем", "File is already shared with %s" : "Доступ к файлу уже предоставлен %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться «%s», не удалось найти %s, возможно, сервер не доступен или использует само-подписанный сертификат.", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Не удалось поделиться «%s», не удалось найти %s, возможно, сервер недоступен или использует самоподписанный сертификат.", "Could not find share" : "Не удалось найти общий ресурс", "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили «%3$s» в качестве удалённого ресурса из %1$s (от имени %2$s)", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Вы получили «{share}» в качестве удалённого ресурса от {user} (от имени {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Вы получили «%3$s» в качестве удалённого ресурса из %1$s", - "You received {share} as a remote share from {user}" : "Вы получили «{share}» в качестве удалённого ресурса от {user}", + "You received {share} as a remote share from {user}" : "Вы получили {share} в качестве удалённого ресурса от {user}", "Accept" : "Принять", "Decline" : "Отклонить", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s", @@ -42,15 +42,15 @@ "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов", "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов", "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге", - "Allow users to publish their data to a global and public address book" : "Резрешить пользователям публиковать свои данные в глобальной и общедосупной адресной книге", + "Allow users to publish their data to a global and public address book" : "Разрешить пользователям публиковать свои данные в глобальной и общедоступной адресной книге", "Federated Cloud" : "Федерация облачных хранилищ", "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можно поделиться с любым пользователем Nextcloud, ownCloud или Pydio! Просто введите его идентификатор федеративного облачного хранилища в диалоге предоставления общего доступа. Идентификатор указывается в виде «person@cloud.example.com».", "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:", - "Share it so your friends can share files with you:" : "Сообщите его друзьям, что бы они могли поделиться с вами файлами:", + "Share it so your friends can share files with you:" : "Сообщите его друзьям, чтобы они могли поделиться с вами файлами:", "Add to your website" : "Добавить к себе на сайт", "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud", "HTML Code:" : "HTML код:", - "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и резрешение публикации своих данных локальным пользователям ", + "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и разрешение публикации своих данных локальным пользователям ", "Share it:" : "Поделиться:" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/sr.js b/apps/federatedfilesharing/l10n/sr.js index 0cbb6abf78f..be041737963 100644 --- a/apps/federatedfilesharing/l10n/sr.js +++ b/apps/federatedfilesharing/l10n/sr.js @@ -2,17 +2,57 @@ OC.L10N.register( "federatedfilesharing", { "Federated sharing" : "Здружено дељење", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Да ли желите да додате удаљено дељење {name} од {owner}@{remote}?", + "Remote share" : "Удаљено дељење", + "Remote share password" : "Лозинка удаљеног дељења", + "Cancel" : "Одустани", + "Add remote share" : "Додај удаљено дељење", + "Copy" : "Копирај", + "Copied!" : "Копирано!", + "Not supported!" : "Није подржано!", + "Press ⌘-C to copy." : "Притисните ⌘-C за копирање.", + "Press Ctrl-C to copy." : "Притисните Ctrl-C за копирање.", "Invalid Federated Cloud ID" : "Неисправан ИД Здруженог облака", + "Server to server sharing is not enabled on this server" : "Сервер-сервер дељење није подржано на овом серверу", + "Couldn't establish a federated share." : "Не могу да успоставим здружено дељење.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не могу да успоставим здружено дељење, можда лозинка не ваља.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Послат захтев за здружено дељење, добићете позивницу. Проверавајте обавештења.", + "The mountpoint name contains invalid characters." : "Име тачке монтирања садржи неисправне карактере.", + "Not allowed to create a federated share with the owner." : "Није дозвољено да направите здружено дељење са власником.", + "Invalid or untrusted SSL certificate" : "Неисправан или SSL сертификат без поверења", + "Could not authenticate to remote share, password might be wrong" : "Удаљено дељење не може да провери Ваш идентитет, можда лозинка није исправна", + "Storage not valid" : "Складиште није исправно", + "Federated share added" : "Здружено дељење додато", + "Couldn't add remote share" : "Не могу да додам удаљено дељење", "Sharing %s failed, because this item is already shared with %s" : "Дељење %s није успело зато што се ова ставка већ дели са %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Дељење %s није успело, није могуће пронаћи %s, можда сервер тренутно није доступан.", + "Not allowed to create a federated share with the same user" : "Није дозвољено да се направи здружено дељење са истим корисником", + "File is already shared with %s" : "Фајл је већ дељен са %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Дељење %s није успело, не могу да нађем %s, можда сервер тренутно није доступан или користи самопотписани сертификат.", + "Could not find share" : "Не могу да пронађем дељење", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Примили сте \"%3$s\" као удаљено дељење од %1$s (у име %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Примили сте {share} као удаљено дељење од {user} (у име {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Примили сте \"%3$s\" као удаљено дељење од %1$s", + "You received {share} as a remote share from {user}" : "Примили сте {share} као удаљено дељење од {user}", "Accept" : "Прихвати", "Decline" : "Одбиј", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Дели са мном преко мог #Некстклауд Здруженог облака, види %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Дели са мном преко мог #Некстклауд Здруженог облака", + "Sharing" : "Дељење", "Federated Cloud Sharing" : "Здружено дељење у облаку", "Open documentation" : "Отвори документацију", + "Adjust how people can share between servers." : "Подеси како људи деле фајлове између сервера.", "Allow users on this server to send shares to other servers" : "Дозвољава корисницима овог сервера да шаљу дељења на друге сервере", "Allow users on this server to receive shares from other servers" : "Дозвољава корисницима овог сервера да примају дељења са других сервера", + "Search global and public address book for users" : "Тражи кориснике и у глобалним и јавним именицима", + "Allow users to publish their data to a global and public address book" : "Дозволи корисницима да објаве своје податке у јавне и глобалне именике", "Federated Cloud" : "Здружени облак", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можете делите ствари са било ким ко користи Некстклауд, Оунклауд или Пидио. Само унесите њихов ИД Здруженог Облака у дијалог за дељење. ИД изгледа нешто попут person@cloud.example.com", "Your Federated Cloud ID:" : "ИД вашег здруженог облака:", - "HTML Code:" : "ХТМЛ кôд:" + "Share it so your friends can share files with you:" : "Поделите да би Ваши пријатељи могли да деле са Вама:", + "Add to your website" : "Додај на свој веб сајт", + "Share with me via Nextcloud" : "Дели са мном преко Некстклауда", + "HTML Code:" : "ХТМЛ кôд:", + "Search global and public address book for users and let local users publish their data" : "Претражи кориснике у глобалним и јавним именицима и дозволи да локални корисници објављују њихове податке", + "Share it:" : "Дели:" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/federatedfilesharing/l10n/sr.json b/apps/federatedfilesharing/l10n/sr.json index c5355e6ac6e..de872b01541 100644 --- a/apps/federatedfilesharing/l10n/sr.json +++ b/apps/federatedfilesharing/l10n/sr.json @@ -1,16 +1,56 @@ { "translations": { "Federated sharing" : "Здружено дељење", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Да ли желите да додате удаљено дељење {name} од {owner}@{remote}?", + "Remote share" : "Удаљено дељење", + "Remote share password" : "Лозинка удаљеног дељења", + "Cancel" : "Одустани", + "Add remote share" : "Додај удаљено дељење", + "Copy" : "Копирај", + "Copied!" : "Копирано!", + "Not supported!" : "Није подржано!", + "Press ⌘-C to copy." : "Притисните ⌘-C за копирање.", + "Press Ctrl-C to copy." : "Притисните Ctrl-C за копирање.", "Invalid Federated Cloud ID" : "Неисправан ИД Здруженог облака", + "Server to server sharing is not enabled on this server" : "Сервер-сервер дељење није подржано на овом серверу", + "Couldn't establish a federated share." : "Не могу да успоставим здружено дељење.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не могу да успоставим здружено дељење, можда лозинка не ваља.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Послат захтев за здружено дељење, добићете позивницу. Проверавајте обавештења.", + "The mountpoint name contains invalid characters." : "Име тачке монтирања садржи неисправне карактере.", + "Not allowed to create a federated share with the owner." : "Није дозвољено да направите здружено дељење са власником.", + "Invalid or untrusted SSL certificate" : "Неисправан или SSL сертификат без поверења", + "Could not authenticate to remote share, password might be wrong" : "Удаљено дељење не може да провери Ваш идентитет, можда лозинка није исправна", + "Storage not valid" : "Складиште није исправно", + "Federated share added" : "Здружено дељење додато", + "Couldn't add remote share" : "Не могу да додам удаљено дељење", "Sharing %s failed, because this item is already shared with %s" : "Дељење %s није успело зато што се ова ставка већ дели са %s", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Дељење %s није успело, није могуће пронаћи %s, можда сервер тренутно није доступан.", + "Not allowed to create a federated share with the same user" : "Није дозвољено да се направи здружено дељење са истим корисником", + "File is already shared with %s" : "Фајл је већ дељен са %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Дељење %s није успело, не могу да нађем %s, можда сервер тренутно није доступан или користи самопотписани сертификат.", + "Could not find share" : "Не могу да пронађем дељење", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Примили сте \"%3$s\" као удаљено дељење од %1$s (у име %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Примили сте {share} као удаљено дељење од {user} (у име {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Примили сте \"%3$s\" као удаљено дељење од %1$s", + "You received {share} as a remote share from {user}" : "Примили сте {share} као удаљено дељење од {user}", "Accept" : "Прихвати", "Decline" : "Одбиј", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Дели са мном преко мог #Некстклауд Здруженог облака, види %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Дели са мном преко мог #Некстклауд Здруженог облака", + "Sharing" : "Дељење", "Federated Cloud Sharing" : "Здружено дељење у облаку", "Open documentation" : "Отвори документацију", + "Adjust how people can share between servers." : "Подеси како људи деле фајлове између сервера.", "Allow users on this server to send shares to other servers" : "Дозвољава корисницима овог сервера да шаљу дељења на друге сервере", "Allow users on this server to receive shares from other servers" : "Дозвољава корисницима овог сервера да примају дељења са других сервера", + "Search global and public address book for users" : "Тражи кориснике и у глобалним и јавним именицима", + "Allow users to publish their data to a global and public address book" : "Дозволи корисницима да објаве своје податке у јавне и глобалне именике", "Federated Cloud" : "Здружени облак", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можете делите ствари са било ким ко користи Некстклауд, Оунклауд или Пидио. Само унесите њихов ИД Здруженог Облака у дијалог за дељење. ИД изгледа нешто попут person@cloud.example.com", "Your Federated Cloud ID:" : "ИД вашег здруженог облака:", - "HTML Code:" : "ХТМЛ кôд:" + "Share it so your friends can share files with you:" : "Поделите да би Ваши пријатељи могли да деле са Вама:", + "Add to your website" : "Додај на свој веб сајт", + "Share with me via Nextcloud" : "Дели са мном преко Некстклауда", + "HTML Code:" : "ХТМЛ кôд:", + "Search global and public address book for users and let local users publish their data" : "Претражи кориснике у глобалним и јавним именицима и дозволи да локални корисници објављују њихове податке", + "Share it:" : "Дели:" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/federation/l10n/sr.js b/apps/federation/l10n/sr.js index 4a0fad5ae4c..88f2c6dfd69 100644 --- a/apps/federation/l10n/sr.js +++ b/apps/federation/l10n/sr.js @@ -1,15 +1,16 @@ OC.L10N.register( "federation", { - "Server added to the list of trusted ownClouds" : "Сервер додат на списак поверљивих оунКлауд сервера", - "Server is already in the list of trusted servers." : "Сервер је већ на списку поверљивих сервера.", - "No ownCloud server found" : "Ниједан оунКлауд сервер није нађен", - "Could not add server" : "Не могох да додам сервер", - "Federation" : "Здруживање", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "оунКлауд здруживање вам омогућује да се повежете са другим поверљивим оунКлауд серверима да бисте разменили кориснички директоријум. На пример, ово ће да се користи за аутоматско довршавање спољашњих корисника за здружено дељење.", + "Added to the list of trusted servers" : "Додат на листу сервера од поверења", + "Server is already in the list of trusted servers." : "Сервер је већ на списку сервера од поверења.", + "No server to federate with found" : "Није нађен сервер за здруживање", + "Could not add server" : "Неуспело додавање сервера", + "Trusted servers" : "Сервери од поверења", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Здруживање омогућава да се повежете са другим серверима од поверења и да мењате корисничке директоријуме.", "Add server automatically once a federated share was created successfully" : "Додај сервер аутоматски по успешном прављењу здруженог дељења", - "Trusted ownCloud Servers" : "Поверљиви оунКлауд сервери", - "+ Add ownCloud server" : "+ Додај оунКлауд сервер", - "ownCloud Server" : "оунКлауд сервер" + "+ Add trusted server" : "+ Додај сервер од поверења", + "Trusted server" : "Сервер од поверења", + "Add" : "Додај", + "Federation" : "Здруживање" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/federation/l10n/sr.json b/apps/federation/l10n/sr.json index d821056fc62..c70b5f1a622 100644 --- a/apps/federation/l10n/sr.json +++ b/apps/federation/l10n/sr.json @@ -1,13 +1,14 @@ { "translations": { - "Server added to the list of trusted ownClouds" : "Сервер додат на списак поверљивих оунКлауд сервера", - "Server is already in the list of trusted servers." : "Сервер је већ на списку поверљивих сервера.", - "No ownCloud server found" : "Ниједан оунКлауд сервер није нађен", - "Could not add server" : "Не могох да додам сервер", - "Federation" : "Здруживање", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "оунКлауд здруживање вам омогућује да се повежете са другим поверљивим оунКлауд серверима да бисте разменили кориснички директоријум. На пример, ово ће да се користи за аутоматско довршавање спољашњих корисника за здружено дељење.", + "Added to the list of trusted servers" : "Додат на листу сервера од поверења", + "Server is already in the list of trusted servers." : "Сервер је већ на списку сервера од поверења.", + "No server to federate with found" : "Није нађен сервер за здруживање", + "Could not add server" : "Неуспело додавање сервера", + "Trusted servers" : "Сервери од поверења", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Здруживање омогућава да се повежете са другим серверима од поверења и да мењате корисничке директоријуме.", "Add server automatically once a federated share was created successfully" : "Додај сервер аутоматски по успешном прављењу здруженог дељења", - "Trusted ownCloud Servers" : "Поверљиви оунКлауд сервери", - "+ Add ownCloud server" : "+ Додај оунКлауд сервер", - "ownCloud Server" : "оунКлауд сервер" + "+ Add trusted server" : "+ Додај сервер од поверења", + "Trusted server" : "Сервер од поверења", + "Add" : "Додај", + "Federation" : "Здруживање" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss index 6f337a27578..4685b20d43a 100644 --- a/apps/files/css/upload.scss +++ b/apps/files/css/upload.scss @@ -50,28 +50,29 @@ text-align: center; } #uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left { - height: 100%; - top: 0px; - left: 0px; - position: absolute; - overflow: hidden; + height: 100%; + top: 0px; + left: 0px; + position: absolute; + overflow: hidden; + background-color: $color-primary; } #uploadprogressbar .label { - top: 6px; - opacity: 1; - overflow: hidden; - white-space: nowrap; + top: 6px; + opacity: 1; + overflow: hidden; + white-space: nowrap; font-weight: normal; } #uploadprogressbar .label.inner { - color:white; - position: absolute; - display: block; - width: 200px; + color: $color-primary-text; + position: absolute; + display: block; + width: 200px; } #uploadprogressbar .label.outer { - position: relative; - color: black; + position: relative; + color: $color-main-text; } #uploadprogressbar .desktop { display: block; diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js index e53922ebb69..a896e84fdc0 100644 --- a/apps/files/js/detailsview.js +++ b/apps/files/js/detailsview.js @@ -23,7 +23,7 @@ ' {{/if}}' + ' <div class="tabsContainer">' + ' </div>' + - ' <a class="close icon-close" href="#" alt="{{closeLabel}}"></a>'; + ' <a class="close icon-close" href="#"><span class="hidden-visually">{{closeLabel}}</span></a>'; /** * @class OCA.Files.DetailsView diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index fd13deedc0d..cc23ac73979 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -565,6 +565,7 @@ */ _onShow: function(e) { if (this.shown) { + this._setCurrentDir('/', false); this.reload(); } this.shown = true; diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index 6aad7b409e7..f4bb7455e75 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -17,6 +17,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "La carpeta objectiu \"{dir}\" ja no existeix", "Not enough free space" : "Espai lliure insuficient", "Uploading …" : "S'està carregant", + "…" : ".....", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Accions", "Download" : "Baixa", @@ -38,10 +39,17 @@ OC.L10N.register( "Could not move \"{file}\"" : "No s'ha pogut moure \"{file}\"", "Could not copy \"{file}\", target exists" : "No s'ha pogut copiar", "Could not copy \"{file}\"" : "No s'ha pogut copiar", + "Copied {origin} inside {destination}" : "Copiat {origen} dins {destinació}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "S'ha copiat {origen} i {nbfiles} altres fitxers a l'interior {destinació}", "{newName} already exists" : "{newName} ja existeix", "Could not rename \"{fileName}\", it does not exist any more" : "No s'ha pogut reanomenar \"{fileName}\", ja no existeix", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nom \"{targetName}\" ja s'utilitza a la carpeta \"{dir}\". Trieu un nom diferent.", "Could not rename \"{fileName}\"" : "No s'ha pogut reanomenar \"{fileName}\"", "Could not create file \"{file}\"" : "No s'ha pogut crear el fitxer \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "No s'ha pogut crear el fitxer \"{file}\" perquè ja existeix", + "Could not create folder \"{dir}\" because it already exists" : "No s'ha pogut crear la carpeta \"{dir}\" perquè ja existeix", + "Error deleting file \"{fileName}\"." : "S'ha produït un error en eliminar el fitxer \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha cap resultat de cerca a altres carpetes per {tag} {filter} {end tag}", "Name" : "Nom", "Size" : "Mida", "Modified" : "Modificat", @@ -54,6 +62,7 @@ OC.L10N.register( "New" : "Nou", "\"{name}\" is an invalid file name." : "\"{name}\" no es un fitxer vàlid.", "File name cannot be empty." : "El nom del fitxer no pot ser buit.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" no és un tipus de fitxer permès", "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'emmagatzematge de {owner} està ple, els arxius no es poden actualitzar o sincronitzar més!", "Your storage is full, files can not be updated or synced anymore!" : "El vostre espai d'emmagatzemament és ple, els fitxers ja no es poden actualitzar o sincronitzar!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Emmagatzematge de {owner} està gairebé ple ({usedSpacePercent}%)", @@ -61,6 +70,7 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "View in folder" : "Veure a la carpeta", "Copied!" : "Copiat!", + "Copy direct link (only works for users who have access to this file/folder)" : "Copia l'enllaç directe (només funciona per als usuaris que tenen accés a aquest fitxer / carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregat a favorits", @@ -70,6 +80,7 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "S'ha produït un error en tractar d'actualitzar les etiquetes", "Added to favorites" : "Afegit a favorits", "Removed from favorites" : "Esborra de preferits", + "You added {file} to your favorites" : "Heu afegit {file} als vostres preferits", "You removed {file} from your favorites" : "Has esborrat {file} dels teus preferits", "File changes" : "Canvis al fitxer", "Created by {user}" : "Creat per {user}", @@ -81,6 +92,7 @@ OC.L10N.register( "\"remote user\"" : "\"usuari remot\"", "You created {file}" : "Has creat {file}", "{user} created {file}" : "{user} ha creat {file}", + "{file} was created in a public folder" : "{file} s'ha creat en una carpeta pública", "You changed {file}" : "Has modificat {file}", "{user} changed {file}" : "{user} ha modificat {file}", "You deleted {file}" : "Heu esborrat {file}", @@ -91,20 +103,27 @@ OC.L10N.register( "{user} renamed {oldfile} to {newfile}" : "{user} ha reanomenat {oldfile} a {newfile}", "You moved {oldfile} to {newfile}" : "has mogut {oldfile} a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} ha mogut {oldfile} a {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "S'ha afegit o eliminat un fitxer de les teves <strong>preferides</strong>", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un fitxer o carpeta ha estat <strong>canviat</strong> o <strong>reanomenat</strong>", "A new file or folder has been <strong>created</strong>" : "S'ha <strong>creat</strong> un nou fitxer o una nova carpeta", + "A file or folder has been <strong>deleted</strong>" : "S'ha <strong>elminiat</strong> un fitxer o una carpeta", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar les notificacions sobre la creació i canvis dels seus <strong>arxius favorits</strong><em>(solament Stream)</em>", + "A file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un fitxer o una carpeta", "Unlimited" : "Il·limitat", "Upload (max. %s)" : "Pujada (màx. %s)", "File handling" : "Gestió de fitxers", "Maximum upload size" : "Mida màxima de pujada", "max. possible: " : "màxim possible:", "Save" : "Desa", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Amb PHP-FPM pot trigar 5 minuts a aplicar els canvis.", + "Missing permissions to edit from here." : "Falta els permisos per editar des d'aquí.", "%s of %s used" : "Usats %s de %s", "%s used" : "%s utilitzat", "Settings" : "Arranjament", "Show hidden files" : "Mostra els fitxers ocults", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilitzeu aquesta adreça per <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accedir als vostres fitxers a través de WebDAV</a>", + "Uploading @" : "S'està carregant @", "No files in here" : "No hi ha arxius", "Upload some content or sync with your devices!" : "Pugi continguts o sincronitzi els seus dispositius.", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", @@ -135,6 +154,8 @@ OC.L10N.register( "Copy local link" : "C", "Folder" : "Carpeta", "Upload" : "Puja", + "A new file or folder has been <strong>deleted</strong>" : "S'ha <strong>eliminat</strong> un nou fitxer o carpeta", + "A new file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un nou fitxer o carpeta", "No favorites" : "No hi ha favorits" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 0ff7c6332e1..13beefbf4b1 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -15,6 +15,7 @@ "Target folder \"{dir}\" does not exist any more" : "La carpeta objectiu \"{dir}\" ja no existeix", "Not enough free space" : "Espai lliure insuficient", "Uploading …" : "S'està carregant", + "…" : ".....", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Accions", "Download" : "Baixa", @@ -36,10 +37,17 @@ "Could not move \"{file}\"" : "No s'ha pogut moure \"{file}\"", "Could not copy \"{file}\", target exists" : "No s'ha pogut copiar", "Could not copy \"{file}\"" : "No s'ha pogut copiar", + "Copied {origin} inside {destination}" : "Copiat {origen} dins {destinació}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "S'ha copiat {origen} i {nbfiles} altres fitxers a l'interior {destinació}", "{newName} already exists" : "{newName} ja existeix", "Could not rename \"{fileName}\", it does not exist any more" : "No s'ha pogut reanomenar \"{fileName}\", ja no existeix", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nom \"{targetName}\" ja s'utilitza a la carpeta \"{dir}\". Trieu un nom diferent.", "Could not rename \"{fileName}\"" : "No s'ha pogut reanomenar \"{fileName}\"", "Could not create file \"{file}\"" : "No s'ha pogut crear el fitxer \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "No s'ha pogut crear el fitxer \"{file}\" perquè ja existeix", + "Could not create folder \"{dir}\" because it already exists" : "No s'ha pogut crear la carpeta \"{dir}\" perquè ja existeix", + "Error deleting file \"{fileName}\"." : "S'ha produït un error en eliminar el fitxer \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "No hi ha cap resultat de cerca a altres carpetes per {tag} {filter} {end tag}", "Name" : "Nom", "Size" : "Mida", "Modified" : "Modificat", @@ -52,6 +60,7 @@ "New" : "Nou", "\"{name}\" is an invalid file name." : "\"{name}\" no es un fitxer vàlid.", "File name cannot be empty." : "El nom del fitxer no pot ser buit.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" no és un tipus de fitxer permès", "Storage of {owner} is full, files can not be updated or synced anymore!" : "L'emmagatzematge de {owner} està ple, els arxius no es poden actualitzar o sincronitzar més!", "Your storage is full, files can not be updated or synced anymore!" : "El vostre espai d'emmagatzemament és ple, els fitxers ja no es poden actualitzar o sincronitzar!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Emmagatzematge de {owner} està gairebé ple ({usedSpacePercent}%)", @@ -59,6 +68,7 @@ "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "View in folder" : "Veure a la carpeta", "Copied!" : "Copiat!", + "Copy direct link (only works for users who have access to this file/folder)" : "Copia l'enllaç directe (només funciona per als usuaris que tenen accés a aquest fitxer / carpeta)", "Path" : "Ruta", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregat a favorits", @@ -68,6 +78,7 @@ "An error occurred while trying to update the tags" : "S'ha produït un error en tractar d'actualitzar les etiquetes", "Added to favorites" : "Afegit a favorits", "Removed from favorites" : "Esborra de preferits", + "You added {file} to your favorites" : "Heu afegit {file} als vostres preferits", "You removed {file} from your favorites" : "Has esborrat {file} dels teus preferits", "File changes" : "Canvis al fitxer", "Created by {user}" : "Creat per {user}", @@ -79,6 +90,7 @@ "\"remote user\"" : "\"usuari remot\"", "You created {file}" : "Has creat {file}", "{user} created {file}" : "{user} ha creat {file}", + "{file} was created in a public folder" : "{file} s'ha creat en una carpeta pública", "You changed {file}" : "Has modificat {file}", "{user} changed {file}" : "{user} ha modificat {file}", "You deleted {file}" : "Heu esborrat {file}", @@ -89,20 +101,27 @@ "{user} renamed {oldfile} to {newfile}" : "{user} ha reanomenat {oldfile} a {newfile}", "You moved {oldfile} to {newfile}" : "has mogut {oldfile} a {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} ha mogut {oldfile} a {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "S'ha afegit o eliminat un fitxer de les teves <strong>preferides</strong>", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un fitxer o carpeta ha estat <strong>canviat</strong> o <strong>reanomenat</strong>", "A new file or folder has been <strong>created</strong>" : "S'ha <strong>creat</strong> un nou fitxer o una nova carpeta", + "A file or folder has been <strong>deleted</strong>" : "S'ha <strong>elminiat</strong> un fitxer o una carpeta", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar les notificacions sobre la creació i canvis dels seus <strong>arxius favorits</strong><em>(solament Stream)</em>", + "A file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un fitxer o una carpeta", "Unlimited" : "Il·limitat", "Upload (max. %s)" : "Pujada (màx. %s)", "File handling" : "Gestió de fitxers", "Maximum upload size" : "Mida màxima de pujada", "max. possible: " : "màxim possible:", "Save" : "Desa", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Amb PHP-FPM pot trigar 5 minuts a aplicar els canvis.", + "Missing permissions to edit from here." : "Falta els permisos per editar des d'aquí.", "%s of %s used" : "Usats %s de %s", "%s used" : "%s utilitzat", "Settings" : "Arranjament", "Show hidden files" : "Mostra els fitxers ocults", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilitzeu aquesta adreça per <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accedir als vostres fitxers a través de WebDAV</a>", + "Uploading @" : "S'està carregant @", "No files in here" : "No hi ha arxius", "Upload some content or sync with your devices!" : "Pugi continguts o sincronitzi els seus dispositius.", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", @@ -133,6 +152,8 @@ "Copy local link" : "C", "Folder" : "Carpeta", "Upload" : "Puja", + "A new file or folder has been <strong>deleted</strong>" : "S'ha <strong>eliminat</strong> un nou fitxer o carpeta", + "A new file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un nou fitxer o carpeta", "No favorites" : "No hi ha favorits" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index ecba0ffbc7d..6105c3e1163 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -17,6 +17,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Cílový adresář \"{dir}\" již neexistuje", "Not enough free space" : "Nedostatek volného prostoru", "Uploading …" : "Nahrávám...", + "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Actions" : "Činnosti", "Download" : "Stáhnout", @@ -38,6 +39,8 @@ OC.L10N.register( "Could not move \"{file}\"" : "Nelze přesunout \"{file}\"", "Could not copy \"{file}\", target exists" : "Nelze kopírovat \"{file}\", cíl již existuje", "Could not copy \"{file}\"" : "Nelze kopírovat \"{file}\"", + "Copied {origin} inside {destination}" : "{origin} zkopírován do {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} a {nbfiles} dalších souborů zkopírováno do {destination}", "{newName} already exists" : "{newName} již existuje", "Could not rename \"{fileName}\", it does not exist any more" : "Nelze přejmenovat \"{fileName}\", již neexistuje", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Jméno \"{targetName}\" je již použito v adresáři \"{dir}\". Vyberte prosím jiné jméno.", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index c214592723e..ed7dfac05e0 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -15,6 +15,7 @@ "Target folder \"{dir}\" does not exist any more" : "Cílový adresář \"{dir}\" již neexistuje", "Not enough free space" : "Nedostatek volného prostoru", "Uploading …" : "Nahrávám...", + "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Actions" : "Činnosti", "Download" : "Stáhnout", @@ -36,6 +37,8 @@ "Could not move \"{file}\"" : "Nelze přesunout \"{file}\"", "Could not copy \"{file}\", target exists" : "Nelze kopírovat \"{file}\", cíl již existuje", "Could not copy \"{file}\"" : "Nelze kopírovat \"{file}\"", + "Copied {origin} inside {destination}" : "{origin} zkopírován do {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} a {nbfiles} dalších souborů zkopírováno do {destination}", "{newName} already exists" : "{newName} již existuje", "Could not rename \"{fileName}\", it does not exist any more" : "Nelze přejmenovat \"{fileName}\", již neexistuje", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Jméno \"{targetName}\" je již použito v adresáři \"{dir}\". Vyberte prosím jiné jméno.", diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index 442d64a68b4..b8f4515cf74 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Brug denne adresse til at <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">tilgå dine filer via WebDAV</a>", "Uploading @" : "Uploader @", + "Cancel upload" : "Annuller upload ", "No files in here" : "Her er ingen filer", "Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index 2397165b0c5..7e5e35de51e 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Brug denne adresse til at <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">tilgå dine filer via WebDAV</a>", "Uploading @" : "Uploader @", + "Cancel upload" : "Annuller upload ", "No files in here" : "Her er ingen filer", "Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index 7e53396bba2..166166316ab 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -38,9 +38,9 @@ OC.L10N.register( "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "Could not copy \"{file}\", target exists" : "\"{file}\" konnte nicht kopiert werden, Ziel existiert bereits", - "Could not copy \"{file}\"" : "Konnte \"{file}\" nicht kopieren", - "Copied {origin} inside {destination}" : "{origin} wurde in {destination} kopiert", - "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden in {destination} kopiert", + "Could not copy \"{file}\"" : "\"{file}\" konnte nicht kopiert werden", + "Copied {origin} inside {destination}" : "{origin} wurde nach {destination} kopiert", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden nach {destination} kopiert", "{newName} already exists" : "{newName} existiert bereits", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" konnte nicht umbenannt werden, da sie nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{targetName}\" wird bereits bereits in diesem Ordner benutzt \"{dir}\". Bitte einen anderen Namen verwenden.", @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">über WebDAV auf Deine Dateien zuzugreifen</a>", "Uploading @" : "Lade @ hoch", + "Cancel upload" : "Hochladen abbrechen", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit deinen Geräten synchronisieren!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index b9a4d86736e..f520dc86f13 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -36,9 +36,9 @@ "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "Could not copy \"{file}\", target exists" : "\"{file}\" konnte nicht kopiert werden, Ziel existiert bereits", - "Could not copy \"{file}\"" : "Konnte \"{file}\" nicht kopieren", - "Copied {origin} inside {destination}" : "{origin} wurde in {destination} kopiert", - "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden in {destination} kopiert", + "Could not copy \"{file}\"" : "\"{file}\" konnte nicht kopiert werden", + "Copied {origin} inside {destination}" : "{origin} wurde nach {destination} kopiert", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden nach {destination} kopiert", "{newName} already exists" : "{newName} existiert bereits", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" konnte nicht umbenannt werden, da sie nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{targetName}\" wird bereits bereits in diesem Ordner benutzt \"{dir}\". Bitte einen anderen Namen verwenden.", @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Diese Adresse benutzen, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">über WebDAV auf Deine Dateien zuzugreifen</a>", "Uploading @" : "Lade @ hoch", + "Cancel upload" : "Hochladen abbrechen", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit deinen Geräten synchronisieren!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 55f45321cea..91bf5dba7a5 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -38,9 +38,9 @@ OC.L10N.register( "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "Could not copy \"{file}\", target exists" : "\"{file}\" konnte nicht kopiert werden, Ziel existiert bereits", - "Could not copy \"{file}\"" : "Konnte \"{file}\" nicht kopieren", - "Copied {origin} inside {destination}" : "{origin} wurde in {destination} kopiert", - "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden in {destination} kopiert", + "Could not copy \"{file}\"" : "\"{file}\" konnte nicht kopiert werden", + "Copied {origin} inside {destination}" : "{origin} wurde nach {destination} kopiert", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden nach {destination} kopiert", "{newName} already exists" : "{newName} existiert bereits", "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbenannt werden \"{fileName}\", da die Datei nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name „{targetName}“ wird bereits im Ordner „{dir}“ benutzt. Bitte wählen Sie einen anderen Namen.", @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">via WebDAV auf Ihre Dateien zuzugreifen</a>", "Uploading @" : "Lade @ hoch", + "Cancel upload" : "Hochladen abbrechen", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 2fcb69a7027..dcb310ae707 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -36,9 +36,9 @@ "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "Could not copy \"{file}\", target exists" : "\"{file}\" konnte nicht kopiert werden, Ziel existiert bereits", - "Could not copy \"{file}\"" : "Konnte \"{file}\" nicht kopieren", - "Copied {origin} inside {destination}" : "{origin} wurde in {destination} kopiert", - "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden in {destination} kopiert", + "Could not copy \"{file}\"" : "\"{file}\" konnte nicht kopiert werden", + "Copied {origin} inside {destination}" : "{origin} wurde nach {destination} kopiert", + "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} und {nbfiles} weitere Dateien wurden nach {destination} kopiert", "{newName} already exists" : "{newName} existiert bereits", "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbenannt werden \"{fileName}\", da die Datei nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name „{targetName}“ wird bereits im Ordner „{dir}“ benutzt. Bitte wählen Sie einen anderen Namen.", @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">via WebDAV auf Ihre Dateien zuzugreifen</a>", "Uploading @" : "Lade @ hoch", + "Cancel upload" : "Hochladen abbrechen", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 8865fc628dd..b7a8dca505d 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>", "Uploading @" : "Uploading @", + "Cancel upload" : "Cancel upload", "No files in here" : "No files in here", "Upload some content or sync with your devices!" : "Upload some content or sync with your devices!", "No entries found in this folder" : "No entries found in this folder", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index e8755ad35c7..0d93f91e4cc 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>", "Uploading @" : "Uploading @", + "Cancel upload" : "Cancel upload", "No files in here" : "No files in here", "Upload some content or sync with your devices!" : "Upload some content or sync with your devices!", "No entries found in this folder" : "No entries found in this folder", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 2e8f8f53342..cc6a73fdf7f 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -37,6 +37,10 @@ OC.L10N.register( "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", "Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", destino ya existe", "Could not move \"{file}\"" : "No se pudo mover \"{file}\"", + "Could not copy \"{file}\", target exists" : "No se ha podido copiar \"{file}\", ya existe el destino", + "Could not copy \"{file}\"" : "No se ha podido copiar \"{file}\"", + "Copied {origin} inside {destination}" : "Se ha copiado {origin} dentro de {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Se han copiado {origini} y {nbfiles} otros archivos dentro de {destination}", "{newName} already exists" : "{newName} ya existe", "Could not rename \"{fileName}\", it does not exist any more" : "No se pudo renombrar \"{fileName}\", ya no existe", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nombre \"{targetName}\" ya se utiliza en la carpeta \"{dir}\". Por favor elija un nombre diferente.", @@ -120,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Usa esta dirección para <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">acceder tus archivos mediante WebDAV</a>", "Uploading @" : "Subiendo a ", + "Cancel upload" : "Cancelar subida", "No files in here" : "Aquí no hay archivos", "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", "No entries found in this folder" : "No hay entradas en esta carpeta", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index 8f3f20c2c92..6f5cca13a7a 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -35,6 +35,10 @@ "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contáctese con el administrador", "Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", destino ya existe", "Could not move \"{file}\"" : "No se pudo mover \"{file}\"", + "Could not copy \"{file}\", target exists" : "No se ha podido copiar \"{file}\", ya existe el destino", + "Could not copy \"{file}\"" : "No se ha podido copiar \"{file}\"", + "Copied {origin} inside {destination}" : "Se ha copiado {origin} dentro de {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Se han copiado {origini} y {nbfiles} otros archivos dentro de {destination}", "{newName} already exists" : "{newName} ya existe", "Could not rename \"{fileName}\", it does not exist any more" : "No se pudo renombrar \"{fileName}\", ya no existe", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nombre \"{targetName}\" ya se utiliza en la carpeta \"{dir}\". Por favor elija un nombre diferente.", @@ -118,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Usa esta dirección para <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">acceder tus archivos mediante WebDAV</a>", "Uploading @" : "Subiendo a ", + "Cancel upload" : "Cancelar subida", "No files in here" : "Aquí no hay archivos", "Upload some content or sync with your devices!" : "¡Suba contenidos o sincronice sus dispositivos!", "No entries found in this folder" : "No hay entradas en esta carpeta", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index bc20ef8ec4c..0111a0d02dc 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>", "Uploading @" : "Envoi en cours @", + "Cancel upload" : "Annuler le téléversement", "No files in here" : "Aucun fichier", "Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 3c49b20cfc3..0cc1f32c479 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accéder à vos fichiers par WebDAV</a>", "Uploading @" : "Envoi en cours @", + "Cancel upload" : "Annuler le téléversement", "No files in here" : "Aucun fichier", "Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 867b1648c5a..e4d742f9183 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accedere ai tuoi file con WebDAV</a>", "Uploading @" : "Caricamento @", + "Cancel upload" : "Annulla caricamento", "No files in here" : "Qui non c'è alcun file", "Upload some content or sync with your devices!" : "Carica alcuni contenuti o sincronizza con i tuoi dispositivi!", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 1b08cc9119b..3a2e5425646 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">accedere ai tuoi file con WebDAV</a>", "Uploading @" : "Caricamento @", + "Cancel upload" : "Annulla caricamento", "No files in here" : "Qui non c'è alcun file", "Upload some content or sync with your devices!" : "Carica alcuni contenuti o sincronizza con i tuoi dispositivi!", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js index f48a235b1e1..0363627955f 100644 --- a/apps/files/l10n/nb.js +++ b/apps/files/l10n/nb.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Bruk adressen <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">for å få tilgang til WebDAV</a>", "Uploading @" : "Laster opp @", + "Cancel upload" : "Avbryt opplasting", "No files in here" : "Ingen filer her", "Upload some content or sync with your devices!" : "Last opp noe innhold eller synkroniser med enhetene dine!", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", @@ -135,7 +136,7 @@ OC.L10N.register( "Shared with you" : "Delt med deg", "Shared with others" : "Delt med andre", "Shared by link" : "Delt med lenke", - "Tags" : "Knagger", + "Tags" : "Merkelapper", "Deleted files" : "Slettede filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt", diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json index 6f7bdbdee20..239793a7e70 100644 --- a/apps/files/l10n/nb.json +++ b/apps/files/l10n/nb.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Bruk adressen <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">for å få tilgang til WebDAV</a>", "Uploading @" : "Laster opp @", + "Cancel upload" : "Avbryt opplasting", "No files in here" : "Ingen filer her", "Upload some content or sync with your devices!" : "Last opp noe innhold eller synkroniser med enhetene dine!", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", @@ -133,7 +134,7 @@ "Shared with you" : "Delt med deg", "Shared with others" : "Delt med andre", "Shared by link" : "Delt med lenke", - "Tags" : "Knagger", + "Tags" : "Merkelapper", "Deleted files" : "Slettede filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt", diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 3856fbf98f0..1d11928c27a 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dostęp do swoich plików poprzez WebDAV</a>", "Uploading @" : "Wysyłanie", + "Cancel upload" : "Anuluj wysyłanie", "No files in here" : "Brak plików", "Upload some content or sync with your devices!" : "Wgraj coś, albo wykonaj synchronizację ze swoimi urządzeniami.", "No entries found in this folder" : "Brak wpisów w tym folderze", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 0aad01725bb..91fe2b1c44d 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dostęp do swoich plików poprzez WebDAV</a>", "Uploading @" : "Wysyłanie", + "Cancel upload" : "Anuluj wysyłanie", "No files in here" : "Brak plików", "Upload some content or sync with your devices!" : "Wgraj coś, albo wykonaj synchronizację ze swoimi urządzeniami.", "No entries found in this folder" : "Brak wpisów w tym folderze", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index e3b2790ae05..ab8f1c14afb 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -5,7 +5,7 @@ OC.L10N.register( "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro desconhecido", "All files" : "Todos os arquivos", - "Recent" : "Recente", + "Recent" : "Recentes", "File could not be found" : "O arquivo não foi encontrado", "Home" : "Início", "Close" : "Fechar", @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Use este endereço <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">para acessar seus arquivos via WebDAV</a>", "Uploading @" : "Enviando @", + "Cancel upload" : "Cancelar envio", "No files in here" : "Nenhum arquivo aqui", "Upload some content or sync with your devices!" : "Envie algum conteúdo ou sincronize com seus dispositivos!", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 478fec5b612..c551e03a978 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -3,7 +3,7 @@ "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro desconhecido", "All files" : "Todos os arquivos", - "Recent" : "Recente", + "Recent" : "Recentes", "File could not be found" : "O arquivo não foi encontrado", "Home" : "Início", "Close" : "Fechar", @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Use este endereço <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">para acessar seus arquivos via WebDAV</a>", "Uploading @" : "Enviando @", + "Cancel upload" : "Cancelar envio", "No files in here" : "Nenhum arquivo aqui", "Upload some content or sync with your devices!" : "Envie algum conteúdo ou sincronize com seus dispositivos!", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 5aa93caec02..1455ed2abd3 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Используйте этот адрес <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">для доступа по WebDAV</a>", "Uploading @" : "Выгрузка @", + "Cancel upload" : "Отменить выгрузку", "No files in here" : "Здесь нет файлов", "Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!", "No entries found in this folder" : "В этом каталоге ничего не найдено", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 5860678cdfd..20bbb1d2e31 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Используйте этот адрес <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">для доступа по WebDAV</a>", "Uploading @" : "Выгрузка @", + "Cancel upload" : "Отменить выгрузку", "No files in here" : "Здесь нет файлов", "Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!", "No entries found in this folder" : "В этом каталоге ничего не найдено", diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index 640c6a477d9..79e74f8fc37 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>", "Uploading @" : "Nahráva sa @", + "Cancel upload" : "Zrušiť nahrávanie", "No files in here" : "Nie sú tu žiadne súbory", "Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!", "No entries found in this folder" : "V tomto priečinku nebolo nič nájdené", diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index 7d66eaad059..3abaef4aa98 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>", "Uploading @" : "Nahráva sa @", + "Cancel upload" : "Zrušiť nahrávanie", "No files in here" : "Nie sú tu žiadne súbory", "Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!", "No entries found in this folder" : "V tomto priečinku nebolo nič nájdené", diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js index 2791df23f32..cedf0bfc2b5 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -16,10 +16,13 @@ OC.L10N.register( "Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.", "Target folder \"{dir}\" does not exist any more" : "Ciljna mapa \"{dir}\" ne obstaja več", "Not enough free space" : "Ni dovolj prostora", + "Uploading …" : "Nalaganje", + "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} od {totalSize} ({bitrate})", "Actions" : "Dejanja", "Download" : "Prejmi", "Rename" : "Preimenuj", + "Move or copy" : "Premakni ali kopiraj", "Target folder" : "Ciljna mapa", "Delete" : "Izbriši", "Disconnect storage" : "Odklopi shrambo", @@ -116,6 +119,8 @@ OC.L10N.register( "Show hidden files" : "Pokaži skrite datoteke", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Uporabite naslov <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> za dostop do datotek prek sistema WebDAV</a>.", + "Uploading @" : "Nalaganje @", + "Cancel upload" : "Prekini nalaganje", "No files in here" : "V mapi ni datotek", "Upload some content or sync with your devices!" : "Uvozite vsebino ali pa omogočite usklajevanje z napravami!", "No entries found in this folder" : "V tej mapi ni najdenih predmetov.", diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json index c13ad23edd0..a10d6ac1d91 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -14,10 +14,13 @@ "Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.", "Target folder \"{dir}\" does not exist any more" : "Ciljna mapa \"{dir}\" ne obstaja več", "Not enough free space" : "Ni dovolj prostora", + "Uploading …" : "Nalaganje", + "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} od {totalSize} ({bitrate})", "Actions" : "Dejanja", "Download" : "Prejmi", "Rename" : "Preimenuj", + "Move or copy" : "Premakni ali kopiraj", "Target folder" : "Ciljna mapa", "Delete" : "Izbriši", "Disconnect storage" : "Odklopi shrambo", @@ -114,6 +117,8 @@ "Show hidden files" : "Pokaži skrite datoteke", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Uporabite naslov <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> za dostop do datotek prek sistema WebDAV</a>.", + "Uploading @" : "Nalaganje @", + "Cancel upload" : "Prekini nalaganje", "No files in here" : "V mapi ni datotek", "Upload some content or sync with your devices!" : "Uvozite vsebino ali pa omogočite usklajevanje z napravami!", "No entries found in this folder" : "V tej mapi ni najdenih predmetov.", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index b4969688e99..1a3b01420f9 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -1,108 +1,162 @@ OC.L10N.register( "files", { - "Storage not available" : "Складиште није доступно", + "Storage is temporarily not available" : "Складиште привремено није доступно", "Storage invalid" : "Неисправно складиште", "Unknown error" : "Непозната грешка", - "Unable to set upload directory." : "Не могу да поставим директоријум за отпремање.", - "Invalid Token" : "Неисправан токен", - "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 која је наведена у ХТМЛ обрасцу", - "The uploaded file was only partially uploaded" : "Отпремани фајл је само делимично отпремљен", - "No file was uploaded" : "Ништа није отпремљено", - "Missing a temporary folder" : "Недостаје привремена фасцикла", - "Failed to write to disk" : "Не могу да пишем на диск", - "Not enough storage available" : "Нема довољно простора", - "The target folder has been moved or deleted." : "Одредишна фасцикла је премештена или обрисана.", - "Upload failed. Could not find uploaded file" : "Неуспешно отпремање. Не могу да нађем отпремљени фајл", - "Upload failed. Could not get file info." : "Неуспешно отпремање. Не могу да добијем податке о фајлу.", - "Invalid directory." : "Неисправна фасцикла.", - "Files" : "Фајлови", "All files" : "Сви фајлови", + "Recent" : "Скорашње", + "File could not be found" : "Фајл није нађен", "Home" : "Почетна", "Close" : "Затвори", "Favorites" : "Омиљени", + "Could not create folder \"{dir}\"" : "Не могу да направим фасциклу \"{dir}\"", "Upload cancelled." : "Отпремање је отказано.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Не могу да отпремим {filename} јер је то директоријум или има 0 бајтова", - "Total file size {size1} exceeds upload limit {size2}" : "Величина {size1} превазилази ограничење за отпремање од {size2}", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Не могу да отпремим {filename} јер је то или директоријум или има 0 бајтова", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Нема простора. Отпремате {size1} али само {size2} је преостало", - "Could not get result from server." : "Не могу да добијем резултат са сервера.", - "Uploading..." : "Отпремам…", - "..." : "...", - "File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.", + "Target folder \"{dir}\" does not exist any more" : "Одредишна фасцикла \"{dir}\" више не постоји", + "Not enough free space" : "Нема довољно слободног места", + "Uploading …" : "Отпремам …", + "…" : "…", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} од {totalSize} ({bitrate})", "Actions" : "Радње", "Download" : "Преузми", "Rename" : "Преименуј", + "Move or copy" : "Помери или копирај", + "Target folder" : "Одредишна фасцикла", "Delete" : "Обриши", "Disconnect storage" : "Искључи складиште", - "Unshare" : "Не дели", - "Details" : "Подаци", + "Unshare" : "Укини дељење", + "Could not load info for file \"{file}\"" : "Не могу да учитам информације фајла \"{file}\"", + "Files" : "Фајлови", + "Details" : "Детаљи", "Select" : "Изабери", "Pending" : "На чекању", "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", - "No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'", + "Could not move \"{file}\", target exists" : "Не могу да померим \"{file}\", одредиште већ постоји", + "Could not move \"{file}\"" : "Не могу да померим \"{file}\"", + "Could not copy \"{file}\", target exists" : "Не могу да копирам \"{file}\", одредиште већ постоји", + "Could not copy \"{file}\"" : "Не могу да копирам \"{file}\"", + "Copied {origin} inside {destination}" : "Копиран {origin} у {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Копиран{origin} и још {nbfiles} других фајлова у {destination}", + "{newName} already exists" : "{newName} већ постоји", + "Could not rename \"{fileName}\", it does not exist any more" : "Не могу да преименујем \"{fileName}\", фајл више не постоји", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Име \"{targetName}\" се већ користи за фасциклу \"{dir}\". Одаберите неко друго име.", + "Could not rename \"{fileName}\"" : "Не могу да преименујем \"{fileName}\"", + "Could not create file \"{file}\"" : "Не могу да направим фајл \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Не могу да направим фајл \"{file}\" јер већ постоји", + "Could not create folder \"{dir}\" because it already exists" : "Не могу да направим фасциклу \"{dir}\" јер већ постоји", + "Error deleting file \"{fileName}\"." : "Грешка при брисању фајла \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Нема резултата претраге у осталим фасциклама за {tag}{filter}{endtag}", "Name" : "Назив", "Size" : "Величина", "Modified" : "Измењен", "_%n folder_::_%n folders_" : ["%n фасцикла","%n фасцикле","%n фасцикли"], "_%n file_::_%n files_" : ["%n фајл","%n фајла","%n фајлова"], "{dirs} and {files}" : "{dirs} и {files}", + "_including %n hidden_::_including %n hidden_" : ["укључујући и %n скривени","укључујући и %n скривена","укључујући и %n скривених"], "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", "_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"], "New" : "Ново", "\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.", "File name cannot be empty." : "Назив фајла не може бити празан.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" није дозвољени тип фајла", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!", "Your storage is full, files can not be updated or synced anymore!" : "Ваше складиште је пуно. Фајлови више не могу бити ажурирани ни синхронизовани!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Складиште корисника {owner} је скоро пуно ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ваше складиште је скоро пуно ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["се поклапа са '{filter}'","се поклапају са '{filter}'","се поклапа са '{filter}'"], + "View in folder" : "Види у фасцикли", + "Copied!" : "Копирано!", + "Copy direct link (only works for users who have access to this file/folder)" : "Копирај директну везу (ради само за кориснике који имају приступ овом фајлу/фасциклу)", "Path" : "Путања", - "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајта"], + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"], "Favorited" : "Омиљено", "Favorite" : "Омиљени", - "Folder" : "фасцикла", "New folder" : "Нова фасцикла", - "Upload" : "Отпреми", + "Upload file" : "Отпреми фајл", "An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака", + "Added to favorites" : "Додато у омиљено", + "Removed from favorites" : "Избачено из омиљених", + "You added {file} to your favorites" : "Додали сте {file} у омиљене", + "You removed {file} from your favorites" : "Избацили сте {file} из омиљених", + "File changes" : "Измене над фајлом", + "Created by {user}" : "Направио {user}", + "Changed by {user}" : "Изменио {user}", + "Deleted by {user}" : "Обрисао {user}", + "Restored by {user}" : "Повратио {user}", + "Renamed by {user}" : "Преименовао {user}", + "Moved by {user}" : "Померио {user}", + "\"remote user\"" : "„удаљени корисник“", + "You created {file}" : "Направили сте {file}", + "{user} created {file}" : "{user} је направио {file}", + "{file} was created in a public folder" : "{file} је направљен у јавној фасцикли", + "You changed {file}" : "Изменили сте {file}", + "{user} changed {file}" : "{user} је изменио {file}", + "You deleted {file}" : "Обрисали сте {file}", + "{user} deleted {file}" : "{user} је обрисао {file}", + "You restored {file}" : "Повратили сте {file}", + "{user} restored {file}" : "{user} је повратио {file}", + "You renamed {oldfile} to {newfile}" : "Преименовали сте {oldfile} на {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} је преименовао {oldfile} на {newfile}", + "You moved {oldfile} to {newfile}" : "Померили сте {oldfile} на {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} је померио {oldfile} на {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "Фајл је додат или избрисан из Ваших <strong>омиљених</strong>", + "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фајл или фасцикла су <strong>измењени</strong> или <strong>преименовани</strong>", "A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>", - "A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничи обавештења о стварању и изменама на <strong>омиљене фајлове</strong> <em>(само у записнику)</em>", "A file or folder has been <strong>deleted</strong>" : "Фајл или фасцикла су <strong>обрисани</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничи обавештења о стварању и изменама на <strong>омиљене фајлове</strong> <em>(само у записнику)</em>", "A file or folder has been <strong>restored</strong>" : "Фајл или фасцикла су <strong>враћени</strong>", - "You created %1$s" : "Направили сте %1$s", - "%2$s created %1$s" : "%2$s направи %1$s", - "%1$s was created in a public folder" : "%1$s је направљен у јавној фасцикли", - "You changed %1$s" : "Изменили сте %1$s", - "%2$s changed %1$s" : "%2$s измени %1$s", - "You deleted %1$s" : "Обрисали сте %1$s", - "%2$s deleted %1$s" : "%2$s обриса %1$s", - "You restored %1$s" : "Вратили сте %1$s", - "%2$s restored %1$s" : "%2$s поврати %1$s", - "Changed by %2$s" : "Изменио %2$s", - "Deleted by %2$s" : "Обрисао %2$s", - "Restored by %2$s" : "Повратио %2$s", + "Unlimited" : "Неограничено", "Upload (max. %s)" : "Отпремање (макс. %s)", "File handling" : "Руковање фајловима", "Maximum upload size" : "Највећа величина отпремања", "max. possible: " : "највише могуће:", "Save" : "Сачувај", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако користите PHP-FPM, промене се могу применити и тек после 5 минута.", + "Missing permissions to edit from here." : "Недостају дозволе да се мења одавде.", + "%s of %s used" : "%s од %s искоришћено", + "%s used" : "%s искоришћено", "Settings" : "Поставке", + "Show hidden files" : "Прикажи скривене фајлове", "WebDAV" : "ВебДАВ", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Користи ову адресу да <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">приступате Вашим фајловима преко ВебДАВа</a>", + "Uploading @" : "Отпремам @", + "Cancel upload" : "Откажи отпремање", "No files in here" : "Овде нема фајлова", "Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Select all" : "Означи све", - "Upload too large" : "Отпремање је превелико", + "Upload too large" : "Фајл за отпремање је превелики", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Фајлови које желите да отпремите превазилазе ограничење отпремања на овом серверу.", - "No favorites" : "Нема омиљених", + "No favorites yet" : "Још нема омиљених", "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", - "Text file" : "текстуални фајл", + "Shared with you" : "Дељено са вама", + "Shared with others" : "Дељено са осталима", + "Shared by link" : "Дељено путем везе", + "Tags" : "Ознаке", + "Deleted files" : "Обрисани фајлови", + "Text file" : "Tекстуални фајл", "New text file.txt" : "Нов текстуални фајл.txt", - "{newname} already exists" : "{newname} већ постоји" + "Uploading..." : "Отпремам…", + "..." : "...", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} сат преостао","{hours}:{minutes}:{seconds} сата преостала","{hours}:{minutes}:{seconds} сати преостало"], + "{hours}:{minutes}h" : "{hours}:{minutes}h", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} минут преостало","{minutes}:{seconds} минута преостало","{minutes}:{seconds} минута преостало "], + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} секунда преостала","{seconds} секунде преостало","{seconds} секунди преостало"], + "{seconds}s" : "{seconds}s", + "Any moment now..." : "Сваког тренутка...", + "Soon..." : "Ускоро...", + "File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.", + "Move" : "Премести", + "Copy local link" : "Копирај локалну везу", + "Folder" : "Фасцикла", + "Upload" : "Отпреми", + "A new file or folder has been <strong>deleted</strong>" : "Нови фајл или фасцикла су <strong>обрисани</strong>", + "A new file or folder has been <strong>restored</strong>" : "Нови фајл или фасцикла су <strong>враћени</strong>", + "No favorites" : "Нема омиљених" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 94ab1e4a65a..c8db7af7ab8 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -1,106 +1,160 @@ { "translations": { - "Storage not available" : "Складиште није доступно", + "Storage is temporarily not available" : "Складиште привремено није доступно", "Storage invalid" : "Неисправно складиште", "Unknown error" : "Непозната грешка", - "Unable to set upload directory." : "Не могу да поставим директоријум за отпремање.", - "Invalid Token" : "Неисправан токен", - "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 која је наведена у ХТМЛ обрасцу", - "The uploaded file was only partially uploaded" : "Отпремани фајл је само делимично отпремљен", - "No file was uploaded" : "Ништа није отпремљено", - "Missing a temporary folder" : "Недостаје привремена фасцикла", - "Failed to write to disk" : "Не могу да пишем на диск", - "Not enough storage available" : "Нема довољно простора", - "The target folder has been moved or deleted." : "Одредишна фасцикла је премештена или обрисана.", - "Upload failed. Could not find uploaded file" : "Неуспешно отпремање. Не могу да нађем отпремљени фајл", - "Upload failed. Could not get file info." : "Неуспешно отпремање. Не могу да добијем податке о фајлу.", - "Invalid directory." : "Неисправна фасцикла.", - "Files" : "Фајлови", "All files" : "Сви фајлови", + "Recent" : "Скорашње", + "File could not be found" : "Фајл није нађен", "Home" : "Почетна", "Close" : "Затвори", "Favorites" : "Омиљени", + "Could not create folder \"{dir}\"" : "Не могу да направим фасциклу \"{dir}\"", "Upload cancelled." : "Отпремање је отказано.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Не могу да отпремим {filename} јер је то директоријум или има 0 бајтова", - "Total file size {size1} exceeds upload limit {size2}" : "Величина {size1} превазилази ограничење за отпремање од {size2}", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Не могу да отпремим {filename} јер је то или директоријум или има 0 бајтова", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Нема простора. Отпремате {size1} али само {size2} је преостало", - "Could not get result from server." : "Не могу да добијем резултат са сервера.", - "Uploading..." : "Отпремам…", - "..." : "...", - "File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.", + "Target folder \"{dir}\" does not exist any more" : "Одредишна фасцикла \"{dir}\" више не постоји", + "Not enough free space" : "Нема довољно слободног места", + "Uploading …" : "Отпремам …", + "…" : "…", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} од {totalSize} ({bitrate})", "Actions" : "Радње", "Download" : "Преузми", "Rename" : "Преименуј", + "Move or copy" : "Помери или копирај", + "Target folder" : "Одредишна фасцикла", "Delete" : "Обриши", "Disconnect storage" : "Искључи складиште", - "Unshare" : "Не дели", - "Details" : "Подаци", + "Unshare" : "Укини дељење", + "Could not load info for file \"{file}\"" : "Не могу да учитам информације фајла \"{file}\"", + "Files" : "Фајлови", + "Details" : "Детаљи", "Select" : "Изабери", "Pending" : "На чекању", "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите записе или контактирајте администратора", - "No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'", + "Could not move \"{file}\", target exists" : "Не могу да померим \"{file}\", одредиште већ постоји", + "Could not move \"{file}\"" : "Не могу да померим \"{file}\"", + "Could not copy \"{file}\", target exists" : "Не могу да копирам \"{file}\", одредиште већ постоји", + "Could not copy \"{file}\"" : "Не могу да копирам \"{file}\"", + "Copied {origin} inside {destination}" : "Копиран {origin} у {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Копиран{origin} и још {nbfiles} других фајлова у {destination}", + "{newName} already exists" : "{newName} већ постоји", + "Could not rename \"{fileName}\", it does not exist any more" : "Не могу да преименујем \"{fileName}\", фајл више не постоји", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Име \"{targetName}\" се већ користи за фасциклу \"{dir}\". Одаберите неко друго име.", + "Could not rename \"{fileName}\"" : "Не могу да преименујем \"{fileName}\"", + "Could not create file \"{file}\"" : "Не могу да направим фајл \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Не могу да направим фајл \"{file}\" јер већ постоји", + "Could not create folder \"{dir}\" because it already exists" : "Не могу да направим фасциклу \"{dir}\" јер већ постоји", + "Error deleting file \"{fileName}\"." : "Грешка при брисању фајла \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Нема резултата претраге у осталим фасциклама за {tag}{filter}{endtag}", "Name" : "Назив", "Size" : "Величина", "Modified" : "Измењен", "_%n folder_::_%n folders_" : ["%n фасцикла","%n фасцикле","%n фасцикли"], "_%n file_::_%n files_" : ["%n фајл","%n фајла","%n фајлова"], "{dirs} and {files}" : "{dirs} и {files}", + "_including %n hidden_::_including %n hidden_" : ["укључујући и %n скривени","укључујући и %n скривена","укључујући и %n скривених"], "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", "_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"], "New" : "Ново", "\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.", "File name cannot be empty." : "Назив фајла не може бити празан.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" није дозвољени тип фајла", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!", "Your storage is full, files can not be updated or synced anymore!" : "Ваше складиште је пуно. Фајлови више не могу бити ажурирани ни синхронизовани!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Складиште корисника {owner} је скоро пуно ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ваше складиште је скоро пуно ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["се поклапа са '{filter}'","се поклапају са '{filter}'","се поклапа са '{filter}'"], + "View in folder" : "Види у фасцикли", + "Copied!" : "Копирано!", + "Copy direct link (only works for users who have access to this file/folder)" : "Копирај директну везу (ради само за кориснике који имају приступ овом фајлу/фасциклу)", "Path" : "Путања", - "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајта"], + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"], "Favorited" : "Омиљено", "Favorite" : "Омиљени", - "Folder" : "фасцикла", "New folder" : "Нова фасцикла", - "Upload" : "Отпреми", + "Upload file" : "Отпреми фајл", "An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака", + "Added to favorites" : "Додато у омиљено", + "Removed from favorites" : "Избачено из омиљених", + "You added {file} to your favorites" : "Додали сте {file} у омиљене", + "You removed {file} from your favorites" : "Избацили сте {file} из омиљених", + "File changes" : "Измене над фајлом", + "Created by {user}" : "Направио {user}", + "Changed by {user}" : "Изменио {user}", + "Deleted by {user}" : "Обрисао {user}", + "Restored by {user}" : "Повратио {user}", + "Renamed by {user}" : "Преименовао {user}", + "Moved by {user}" : "Померио {user}", + "\"remote user\"" : "„удаљени корисник“", + "You created {file}" : "Направили сте {file}", + "{user} created {file}" : "{user} је направио {file}", + "{file} was created in a public folder" : "{file} је направљен у јавној фасцикли", + "You changed {file}" : "Изменили сте {file}", + "{user} changed {file}" : "{user} је изменио {file}", + "You deleted {file}" : "Обрисали сте {file}", + "{user} deleted {file}" : "{user} је обрисао {file}", + "You restored {file}" : "Повратили сте {file}", + "{user} restored {file}" : "{user} је повратио {file}", + "You renamed {oldfile} to {newfile}" : "Преименовали сте {oldfile} на {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} је преименовао {oldfile} на {newfile}", + "You moved {oldfile} to {newfile}" : "Померили сте {oldfile} на {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} је померио {oldfile} на {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "Фајл је додат или избрисан из Ваших <strong>омиљених</strong>", + "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Фајл или фасцикла су <strong>измењени</strong> или <strong>преименовани</strong>", "A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>", - "A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничи обавештења о стварању и изменама на <strong>омиљене фајлове</strong> <em>(само у записнику)</em>", "A file or folder has been <strong>deleted</strong>" : "Фајл или фасцикла су <strong>обрисани</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ограничи обавештења о стварању и изменама на <strong>омиљене фајлове</strong> <em>(само у записнику)</em>", "A file or folder has been <strong>restored</strong>" : "Фајл или фасцикла су <strong>враћени</strong>", - "You created %1$s" : "Направили сте %1$s", - "%2$s created %1$s" : "%2$s направи %1$s", - "%1$s was created in a public folder" : "%1$s је направљен у јавној фасцикли", - "You changed %1$s" : "Изменили сте %1$s", - "%2$s changed %1$s" : "%2$s измени %1$s", - "You deleted %1$s" : "Обрисали сте %1$s", - "%2$s deleted %1$s" : "%2$s обриса %1$s", - "You restored %1$s" : "Вратили сте %1$s", - "%2$s restored %1$s" : "%2$s поврати %1$s", - "Changed by %2$s" : "Изменио %2$s", - "Deleted by %2$s" : "Обрисао %2$s", - "Restored by %2$s" : "Повратио %2$s", + "Unlimited" : "Неограничено", "Upload (max. %s)" : "Отпремање (макс. %s)", "File handling" : "Руковање фајловима", "Maximum upload size" : "Највећа величина отпремања", "max. possible: " : "највише могуће:", "Save" : "Сачувај", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако користите PHP-FPM, промене се могу применити и тек после 5 минута.", + "Missing permissions to edit from here." : "Недостају дозволе да се мења одавде.", + "%s of %s used" : "%s од %s искоришћено", + "%s used" : "%s искоришћено", "Settings" : "Поставке", + "Show hidden files" : "Прикажи скривене фајлове", "WebDAV" : "ВебДАВ", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Користи ову адресу да <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">приступате Вашим фајловима преко ВебДАВа</a>", + "Uploading @" : "Отпремам @", + "Cancel upload" : "Откажи отпремање", "No files in here" : "Овде нема фајлова", "Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Select all" : "Означи све", - "Upload too large" : "Отпремање је превелико", + "Upload too large" : "Фајл за отпремање је превелики", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Фајлови које желите да отпремите превазилазе ограничење отпремања на овом серверу.", - "No favorites" : "Нема омиљених", + "No favorites yet" : "Још нема омиљених", "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", - "Text file" : "текстуални фајл", + "Shared with you" : "Дељено са вама", + "Shared with others" : "Дељено са осталима", + "Shared by link" : "Дељено путем везе", + "Tags" : "Ознаке", + "Deleted files" : "Обрисани фајлови", + "Text file" : "Tекстуални фајл", "New text file.txt" : "Нов текстуални фајл.txt", - "{newname} already exists" : "{newname} већ постоји" + "Uploading..." : "Отпремам…", + "..." : "...", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} сат преостао","{hours}:{minutes}:{seconds} сата преостала","{hours}:{minutes}:{seconds} сати преостало"], + "{hours}:{minutes}h" : "{hours}:{minutes}h", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} минут преостало","{minutes}:{seconds} минута преостало","{minutes}:{seconds} минута преостало "], + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} секунда преостала","{seconds} секунде преостало","{seconds} секунди преостало"], + "{seconds}s" : "{seconds}s", + "Any moment now..." : "Сваког тренутка...", + "Soon..." : "Ускоро...", + "File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.", + "Move" : "Премести", + "Copy local link" : "Копирај локалну везу", + "Folder" : "Фасцикла", + "Upload" : "Отпреми", + "A new file or folder has been <strong>deleted</strong>" : "Нови фајл или фасцикла су <strong>обрисани</strong>", + "A new file or folder has been <strong>restored</strong>" : "Нови фајл или фасцикла су <strong>враћени</strong>", + "No favorites" : "Нема омиљених" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 82f0e7ace01..ef6e091ecc7 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Använd den här adressen för att <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">komma åt dina filer via WebDAV</a>", "Uploading @" : "Laddar upp @", + "Cancel upload" : "Avbryt uppladdning", "No files in here" : "Inga filer kunde hittas", "Upload some content or sync with your devices!" : "Ladda upp innehåll eller synkronisera med dina enheter!", "No entries found in this folder" : "Inget innehåll hittades i denna mapp", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 750d0814697..88b6d108dcb 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Använd den här adressen för att <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">komma åt dina filer via WebDAV</a>", "Uploading @" : "Laddar upp @", + "Cancel upload" : "Avbryt uppladdning", "No files in here" : "Inga filer kunde hittas", "Upload some content or sync with your devices!" : "Ladda upp innehåll eller synkronisera med dina enheter!", "No entries found in this folder" : "Inget innehåll hittades i denna mapp", diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index 960d81ed7c6..d5ee46c53b8 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Dosyalarınıza WebDAV üzerinden erişmek için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">bu adresi kullanın</a>", "Uploading @" : "Yükleniyor @", + "Cancel upload" : "Yüklemeyi iptal et", "No files in here" : "Burada herhangi bir dosya yok", "Upload some content or sync with your devices!" : "Bir şeyler yükleyin ya da aygıtlarınızla eşitleyin!", "No entries found in this folder" : "Bu klasörde herhangi bir kayıt bulunamadı", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 1a7d8b2cf8b..b63f114f80a 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Dosyalarınıza WebDAV üzerinden erişmek için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">bu adresi kullanın</a>", "Uploading @" : "Yükleniyor @", + "Cancel upload" : "Yüklemeyi iptal et", "No files in here" : "Burada herhangi bir dosya yok", "Upload some content or sync with your devices!" : "Bir şeyler yükleyin ya da aygıtlarınızla eşitleyin!", "No entries found in this folder" : "Bu klasörde herhangi bir kayıt bulunamadı", diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js index 01e6547304a..34c9c79b5a7 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -16,9 +16,12 @@ OC.L10N.register( "Not enough free space, you are uploading {size1} but only {size2} is left" : "Không đủ dung lượng trống, bạn đang tải {size1} nhưng chỉ còn {size2} trống", "Target folder \"{dir}\" does not exist any more" : "Thư mục đích \"{dir}\" không còn tồn tại", "Not enough free space" : "Không đủ dung lượng trống", + "Uploading …" : "Đang tải lên …", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} trong tổng số {totalSize} ({bitrate})", "Actions" : "Actions", "Download" : "Tải về", "Rename" : "Sửa tên", + "Move or copy" : "Di chuyển hoặc sao chép", "Target folder" : "Thư mục đích", "Delete" : "Xóa", "Disconnect storage" : "Bộ lưu trữ đã ngắt kết nối", @@ -33,6 +36,10 @@ OC.L10N.register( "This directory is unavailable, please check the logs or contact the administrator" : "Thư mục này không sẵn có, hãy kiểm tra log hoặc liên hệ người quản lý", "Could not move \"{file}\", target exists" : "Không thể di chuyển \"{file}\", trùng đích đến", "Could not move \"{file}\"" : "Không thể di chuyển \"{file}\"", + "Could not copy \"{file}\", target exists" : "Không thể sao chép \"{file}\", tệp tin đích đã tồn tại", + "Could not copy \"{file}\"" : "Không thể sao chép tệp tin \"{file}\"", + "Copied {origin} inside {destination}" : "Được sao chép {origin} vào trong {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Đã sao chép {origin} và {nbfiles} các file vào trong {destination}", "{newName} already exists" : "{newName} đã có", "Could not rename \"{fileName}\", it does not exist any more" : "Không thể đổi tên \"{fileName}\", tập tin không tồn tại", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Tên \"{targetName}\" đã được dùng trong thư mục \"{dir}\". Hãy thử tên khác", @@ -61,11 +68,14 @@ OC.L10N.register( "Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["khớp '{filter}'"], "View in folder" : "Xem trong thư mục", + "Copied!" : "Đã sao chép!", + "Copy direct link (only works for users who have access to this file/folder)" : "Sao chép liên kết trực tiếp (chỉ hoạt động đối với người dùng có quyền truy nhập tới tệp tin/thư mục này)", "Path" : "Đường dẫn", "_%n byte_::_%n bytes_" : ["%n bytes"], "Favorited" : "Được ưa thích", "Favorite" : "Ưu thích", "New folder" : "Tạo thư mục", + "Upload file" : "Tải lên tập tin", "An error occurred while trying to update the tags" : "Đã xảy ra lỗi khi cố gắng cập nhật tags", "Added to favorites" : "Đã thêm vào mục yêu thích", "Removed from favorites" : "Đã xóa khỏi mục ưa thích", @@ -78,6 +88,7 @@ OC.L10N.register( "Restored by {user}" : "Được khôi phục bởi {user}", "Renamed by {user}" : "Đã đổi tên bởi {user}", "Moved by {user}" : "Đã di chuyển bởi {user}", + "\"remote user\"" : "\"người dùng từ xa\"", "You created {file}" : "Bạn đã tạo {file}", "{user} created {file}" : "{user} đã tạo {file}", "{file} was created in a public folder" : "{file} đã được tạo trong một thư mục công khai", diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index 9efe90347ff..5bf200eb0a0 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -14,9 +14,12 @@ "Not enough free space, you are uploading {size1} but only {size2} is left" : "Không đủ dung lượng trống, bạn đang tải {size1} nhưng chỉ còn {size2} trống", "Target folder \"{dir}\" does not exist any more" : "Thư mục đích \"{dir}\" không còn tồn tại", "Not enough free space" : "Không đủ dung lượng trống", + "Uploading …" : "Đang tải lên …", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} trong tổng số {totalSize} ({bitrate})", "Actions" : "Actions", "Download" : "Tải về", "Rename" : "Sửa tên", + "Move or copy" : "Di chuyển hoặc sao chép", "Target folder" : "Thư mục đích", "Delete" : "Xóa", "Disconnect storage" : "Bộ lưu trữ đã ngắt kết nối", @@ -31,6 +34,10 @@ "This directory is unavailable, please check the logs or contact the administrator" : "Thư mục này không sẵn có, hãy kiểm tra log hoặc liên hệ người quản lý", "Could not move \"{file}\", target exists" : "Không thể di chuyển \"{file}\", trùng đích đến", "Could not move \"{file}\"" : "Không thể di chuyển \"{file}\"", + "Could not copy \"{file}\", target exists" : "Không thể sao chép \"{file}\", tệp tin đích đã tồn tại", + "Could not copy \"{file}\"" : "Không thể sao chép tệp tin \"{file}\"", + "Copied {origin} inside {destination}" : "Được sao chép {origin} vào trong {destination}", + "Copied {origin} and {nbfiles} other files inside {destination}" : "Đã sao chép {origin} và {nbfiles} các file vào trong {destination}", "{newName} already exists" : "{newName} đã có", "Could not rename \"{fileName}\", it does not exist any more" : "Không thể đổi tên \"{fileName}\", tập tin không tồn tại", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Tên \"{targetName}\" đã được dùng trong thư mục \"{dir}\". Hãy thử tên khác", @@ -59,11 +66,14 @@ "Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["khớp '{filter}'"], "View in folder" : "Xem trong thư mục", + "Copied!" : "Đã sao chép!", + "Copy direct link (only works for users who have access to this file/folder)" : "Sao chép liên kết trực tiếp (chỉ hoạt động đối với người dùng có quyền truy nhập tới tệp tin/thư mục này)", "Path" : "Đường dẫn", "_%n byte_::_%n bytes_" : ["%n bytes"], "Favorited" : "Được ưa thích", "Favorite" : "Ưu thích", "New folder" : "Tạo thư mục", + "Upload file" : "Tải lên tập tin", "An error occurred while trying to update the tags" : "Đã xảy ra lỗi khi cố gắng cập nhật tags", "Added to favorites" : "Đã thêm vào mục yêu thích", "Removed from favorites" : "Đã xóa khỏi mục ưa thích", @@ -76,6 +86,7 @@ "Restored by {user}" : "Được khôi phục bởi {user}", "Renamed by {user}" : "Đã đổi tên bởi {user}", "Moved by {user}" : "Đã di chuyển bởi {user}", + "\"remote user\"" : "\"người dùng từ xa\"", "You created {file}" : "Bạn đã tạo {file}", "{user} created {file}" : "{user} đã tạo {file}", "{file} was created in a public folder" : "{file} đã được tạo trong một thư mục công khai", diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 84bf822b471..97be741304e 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -124,6 +124,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>", "Uploading @" : "上传中", + "Cancel upload" : "取消上传", "No files in here" : "无文件", "Upload some content or sync with your devices!" : "上传或从您的设备中同步!", "No entries found in this folder" : "文件夹中无项目", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 42a8ea92093..b8630ae0b1e 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -122,6 +122,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>", "Uploading @" : "上传中", + "Cancel upload" : "取消上传", "No files in here" : "无文件", "Upload some content or sync with your devices!" : "上传或从您的设备中同步!", "No entries found in this folder" : "文件夹中无项目", diff --git a/apps/files/templates/appnavigation.php b/apps/files/templates/appnavigation.php index 09b02943688..8326fad73ea 100644 --- a/apps/files/templates/appnavigation.php +++ b/apps/files/templates/appnavigation.php @@ -11,7 +11,7 @@ </a> </li> <?php } ?> - <li id="quota" class="section pinned <?php + <li id="quota" class="pinned <?php if ($_['quota'] !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { ?>has-tooltip" title="<?php p($_['usage_relative'] . '%'); } ?>"> @@ -23,9 +23,8 @@ p($l->t('%s used', [$_['usage']])); } ?></p> <div class="quota-container"> - <div style="width:<?php p($_['usage_relative']);?>%" - <?php if($_['usage_relative'] > 80): ?>class="quota-warning"<?php endif; ?>> - </div> + <progress value="<?php p($_['usage_relative']); ?>" max="100" + <?php if($_['usage_relative'] > 80): ?> class="warn" <?php endif; ?>></progress> </div> </a> </li> diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php index f3b6759644c..46bd9351e39 100644 --- a/apps/files/templates/list.php +++ b/apps/files/templates/list.php @@ -4,7 +4,9 @@ <div id="uploadprogressbar"> <em class="label outer" style="display:none"><span class="desktop"><?php p($l->t('Uploading @'));?></span><span class="mobile"><?php p($l->t('…'));?></span></em> </div> - <input type="button" class="stop icon-close" style="display:none" value="" /> + <button class="stop icon-close" style="display:none"> + <span class="hidden-visually"><?php p($l->t('Cancel upload')) ?></span> + </button> </div> </div> <div id="file_action_panel"></div> diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php index c787f9eb8df..fdf882fa3fe 100644 --- a/apps/files/templates/simplelist.php +++ b/apps/files/templates/simplelist.php @@ -29,7 +29,7 @@ <a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t( 'Modified' )); ?></span><span class="sort-indicator"></span></a> <span class="selectedActions"><a href="" class="delete-selected"> <?php p($l->t('Delete'))?> - <img class="svg" alt="<?php p($l->t('Delete'))?>" + <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/delete.svg")); ?>" /> </a></span> </th> diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 30074ab179a..cb9b7ad6822 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -1129,14 +1129,21 @@ MountConfigListView.prototype = _.extend({ return; } var storage = new this._storageConfigClass(configId); - this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS); - storage.destroy({ - success: function() { - $tr.remove(); - }, - error: function() { - self.updateStatus($tr, StorageConfig.Status.ERROR); + OC.dialogs.confirm(t('files_external', 'Are you sure you want to delete this external storage', { + storage: this.mountPoint + }), t('files_external', 'Delete storage?'), function(confirm) { + if (confirm) { + self.updateStatus($tr, StorageConfig.Status.IN_PROGRESS); + + storage.destroy({ + success: function () { + $tr.remove(); + }, + error: function () { + self.updateStatus($tr, StorageConfig.Status.ERROR); + } + }); } }); }, diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js index a513da66028..078063a62fc 100644 --- a/apps/files_external/l10n/da.js +++ b/apps/files_external/l10n/da.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", "Admin defined" : "Bestemt af administrator", + "Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lager?", + "Delete storage?" : "Slet lager?", "Saved" : "Gemt", "Saving..." : "Gemmer...", "Save" : "Gem", diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json index dfd632a4074..048a779681a 100644 --- a/apps/files_external/l10n/da.json +++ b/apps/files_external/l10n/da.json @@ -12,6 +12,8 @@ "(group)" : "(gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", "Admin defined" : "Bestemt af administrator", + "Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lager?", + "Delete storage?" : "Slet lager?", "Saved" : "Gemt", "Saving..." : "Gemmer...", "Save" : "Gem", diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index bbedc900731..40126676f0a 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -1,23 +1,25 @@ OC.L10N.register( "files_external", { - "External storages" : "Externer Speicher", + "External storages" : "Externe Speicher", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel mit Sicherheitsschlüssel eingeben.", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Admin defined" : "Administrator festgelegt", + "Admin defined" : "Vom Administrator festgelegt", + "Are you sure you want to delete this external storage" : "Möchtest Du wirklich diesen externen Speicher löschen?", + "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving..." : "Speichere…", "Save" : "Speichern", - "Empty response from the server" : "Leere Antwort vom Server", + "Empty response from the server" : "Leere Antwort vom Server erhalten", "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", @@ -25,8 +27,8 @@ OC.L10N.register( "External mount error" : "Fehler beim Einbinden des externen Speichers", "external-storage" : "Externer Speicher", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen", - "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Einbindungspunkte sind nicht verbunden. Bitte klicke auf die roten Zeile(n) für weitere Informationen", + "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} Speicher an", "Username" : "Benutzername", "Password" : "Passwort", "Credentials saved" : "Anmeldeinformationen gespeichert", @@ -34,19 +36,19 @@ OC.L10N.register( "Credentials required" : "Anmeldeinformationen benötigt", "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", - "Invalid mount point" : "Ungültiger mount point", + "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", - "Not permitted to use backend \"%s\"" : "Nicht zulässig Backend \"%s\" zu verwenden", - "Not permitted to use authentication mechanism \"%s\"" : "verwende zulässigen Authentifizierungsmechanismus \"%s\" ", + "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", + "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend- Parameter", - "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus Parameter", + "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", - "Builtin" : "eingebaut", + "Builtin" : "Eingebaut", "None" : "Keine", "OAuth1" : "OAuth1", "App key" : "App-Schlüssel", @@ -76,7 +78,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", - "Secure https://" : "Sicherer HTTPS://", + "Secure https://" : "Sicheres https://", "FTP" : "FTP", "Host" : "Host", "Secure ftps://" : "Sicherer ftps://", @@ -92,20 +94,20 @@ OC.L10N.register( "SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung", "Username as share" : "Benutzername als Freigabe", "OpenStack Object Storage" : "Openstack-Objektspeicher", - "Service name" : "Service Name", - "Request timeout (seconds)" : "Anfrage -Timeout ( Sekunden)", + "Service name" : "Name des Dienstes", + "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", - "Storage type" : "Speicher-Typ", + "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", "Enable encryption" : "Verschlüsselung aktivieren", "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Freigaben einschalten", - "Check for changes" : "Auf Änderungen überprüfen", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", @@ -117,7 +119,7 @@ OC.L10N.register( "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", - "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:", + "Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:", "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Bitte sicherstellen, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Bitte sicherstellen, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", @@ -125,7 +127,7 @@ OC.L10N.register( "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", - "Storage with id \"%i\" is not user editable" : "Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", + "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive" }, diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index ece1c503b1c..c93ba785568 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -1,21 +1,23 @@ { "translations": { - "External storages" : "Externer Speicher", + "External storages" : "Externe Speicher", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel mit Sicherheitsschlüssel eingeben.", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Admin defined" : "Administrator festgelegt", + "Admin defined" : "Vom Administrator festgelegt", + "Are you sure you want to delete this external storage" : "Möchtest Du wirklich diesen externen Speicher löschen?", + "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving..." : "Speichere…", "Save" : "Speichern", - "Empty response from the server" : "Leere Antwort vom Server", + "Empty response from the server" : "Leere Antwort vom Server erhalten", "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", @@ -23,8 +25,8 @@ "External mount error" : "Fehler beim Einbinden des externen Speichers", "external-storage" : "Externer Speicher", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke auf die roten Zeile(n) für weitere Informationen", - "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} externen Bereitstellungspunkt ein", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Einbindungspunkte sind nicht verbunden. Bitte klicke auf die roten Zeile(n) für weitere Informationen", + "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} Speicher an", "Username" : "Benutzername", "Password" : "Passwort", "Credentials saved" : "Anmeldeinformationen gespeichert", @@ -32,19 +34,19 @@ "Credentials required" : "Anmeldeinformationen benötigt", "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", - "Invalid mount point" : "Ungültiger mount point", + "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", - "Not permitted to use backend \"%s\"" : "Nicht zulässig Backend \"%s\" zu verwenden", - "Not permitted to use authentication mechanism \"%s\"" : "verwende zulässigen Authentifizierungsmechanismus \"%s\" ", + "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", + "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend- Parameter", - "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus Parameter", + "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", - "Builtin" : "eingebaut", + "Builtin" : "Eingebaut", "None" : "Keine", "OAuth1" : "OAuth1", "App key" : "App-Schlüssel", @@ -74,7 +76,7 @@ "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", - "Secure https://" : "Sicherer HTTPS://", + "Secure https://" : "Sicheres https://", "FTP" : "FTP", "Host" : "Host", "Secure ftps://" : "Sicherer ftps://", @@ -90,20 +92,20 @@ "SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung", "Username as share" : "Benutzername als Freigabe", "OpenStack Object Storage" : "Openstack-Objektspeicher", - "Service name" : "Service Name", - "Request timeout (seconds)" : "Anfrage -Timeout ( Sekunden)", + "Service name" : "Name des Dienstes", + "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", - "Storage type" : "Speicher-Typ", + "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", "Enable encryption" : "Verschlüsselung aktivieren", "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Freigaben einschalten", - "Check for changes" : "Auf Änderungen überprüfen", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", @@ -115,7 +117,7 @@ "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", - "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:", + "Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:", "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Bitte sicherstellen, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Bitte sicherstellen, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", @@ -123,7 +125,7 @@ "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", - "Storage with id \"%i\" is not user editable" : "Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", + "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js index 20e63249418..6851466d426 100644 --- a/apps/files_external/l10n/de_DE.js +++ b/apps/files_external/l10n/de_DE.js @@ -1,19 +1,21 @@ OC.L10N.register( "files_external", { - "External storages" : "Externer Speicher", + "External storages" : "Externe Speicher", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte tragen Sie einen gültigen App-Key mit Secret ein.", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Admin defined" : "Administrator definiert", + "Admin defined" : "Vom Administrator festgelegt", + "Are you sure you want to delete this external storage" : "Möchten Sie wirklich diesen externen Speicher löschen?", + "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving..." : "Speichere …", "Save" : "Speichern", @@ -21,31 +23,31 @@ OC.L10N.register( "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", - "There was an error with message: " : "Ein Fehler ist aufgetreten:", - "External mount error" : "Externer Einhängefehler", - "external-storage" : "externer Speicher", + "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", + "External mount error" : "Fehler beim Einbinden des externen Speichers", + "external-storage" : "Externer Speicher", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen", - "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Einbindungspunkte sind nicht verbunden. Bitte klicken Sie auf die roten Zeile(n) für weitere Informationen", + "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Anmeldeinformationen für den {mount} Speicher an", "Username" : "Benutzername", "Password" : "Passwort", "Credentials saved" : "Zugangsdaten gespeichert", "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", "Credentials required" : "Zugangsdaten benötigt", - "Storage with ID \"%d\" not found" : "Speicher mit ID \"1 %d\" nicht gefunden", - "Invalid backend or authentication mechanism class" : "Ungültiges Backend oder falscher Authentifizierungsmodus", - "Invalid mount point" : "Ungültiger mount point", + "Storage with ID \"%d\" not found" : "Der Speicher mit ID \"1 %d\" nicht gefunden", + "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", + "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", - "Not permitted to use authentication mechanism \"%s\"" : "Nicht erlaubter Autentifizierungsmechanismus \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend-Parameter", - "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Autentifizierungs-Mechanismus Parameter", + "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", - "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" ist nicht durch den Benutzer editierbar", + "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", - "Secret key" : "geheimer Schlüssel", + "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", "OAuth1" : "OAuth1", @@ -54,7 +56,7 @@ OC.L10N.register( "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Client", - "OpenStack" : "Freihand", + "OpenStack" : "OpenStack", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", "Rackspace" : "Rackspace", @@ -94,11 +96,11 @@ OC.L10N.register( "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. %s konnte nicht hinzugefügt werden. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.", "No external storage configured" : "Kein externer Speicher konfiguriert", - "You can add external storages in the personal settings" : "Sie können externe Speicher in den persönlichen Einstellungen hinzufügen", + "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", @@ -116,8 +118,8 @@ OC.L10N.register( "Add storage" : "Speicher hinzufügen", "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", - "Allow users to mount external storage" : "Erlauben Sie den Benutzern externen Speicher hinzuzufügen", - "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:", + "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", + "Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:", "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Stellen Sie sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Stellen Sie sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", @@ -125,7 +127,7 @@ OC.L10N.register( "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", - "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID „%i“ ist nicht bearbeitbar durch Benutzer", + "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive" }, diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json index 55c9b31a8a2..22e359c0378 100644 --- a/apps/files_external/l10n/de_DE.json +++ b/apps/files_external/l10n/de_DE.json @@ -1,17 +1,19 @@ { "translations": { - "External storages" : "Externer Speicher", + "External storages" : "Externe Speicher", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte tragen Sie einen gültigen App-Key mit Secret ein.", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Admin defined" : "Administrator definiert", + "Admin defined" : "Vom Administrator festgelegt", + "Are you sure you want to delete this external storage" : "Möchten Sie wirklich diesen externen Speicher löschen?", + "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving..." : "Speichere …", "Save" : "Speichern", @@ -19,31 +21,31 @@ "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", - "There was an error with message: " : "Ein Fehler ist aufgetreten:", - "External mount error" : "Externer Einhängefehler", - "external-storage" : "externer Speicher", + "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", + "External mount error" : "Fehler beim Einbinden des externen Speichers", + "external-storage" : "Externer Speicher", "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Bereitstellungspunkte sind nicht angeschlossen. Bitte klicke Sie auf die roten Zeile(n) für weitere Informationen", - "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Zugangsdaten für den {mount} Speicher an", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Einige der konfigurierten externen Einbindungspunkte sind nicht verbunden. Bitte klicken Sie auf die roten Zeile(n) für weitere Informationen", + "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Anmeldeinformationen für den {mount} Speicher an", "Username" : "Benutzername", "Password" : "Passwort", "Credentials saved" : "Zugangsdaten gespeichert", "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", "Credentials required" : "Zugangsdaten benötigt", - "Storage with ID \"%d\" not found" : "Speicher mit ID \"1 %d\" nicht gefunden", - "Invalid backend or authentication mechanism class" : "Ungültiges Backend oder falscher Authentifizierungsmodus", - "Invalid mount point" : "Ungültiger mount point", + "Storage with ID \"%d\" not found" : "Der Speicher mit ID \"1 %d\" nicht gefunden", + "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", + "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", - "Not permitted to use authentication mechanism \"%s\"" : "Nicht erlaubter Autentifizierungsmechanismus \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend-Parameter", - "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Autentifizierungs-Mechanismus Parameter", + "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", - "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" ist nicht durch den Benutzer editierbar", + "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", - "Secret key" : "geheimer Schlüssel", + "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", "OAuth1" : "OAuth1", @@ -52,7 +54,7 @@ "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Client", - "OpenStack" : "Freihand", + "OpenStack" : "OpenStack", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", "Rackspace" : "Rackspace", @@ -92,11 +94,11 @@ "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. %s konnte nicht hinzugefügt werden. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.", "No external storage configured" : "Kein externer Speicher konfiguriert", - "You can add external storages in the personal settings" : "Sie können externe Speicher in den persönlichen Einstellungen hinzufügen", + "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", @@ -114,8 +116,8 @@ "Add storage" : "Speicher hinzufügen", "Advanced settings" : "Erweiterte Einstellungen", "Delete" : "Löschen", - "Allow users to mount external storage" : "Erlauben Sie den Benutzern externen Speicher hinzuzufügen", - "Allow users to mount the following external storage" : "Benutzern erlauben, den oder die folgenden externen Speicher einzubinden:", + "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", + "Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:", "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Stellen Sie sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Stellen Sie sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", @@ -123,7 +125,7 @@ "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", - "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID „%i“ ist nicht bearbeitbar durch Benutzer", + "Storage with id \"%i\" is not user editable" : "Der Speicher mit der ID \"%i\" kann nicht vom Benutzer bearbeitet werden", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js index fbfea11d96c..131c9af43ad 100644 --- a/apps/files_external/l10n/en_GB.js +++ b/apps/files_external/l10n/en_GB.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", "Admin defined" : "Admin defined", + "Are you sure you want to delete this external storage" : "Are you sure you want to delete this external storage", + "Delete storage?" : "Delete storage?", "Saved" : "Saved", "Saving..." : "Saving...", "Save" : "Save", diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json index 3f839a61a78..5c60ec6e344 100644 --- a/apps/files_external/l10n/en_GB.json +++ b/apps/files_external/l10n/en_GB.json @@ -12,6 +12,8 @@ "(group)" : "(group)", "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", "Admin defined" : "Admin defined", + "Are you sure you want to delete this external storage" : "Are you sure you want to delete this external storage", + "Delete storage?" : "Delete storage?", "Saved" : "Saved", "Saving..." : "Saving...", "Save" : "Save", diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index f3638a4b5f1..b980588862e 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", "Admin defined" : "Admin definido", + "Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres eliminar este almacenamiento externo?", + "Delete storage?" : "¿Borrar almacenamiento?", "Saved" : "Guardado", "Saving..." : "Guardando...", "Save" : "Guardar", diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index fcb9f1a8dc2..0c6ab09d88d 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -12,6 +12,8 @@ "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", "Admin defined" : "Admin definido", + "Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres eliminar este almacenamiento externo?", + "Delete storage?" : "¿Borrar almacenamiento?", "Saved" : "Guardado", "Saving..." : "Guardando...", "Save" : "Guardar", diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js index 938acfc399c..720a7c663d2 100644 --- a/apps/files_external/l10n/es_MX.js +++ b/apps/files_external/l10n/es_MX.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", "Admin defined" : "Administrador definido", + "Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?", + "Delete storage?" : "¿Borrar almacenamiento?", "Saved" : "Guardado", "Saving..." : "Guardando...", "Save" : "Guardar", diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json index 3572629ad05..59b9db811b3 100644 --- a/apps/files_external/l10n/es_MX.json +++ b/apps/files_external/l10n/es_MX.json @@ -12,6 +12,8 @@ "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", "Admin defined" : "Administrador definido", + "Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?", + "Delete storage?" : "¿Borrar almacenamiento?", "Saved" : "Guardado", "Saving..." : "Guardando...", "Save" : "Guardar", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 4448f521408..dee98fd65c6 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(groupe)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", "Admin defined" : "Défini par l'administrateur", + "Are you sure you want to delete this external storage" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?", + "Delete storage?" : "Supprimer ce support de stockage ?", "Saved" : "Sauvegardé", "Saving..." : "Enregistrement...", "Save" : "Enregistrer", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index b2b068cf703..d1834c87a23 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -12,6 +12,8 @@ "(group)" : "(groupe)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", "Admin defined" : "Défini par l'administrateur", + "Are you sure you want to delete this external storage" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?", + "Delete storage?" : "Supprimer ce support de stockage ?", "Saved" : "Sauvegardé", "Saving..." : "Enregistrement...", "Save" : "Enregistrer", diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index fab5290e492..e19f6a657db 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(gruppo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", "Admin defined" : "Definito dall'amministratore", + "Are you sure you want to delete this external storage" : "Sei sicuro di voler eliminare questa archiviazione esterna?", + "Delete storage?" : "Vuoi eliminare l'archiviazione?", "Saved" : "Salvato", "Saving..." : "Salvataggio in corso...", "Save" : "Salva", diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index 6f4a8e52ce1..ecb8d2082e6 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -12,6 +12,8 @@ "(group)" : "(gruppo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", "Admin defined" : "Definito dall'amministratore", + "Are you sure you want to delete this external storage" : "Sei sicuro di voler eliminare questa archiviazione esterna?", + "Delete storage?" : "Vuoi eliminare l'archiviazione?", "Saved" : "Salvato", "Saving..." : "Salvataggio in corso...", "Save" : "Salva", diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index 3e277383e89..944f3af56ec 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", "Admin defined" : "Admin-definert", + "Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lagringsplassen?", + "Delete storage?" : "Slett lagringsplass", "Saved" : "Lagret", "Saving..." : "Lagrer...", "Save" : "Lagre", diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index 8539841a28f..576cd2a6420 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -12,6 +12,8 @@ "(group)" : "(gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", "Admin defined" : "Admin-definert", + "Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lagringsplassen?", + "Delete storage?" : "Slett lagringsplass", "Saved" : "Lagret", "Saving..." : "Lagrer...", "Save" : "Lagre", diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index db215c56e40..912b0efb1c1 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grupa)", "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", "Admin defined" : "Zdefiniowane przez Administratora", + "Are you sure you want to delete this external storage" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?", + "Delete storage?" : "Usunąć magazyn?", "Saved" : "Zapisano", "Saving..." : "Zapisywanie...", "Save" : "Zapisz", diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index 7daea0dc69c..31da2302ee0 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -12,6 +12,8 @@ "(group)" : "(grupa)", "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", "Admin defined" : "Zdefiniowane przez Administratora", + "Are you sure you want to delete this external storage" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?", + "Delete storage?" : "Usunąć magazyn?", "Saved" : "Zapisano", "Saving..." : "Zapisywanie...", "Save" : "Zapisz", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 5521d0f616b..077b89e1cf7 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", "Admin defined" : "Definido pelo administrador", + "Are you sure you want to delete this external storage" : "Quer realmente excluir este armazenamento externo", + "Delete storage?" : "Excluir armazenamento?", "Saved" : "Salvo", "Saving..." : "Salvando...", "Save" : "Salvar", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index da7c8f304cf..f9472a5c79d 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -12,6 +12,8 @@ "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", "Admin defined" : "Definido pelo administrador", + "Are you sure you want to delete this external storage" : "Quer realmente excluir este armazenamento externo", + "Delete storage?" : "Excluir armazenamento?", "Saved" : "Salvo", "Saving..." : "Salvando...", "Save" : "Salvar", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index db51be07405..75e2e243589 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(группа)", "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", "Admin defined" : "Определено админом", + "Are you sure you want to delete this external storage" : "Действительно удалить это внешнее хранилище?", + "Delete storage?" : "Удалить хранилище?", "Saved" : "Сохранено", "Saving..." : "Сохранение...", "Save" : "Сохранить", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 520136f7520..27da77399f8 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -12,6 +12,8 @@ "(group)" : "(группа)", "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", "Admin defined" : "Определено админом", + "Are you sure you want to delete this external storage" : "Действительно удалить это внешнее хранилище?", + "Delete storage?" : "Удалить хранилище?", "Saved" : "Сохранено", "Saving..." : "Сохранение...", "Save" : "Сохранить", diff --git a/apps/files_external/l10n/sr.js b/apps/files_external/l10n/sr.js index fe9203fd9df..e32cb5222af 100644 --- a/apps/files_external/l10n/sr.js +++ b/apps/files_external/l10n/sr.js @@ -1,31 +1,74 @@ OC.L10N.register( "files_external", { - "Step 1 failed. Exception: %s" : "Корак 1 није успео. Изузетак: %s", - "Step 2 failed. Exception: %s" : "Корак 2 није успео. Изузетак: %s", - "External storage" : "Спољашње складиште", + "External storages" : "Спољашње складиште", "Personal" : "Лично", "System" : "Систем", "Grant access" : "Одобри приступ", + "Error configuring OAuth1" : "Грешка у подешавању OAuth1", + "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", + "Error configuring OAuth2" : "Грешка у подешавању OAuth2", "Generate keys" : "Генериши кључеве", "Error generating key pair" : "Грешка при генерисању пара кључева", "All users. Type to select user or group." : "Сви корисници. Куцајте за избор корисника или групе.", "(group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са NFD кодирањем (споро)", + "Admin defined" : "Дефинисао администратор", + "Are you sure you want to delete this external storage" : "Да ли стварно желите да обришете ово спољашње складиште?", + "Delete storage?" : "Обриши складиште?", "Saved" : "Сачувано", + "Saving..." : "Чувам...", + "Save" : "Сачувај", + "Empty response from the server" : "Празан одговор са сервера", + "Couldn't access. Please log out and in again to activate this mount point" : "Не могу да приступим. Одјавите се и пријавите поново да активирате ову тачку монтирања", + "Couldn't get the information from the remote server: {code} {type}" : "Не могу да дохватим информације са удаљеног сервера: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Не могу да дохватим листу спољних тачака монтирања: {type}", + "There was an error with message: " : "Догодила се грешка уз поруку:", + "External mount error" : "Спољна грешка при монтирању", + "external-storage" : "спољашње-складиште", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не могу да добавим листу тачака монтирања Виндоуз мрежних дискова: празан одговор са сервера", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Неке од конфигурисаних спољашњих тачака монтирања нису повезане. Кликните на црвени ред(ове) за више информација", + "Please enter the credentials for the {mount} mount" : "Унесите акредитиве за {mount} тачку монтирања", "Username" : "Корисничко име", "Password" : "Лозинка", - "Save" : "Сачувај", - "Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено", + "Credentials saved" : "Акредитиви снимљени", + "Credentials saving failed" : "Снимање акредитива није успело", + "Credentials required" : "Потребни акредитиви", + "Storage with ID \"%d\" not found" : "Складиште са идентификацијом \"%d\" није пронађено", + "Invalid backend or authentication mechanism class" : "Неисправан позадински механизам или начин провере идентитета", "Invalid mount point" : "Неисправна тачка монтирања", + "Objectstore forbidden" : "Забрањен приступ", "Invalid storage backend \"%s\"" : "Неисправна позадина складишта „%s“", + "Not permitted to use backend \"%s\"" : "Недозвољени коришћење позадине \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Недозвољено коришћене провере идентитета користећи \"%s\"", + "Unsatisfied backend parameters" : "Недостају параметри за позадински механизам", + "Unsatisfied authentication mechanism parameters" : "Недостају параметри за механизам провере идентитета", + "Insufficient data: %s" : "Недеовољно података: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Корисник не може да мења складиште са идентификацијом \"%d\"", + "Access key" : "Кључ за приступ", + "Secret key" : "Тајни кључ ", + "Builtin" : "Уграђено", "None" : "Ништа", + "OAuth1" : "OAuth1", "App key" : "Кључ апликације", "App secret" : "Тајна апликације", + "OAuth2" : "OAuth2", "Client ID" : "ИД клијента", "Client secret" : "Тајна клијента", + "OpenStack" : "OpenStack", + "Tenant name" : "Име OpenStack тенанта", + "Identity endpoint URL" : "УРЛ идентитета", + "Rackspace" : "Rackspace", "API key" : "API кључ", + "Global credentials" : "Глобални акредитиви", + "Log-in credentials, save in database" : "Акредитиви за пријаву, чувани у бази", + "Username and password" : "Корисничко име и лозинка", + "Log-in credentials, save in session" : "Акредитиви за пријаву, чувани у сесији", + "User entered, store in database" : "Корисник уноси, чува се у бази", + "RSA public key" : "RSA јавни кључ", "Public key" : "Јавни кључ", - "Amazon S3" : "Амазон С3", + "Amazon S3" : "Amazon S3", "Bucket" : "Канта", "Hostname" : "Име домаћина", "Port" : "Порт", @@ -36,45 +79,56 @@ OC.L10N.register( "URL" : "УРЛ", "Remote subfolder" : "Удаљена потфасцикла", "Secure https://" : "Сигурни https://", - "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Домаћин", "Secure ftps://" : "Сигурни ftps://", "Local" : "локална", "Location" : "Локација", - "ownCloud" : "оунКлауд", - "SFTP" : "СФТП", + "Nextcloud" : "Некстклауд", + "SFTP" : "SFTP", "Root" : "Корен", - "SFTP with secret key login" : "СФТП са пријавом помоћу тајног кључа", - "SMB / CIFS" : "ЦМБ/ЦИФС", + "SFTP with secret key login" : "SFTP са пријавом помоћу тајног кључа", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Дели", "Domain" : "Домен", - "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи оунКлауд пријаву", + "SMB / CIFS using OC login" : "SMB / CIFS користећи оунКлауд пријаву", "Username as share" : "Корисничко име као дељење", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Назив услуге", - "<b>Note:</b> " : "<b>Напомена:</b> ", - "<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." : "<b>Напомена:</b> cURL подршка за ПХП није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", - "<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." : "<b>Напомена:</b> ФТП подршка за ПХП није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Напомена:</b> „%s“ није инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "Request timeout (seconds)" : "Време захтева истекло (секунде)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "„%s“ није инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", "No external storage configured" : "Нема подешеног спољашњег складишта", - "You can add external storages in the personal settings" : "Можете додати спољна складишта у вашим личним подешавањима", + "You can add external storages in the personal settings" : "Можете додати спољашња складишта у вашим личним подешавањима", "Name" : "Назив", "Storage type" : "Тип складишта", - "Scope" : "Распон", + "Scope" : "Опсег", "Enable encryption" : "Укључи шифровање", "Enable previews" : "Укључи прегледе", "Enable sharing" : "Укључи дељење", - "Check for changes" : "Провери измене", + "Check for changes" : "Проверавај за измене", "Never" : "никад", "Once every direct access" : "једном при сваком директном приступу", - "External Storage" : "Спољашње складиште", "Folder name" : "Назив фасцикле", - "Authentication" : "Аутентификација", + "External storage" : "Спољашње складиште", + "Authentication" : "Провера идентитета", "Configuration" : "Подешавање", "Available for" : "Доступно за", "Add storage" : "Додај складиште", "Advanced settings" : "Напредне поставке", "Delete" : "Обриши", - "Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта" + "Allow users to mount external storage" : "Дозволи корисницима да монтирају спољашња складишта", + "Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Дохватање токена за захтеве није успело. Проверите да ли су апликативни кључ и тајна исправни.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Дохватање токена за приступ није успело. Проверите да ли су апликативни кључ и тајна исправни.", + "Step 1 failed. Exception: %s" : "Корак 1 није успео. Грешка: %s", + "Step 2 failed. Exception: %s" : "Корак 2 није успео. Грешка: %s", + "Dropbox App Configuration" : "Dropbox конфигурација апликације", + "Google Drive App Configuration" : "Google Drive конфигурација апликације", + "Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено", + "Storage with id \"%i\" is not user editable" : "Корисници не могу да мењају складиште са идентификацијом \"%i\"", + "Dropbox" : "Dropbox", + "Google Drive" : "Google Drive" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_external/l10n/sr.json b/apps/files_external/l10n/sr.json index 7449424a301..1f1a8b7dfe9 100644 --- a/apps/files_external/l10n/sr.json +++ b/apps/files_external/l10n/sr.json @@ -1,29 +1,72 @@ { "translations": { - "Step 1 failed. Exception: %s" : "Корак 1 није успео. Изузетак: %s", - "Step 2 failed. Exception: %s" : "Корак 2 није успео. Изузетак: %s", - "External storage" : "Спољашње складиште", + "External storages" : "Спољашње складиште", "Personal" : "Лично", "System" : "Систем", "Grant access" : "Одобри приступ", + "Error configuring OAuth1" : "Грешка у подешавању OAuth1", + "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", + "Error configuring OAuth2" : "Грешка у подешавању OAuth2", "Generate keys" : "Генериши кључеве", "Error generating key pair" : "Грешка при генерисању пара кључева", "All users. Type to select user or group." : "Сви корисници. Куцајте за избор корисника или групе.", "(group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са NFD кодирањем (споро)", + "Admin defined" : "Дефинисао администратор", + "Are you sure you want to delete this external storage" : "Да ли стварно желите да обришете ово спољашње складиште?", + "Delete storage?" : "Обриши складиште?", "Saved" : "Сачувано", + "Saving..." : "Чувам...", + "Save" : "Сачувај", + "Empty response from the server" : "Празан одговор са сервера", + "Couldn't access. Please log out and in again to activate this mount point" : "Не могу да приступим. Одјавите се и пријавите поново да активирате ову тачку монтирања", + "Couldn't get the information from the remote server: {code} {type}" : "Не могу да дохватим информације са удаљеног сервера: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Не могу да дохватим листу спољних тачака монтирања: {type}", + "There was an error with message: " : "Догодила се грешка уз поруку:", + "External mount error" : "Спољна грешка при монтирању", + "external-storage" : "спољашње-складиште", + "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не могу да добавим листу тачака монтирања Виндоуз мрежних дискова: празан одговор са сервера", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Неке од конфигурисаних спољашњих тачака монтирања нису повезане. Кликните на црвени ред(ове) за више информација", + "Please enter the credentials for the {mount} mount" : "Унесите акредитиве за {mount} тачку монтирања", "Username" : "Корисничко име", "Password" : "Лозинка", - "Save" : "Сачувај", - "Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено", + "Credentials saved" : "Акредитиви снимљени", + "Credentials saving failed" : "Снимање акредитива није успело", + "Credentials required" : "Потребни акредитиви", + "Storage with ID \"%d\" not found" : "Складиште са идентификацијом \"%d\" није пронађено", + "Invalid backend or authentication mechanism class" : "Неисправан позадински механизам или начин провере идентитета", "Invalid mount point" : "Неисправна тачка монтирања", + "Objectstore forbidden" : "Забрањен приступ", "Invalid storage backend \"%s\"" : "Неисправна позадина складишта „%s“", + "Not permitted to use backend \"%s\"" : "Недозвољени коришћење позадине \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Недозвољено коришћене провере идентитета користећи \"%s\"", + "Unsatisfied backend parameters" : "Недостају параметри за позадински механизам", + "Unsatisfied authentication mechanism parameters" : "Недостају параметри за механизам провере идентитета", + "Insufficient data: %s" : "Недеовољно података: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Корисник не може да мења складиште са идентификацијом \"%d\"", + "Access key" : "Кључ за приступ", + "Secret key" : "Тајни кључ ", + "Builtin" : "Уграђено", "None" : "Ништа", + "OAuth1" : "OAuth1", "App key" : "Кључ апликације", "App secret" : "Тајна апликације", + "OAuth2" : "OAuth2", "Client ID" : "ИД клијента", "Client secret" : "Тајна клијента", + "OpenStack" : "OpenStack", + "Tenant name" : "Име OpenStack тенанта", + "Identity endpoint URL" : "УРЛ идентитета", + "Rackspace" : "Rackspace", "API key" : "API кључ", + "Global credentials" : "Глобални акредитиви", + "Log-in credentials, save in database" : "Акредитиви за пријаву, чувани у бази", + "Username and password" : "Корисничко име и лозинка", + "Log-in credentials, save in session" : "Акредитиви за пријаву, чувани у сесији", + "User entered, store in database" : "Корисник уноси, чува се у бази", + "RSA public key" : "RSA јавни кључ", "Public key" : "Јавни кључ", - "Amazon S3" : "Амазон С3", + "Amazon S3" : "Amazon S3", "Bucket" : "Канта", "Hostname" : "Име домаћина", "Port" : "Порт", @@ -34,45 +77,56 @@ "URL" : "УРЛ", "Remote subfolder" : "Удаљена потфасцикла", "Secure https://" : "Сигурни https://", - "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Домаћин", "Secure ftps://" : "Сигурни ftps://", "Local" : "локална", "Location" : "Локација", - "ownCloud" : "оунКлауд", - "SFTP" : "СФТП", + "Nextcloud" : "Некстклауд", + "SFTP" : "SFTP", "Root" : "Корен", - "SFTP with secret key login" : "СФТП са пријавом помоћу тајног кључа", - "SMB / CIFS" : "ЦМБ/ЦИФС", + "SFTP with secret key login" : "SFTP са пријавом помоћу тајног кључа", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Дели", "Domain" : "Домен", - "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи оунКлауд пријаву", + "SMB / CIFS using OC login" : "SMB / CIFS користећи оунКлауд пријаву", "Username as share" : "Корисничко име као дељење", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Назив услуге", - "<b>Note:</b> " : "<b>Напомена:</b> ", - "<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." : "<b>Напомена:</b> cURL подршка за ПХП није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", - "<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." : "<b>Напомена:</b> ФТП подршка за ПХП није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Напомена:</b> „%s“ није инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "Request timeout (seconds)" : "Време захтева истекло (секунде)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "„%s“ није инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.", "No external storage configured" : "Нема подешеног спољашњег складишта", - "You can add external storages in the personal settings" : "Можете додати спољна складишта у вашим личним подешавањима", + "You can add external storages in the personal settings" : "Можете додати спољашња складишта у вашим личним подешавањима", "Name" : "Назив", "Storage type" : "Тип складишта", - "Scope" : "Распон", + "Scope" : "Опсег", "Enable encryption" : "Укључи шифровање", "Enable previews" : "Укључи прегледе", "Enable sharing" : "Укључи дељење", - "Check for changes" : "Провери измене", + "Check for changes" : "Проверавај за измене", "Never" : "никад", "Once every direct access" : "једном при сваком директном приступу", - "External Storage" : "Спољашње складиште", "Folder name" : "Назив фасцикле", - "Authentication" : "Аутентификација", + "External storage" : "Спољашње складиште", + "Authentication" : "Провера идентитета", "Configuration" : "Подешавање", "Available for" : "Доступно за", "Add storage" : "Додај складиште", "Advanced settings" : "Напредне поставке", "Delete" : "Обриши", - "Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта" + "Allow users to mount external storage" : "Дозволи корисницима да монтирају спољашња складишта", + "Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Дохватање токена за захтеве није успело. Проверите да ли су апликативни кључ и тајна исправни.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Дохватање токена за приступ није успело. Проверите да ли су апликативни кључ и тајна исправни.", + "Step 1 failed. Exception: %s" : "Корак 1 није успео. Грешка: %s", + "Step 2 failed. Exception: %s" : "Корак 2 није успео. Грешка: %s", + "Dropbox App Configuration" : "Dropbox конфигурација апликације", + "Google Drive App Configuration" : "Google Drive конфигурација апликације", + "Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено", + "Storage with id \"%i\" is not user editable" : "Корисници не могу да мењају складиште са идентификацијом \"%i\"", + "Dropbox" : "Dropbox", + "Google Drive" : "Google Drive" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js index afbc60a84a5..72d127e4b7b 100644 --- a/apps/files_external/l10n/sv.js +++ b/apps/files_external/l10n/sv.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grupp)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", "Admin defined" : "Admin definerad", + "Are you sure you want to delete this external storage" : "Är du säker att du vill ta bort denna externa lagringen", + "Delete storage?" : "Ta bort lagring?", "Saved" : "Sparad", "Saving..." : "Sparar...", "Save" : "Spara", diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json index c23b60bed48..8e335c0c5a2 100644 --- a/apps/files_external/l10n/sv.json +++ b/apps/files_external/l10n/sv.json @@ -12,6 +12,8 @@ "(group)" : "(grupp)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", "Admin defined" : "Admin definerad", + "Are you sure you want to delete this external storage" : "Är du säker att du vill ta bort denna externa lagringen", + "Delete storage?" : "Ta bort lagring?", "Saved" : "Sparad", "Saving..." : "Sparar...", "Save" : "Spara", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 2a879225e84..152963db282 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(grup)", "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", "Admin defined" : "Yönetici ayarlamış", + "Are you sure you want to delete this external storage" : "Bu dış depolamayı silmek istediğinize emin misiniz", + "Delete storage?" : "Depolama silinsin mi?", "Saved" : "Kaydedildi", "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 4fd06dd5d19..efa75513f54 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -12,6 +12,8 @@ "(group)" : "(grup)", "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", "Admin defined" : "Yönetici ayarlamış", + "Are you sure you want to delete this external storage" : "Bu dış depolamayı silmek istediğinize emin misiniz", + "Delete storage?" : "Depolama silinsin mi?", "Saved" : "Kaydedildi", "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js index 2eac6e70ad9..83aea82084c 100644 --- a/apps/files_external/l10n/zh_CN.js +++ b/apps/files_external/l10n/zh_CN.js @@ -14,6 +14,8 @@ OC.L10N.register( "(group)" : "(分组)", "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)", "Admin defined" : "管理员定义", + "Are you sure you want to delete this external storage" : "是否要删除该外部存储", + "Delete storage?" : "删除存储?", "Saved" : "已保存", "Saving..." : "正在保存...", "Save" : "保存", diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json index 9883dfa7a90..95705cc41dc 100644 --- a/apps/files_external/l10n/zh_CN.json +++ b/apps/files_external/l10n/zh_CN.json @@ -12,6 +12,8 @@ "(group)" : "(分组)", "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)", "Admin defined" : "管理员定义", + "Are you sure you want to delete this external storage" : "是否要删除该外部存储", + "Delete storage?" : "删除存储?", "Saved" : "已保存", "Saving..." : "正在保存...", "Save" : "保存", diff --git a/apps/files_sharing/composer/autoload.php b/apps/files_sharing/composer/autoload.php new file mode 100644 index 00000000000..3b046bff7f4 --- /dev/null +++ b/apps/files_sharing/composer/autoload.php @@ -0,0 +1,7 @@ +<?php + +// autoload.php @generated by Composer + +require_once __DIR__ . '/composer/autoload_real.php'; + +return ComposerAutoloaderInitf32f03f7cd82bff20d6a51be16689441::getLoader(); diff --git a/apps/files_sharing/composer/composer.json b/apps/files_sharing/composer/composer.json new file mode 100644 index 00000000000..4d2aae1d6e1 --- /dev/null +++ b/apps/files_sharing/composer/composer.json @@ -0,0 +1,12 @@ +{ + "config" : { + "vendor-dir": ".", + "optimize-autoloader": true, + "authorative-autoloader": true + }, + "autoload" : { + "psr-4": { + "OCA\\Files_Sharing\\": "../lib/" + } + } +} diff --git a/apps/files_sharing/composer/composer/ClassLoader.php b/apps/files_sharing/composer/composer/ClassLoader.php new file mode 100644 index 00000000000..2c72175e772 --- /dev/null +++ b/apps/files_sharing/composer/composer/ClassLoader.php @@ -0,0 +1,445 @@ +<?php + +/* + * This file is part of Composer. + * + * (c) Nils Adermann <naderman@naderman.de> + * Jordi Boggiano <j.boggiano@seld.be> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier <fabien@symfony.com> + * @author Jordi Boggiano <j.boggiano@seld.be> + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + foreach ($this->prefixDirsPsr4[$search] as $dir) { + $length = $this->prefixLengthsPsr4[$first][$search]; + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/apps/files_sharing/composer/composer/LICENSE b/apps/files_sharing/composer/composer/LICENSE new file mode 100644 index 00000000000..f27399a042d --- /dev/null +++ b/apps/files_sharing/composer/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php new file mode 100644 index 00000000000..48b9651a00d --- /dev/null +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -0,0 +1,56 @@ +<?php + +// autoload_classmap.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = $vendorDir; + +return array( + 'OCA\\Files_Sharing\\Activity\\Filter' => $baseDir . '/../lib/Activity/Filter.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Base' => $baseDir . '/../lib/Activity/Providers/Base.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Downloads' => $baseDir . '/../lib/Activity/Providers/Downloads.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Groups' => $baseDir . '/../lib/Activity/Providers/Groups.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\PublicLinks' => $baseDir . '/../lib/Activity/Providers/PublicLinks.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\RemoteShares' => $baseDir . '/../lib/Activity/Providers/RemoteShares.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Users' => $baseDir . '/../lib/Activity/Providers/Users.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\PublicLinks' => $baseDir . '/../lib/Activity/Settings/PublicLinks.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\RemoteShare' => $baseDir . '/../lib/Activity/Settings/RemoteShare.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\Shared' => $baseDir . '/../lib/Activity/Settings/Shared.php', + 'OCA\\Files_Sharing\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', + 'OCA\\Files_Sharing\\Cache' => $baseDir . '/../lib/Cache.php', + 'OCA\\Files_Sharing\\Capabilities' => $baseDir . '/../lib/Capabilities.php', + 'OCA\\Files_Sharing\\Command\\CleanupRemoteStorages' => $baseDir . '/../lib/Command/CleanupRemoteStorages.php', + 'OCA\\Files_Sharing\\Controller\\ExternalSharesController' => $baseDir . '/../lib/Controller/ExternalSharesController.php', + 'OCA\\Files_Sharing\\Controller\\PublicPreviewController' => $baseDir . '/../lib/Controller/PublicPreviewController.php', + 'OCA\\Files_Sharing\\Controller\\RemoteController' => $baseDir . '/../lib/Controller/RemoteController.php', + 'OCA\\Files_Sharing\\Controller\\ShareAPIController' => $baseDir . '/../lib/Controller/ShareAPIController.php', + 'OCA\\Files_Sharing\\Controller\\ShareController' => $baseDir . '/../lib/Controller/ShareController.php', + 'OCA\\Files_Sharing\\Controller\\ShareInfoController' => $baseDir . '/../lib/Controller/ShareInfoController.php', + 'OCA\\Files_Sharing\\Controller\\ShareesAPIController' => $baseDir . '/../lib/Controller/ShareesAPIController.php', + 'OCA\\Files_Sharing\\DeleteOrphanedSharesJob' => $baseDir . '/../lib/DeleteOrphanedSharesJob.php', + 'OCA\\Files_Sharing\\Exceptions\\BrokenPath' => $baseDir . '/../lib/Exceptions/BrokenPath.php', + 'OCA\\Files_Sharing\\Exceptions\\S2SException' => $baseDir . '/../lib/Exceptions/S2SException.php', + 'OCA\\Files_Sharing\\ExpireSharesJob' => $baseDir . '/../lib/ExpireSharesJob.php', + 'OCA\\Files_Sharing\\External\\Cache' => $baseDir . '/../lib/External/Cache.php', + 'OCA\\Files_Sharing\\External\\Manager' => $baseDir . '/../lib/External/Manager.php', + 'OCA\\Files_Sharing\\External\\Mount' => $baseDir . '/../lib/External/Mount.php', + 'OCA\\Files_Sharing\\External\\MountProvider' => $baseDir . '/../lib/External/MountProvider.php', + 'OCA\\Files_Sharing\\External\\Scanner' => $baseDir . '/../lib/External/Scanner.php', + 'OCA\\Files_Sharing\\External\\Storage' => $baseDir . '/../lib/External/Storage.php', + 'OCA\\Files_Sharing\\External\\Watcher' => $baseDir . '/../lib/External/Watcher.php', + 'OCA\\Files_Sharing\\Helper' => $baseDir . '/../lib/Helper.php', + 'OCA\\Files_Sharing\\Hooks' => $baseDir . '/../lib/Hooks.php', + 'OCA\\Files_Sharing\\ISharedStorage' => $baseDir . '/../lib/ISharedStorage.php', + 'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => $baseDir . '/../lib/Middleware/OCSShareAPIMiddleware.php', + 'OCA\\Files_Sharing\\Middleware\\ShareInfoMiddleware' => $baseDir . '/../lib/Middleware/ShareInfoMiddleware.php', + 'OCA\\Files_Sharing\\Middleware\\SharingCheckMiddleware' => $baseDir . '/../lib/Middleware/SharingCheckMiddleware.php', + 'OCA\\Files_Sharing\\Migration\\OwncloudGuestShareType' => $baseDir . '/../lib/Migration/OwncloudGuestShareType.php', + 'OCA\\Files_Sharing\\Migration\\SetPasswordColumn' => $baseDir . '/../lib/Migration/SetPasswordColumn.php', + 'OCA\\Files_Sharing\\MountProvider' => $baseDir . '/../lib/MountProvider.php', + 'OCA\\Files_Sharing\\Scanner' => $baseDir . '/../lib/Scanner.php', + 'OCA\\Files_Sharing\\ShareBackend\\File' => $baseDir . '/../lib/ShareBackend/File.php', + 'OCA\\Files_Sharing\\ShareBackend\\Folder' => $baseDir . '/../lib/ShareBackend/Folder.php', + 'OCA\\Files_Sharing\\SharedMount' => $baseDir . '/../lib/SharedMount.php', + 'OCA\\Files_Sharing\\SharedStorage' => $baseDir . '/../lib/SharedStorage.php', + 'OCA\\Files_Sharing\\Updater' => $baseDir . '/../lib/Updater.php', +); diff --git a/apps/files_sharing/composer/composer/autoload_namespaces.php b/apps/files_sharing/composer/composer/autoload_namespaces.php new file mode 100644 index 00000000000..71c9e91858d --- /dev/null +++ b/apps/files_sharing/composer/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ +<?php + +// autoload_namespaces.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = $vendorDir; + +return array( +); diff --git a/apps/files_sharing/composer/composer/autoload_psr4.php b/apps/files_sharing/composer/composer/autoload_psr4.php new file mode 100644 index 00000000000..9fb758e4059 --- /dev/null +++ b/apps/files_sharing/composer/composer/autoload_psr4.php @@ -0,0 +1,10 @@ +<?php + +// autoload_psr4.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = $vendorDir; + +return array( + 'OCA\\Files_Sharing\\' => array($baseDir . '/../lib'), +); diff --git a/apps/files_sharing/composer/composer/autoload_real.php b/apps/files_sharing/composer/composer/autoload_real.php new file mode 100644 index 00000000000..fc2e3dcfcb0 --- /dev/null +++ b/apps/files_sharing/composer/composer/autoload_real.php @@ -0,0 +1,52 @@ +<?php + +// autoload_real.php @generated by Composer + +class ComposerAutoloaderInitf32f03f7cd82bff20d6a51be16689441 +{ + private static $loader; + + public static function loadClassLoader($class) + { + if ('Composer\Autoload\ClassLoader' === $class) { + require __DIR__ . '/ClassLoader.php'; + } + } + + public static function getLoader() + { + if (null !== self::$loader) { + return self::$loader; + } + + spl_autoload_register(array('ComposerAutoloaderInitf32f03f7cd82bff20d6a51be16689441', 'loadClassLoader'), true, true); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(); + spl_autoload_unregister(array('ComposerAutoloaderInitf32f03f7cd82bff20d6a51be16689441', 'loadClassLoader')); + + $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitf32f03f7cd82bff20d6a51be16689441::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php new file mode 100644 index 00000000000..caabc5d50a3 --- /dev/null +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -0,0 +1,82 @@ +<?php + +// autoload_static.php @generated by Composer + +namespace Composer\Autoload; + +class ComposerStaticInitf32f03f7cd82bff20d6a51be16689441 +{ + public static $prefixLengthsPsr4 = array ( + 'O' => + array ( + 'OCA\\Files_Sharing\\' => 18, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'OCA\\Files_Sharing\\' => + array ( + 0 => __DIR__ . '/..' . '/../lib', + ), + ); + + public static $classMap = array ( + 'OCA\\Files_Sharing\\Activity\\Filter' => __DIR__ . '/..' . '/../lib/Activity/Filter.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Base' => __DIR__ . '/..' . '/../lib/Activity/Providers/Base.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Downloads' => __DIR__ . '/..' . '/../lib/Activity/Providers/Downloads.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Groups' => __DIR__ . '/..' . '/../lib/Activity/Providers/Groups.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\PublicLinks' => __DIR__ . '/..' . '/../lib/Activity/Providers/PublicLinks.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\RemoteShares' => __DIR__ . '/..' . '/../lib/Activity/Providers/RemoteShares.php', + 'OCA\\Files_Sharing\\Activity\\Providers\\Users' => __DIR__ . '/..' . '/../lib/Activity/Providers/Users.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\PublicLinks' => __DIR__ . '/..' . '/../lib/Activity/Settings/PublicLinks.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\RemoteShare' => __DIR__ . '/..' . '/../lib/Activity/Settings/RemoteShare.php', + 'OCA\\Files_Sharing\\Activity\\Settings\\Shared' => __DIR__ . '/..' . '/../lib/Activity/Settings/Shared.php', + 'OCA\\Files_Sharing\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', + 'OCA\\Files_Sharing\\Cache' => __DIR__ . '/..' . '/../lib/Cache.php', + 'OCA\\Files_Sharing\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php', + 'OCA\\Files_Sharing\\Command\\CleanupRemoteStorages' => __DIR__ . '/..' . '/../lib/Command/CleanupRemoteStorages.php', + 'OCA\\Files_Sharing\\Controller\\ExternalSharesController' => __DIR__ . '/..' . '/../lib/Controller/ExternalSharesController.php', + 'OCA\\Files_Sharing\\Controller\\PublicPreviewController' => __DIR__ . '/..' . '/../lib/Controller/PublicPreviewController.php', + 'OCA\\Files_Sharing\\Controller\\RemoteController' => __DIR__ . '/..' . '/../lib/Controller/RemoteController.php', + 'OCA\\Files_Sharing\\Controller\\ShareAPIController' => __DIR__ . '/..' . '/../lib/Controller/ShareAPIController.php', + 'OCA\\Files_Sharing\\Controller\\ShareController' => __DIR__ . '/..' . '/../lib/Controller/ShareController.php', + 'OCA\\Files_Sharing\\Controller\\ShareInfoController' => __DIR__ . '/..' . '/../lib/Controller/ShareInfoController.php', + 'OCA\\Files_Sharing\\Controller\\ShareesAPIController' => __DIR__ . '/..' . '/../lib/Controller/ShareesAPIController.php', + 'OCA\\Files_Sharing\\DeleteOrphanedSharesJob' => __DIR__ . '/..' . '/../lib/DeleteOrphanedSharesJob.php', + 'OCA\\Files_Sharing\\Exceptions\\BrokenPath' => __DIR__ . '/..' . '/../lib/Exceptions/BrokenPath.php', + 'OCA\\Files_Sharing\\Exceptions\\S2SException' => __DIR__ . '/..' . '/../lib/Exceptions/S2SException.php', + 'OCA\\Files_Sharing\\ExpireSharesJob' => __DIR__ . '/..' . '/../lib/ExpireSharesJob.php', + 'OCA\\Files_Sharing\\External\\Cache' => __DIR__ . '/..' . '/../lib/External/Cache.php', + 'OCA\\Files_Sharing\\External\\Manager' => __DIR__ . '/..' . '/../lib/External/Manager.php', + 'OCA\\Files_Sharing\\External\\Mount' => __DIR__ . '/..' . '/../lib/External/Mount.php', + 'OCA\\Files_Sharing\\External\\MountProvider' => __DIR__ . '/..' . '/../lib/External/MountProvider.php', + 'OCA\\Files_Sharing\\External\\Scanner' => __DIR__ . '/..' . '/../lib/External/Scanner.php', + 'OCA\\Files_Sharing\\External\\Storage' => __DIR__ . '/..' . '/../lib/External/Storage.php', + 'OCA\\Files_Sharing\\External\\Watcher' => __DIR__ . '/..' . '/../lib/External/Watcher.php', + 'OCA\\Files_Sharing\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php', + 'OCA\\Files_Sharing\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php', + 'OCA\\Files_Sharing\\ISharedStorage' => __DIR__ . '/..' . '/../lib/ISharedStorage.php', + 'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/OCSShareAPIMiddleware.php', + 'OCA\\Files_Sharing\\Middleware\\ShareInfoMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/ShareInfoMiddleware.php', + 'OCA\\Files_Sharing\\Middleware\\SharingCheckMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/SharingCheckMiddleware.php', + 'OCA\\Files_Sharing\\Migration\\OwncloudGuestShareType' => __DIR__ . '/..' . '/../lib/Migration/OwncloudGuestShareType.php', + 'OCA\\Files_Sharing\\Migration\\SetPasswordColumn' => __DIR__ . '/..' . '/../lib/Migration/SetPasswordColumn.php', + 'OCA\\Files_Sharing\\MountProvider' => __DIR__ . '/..' . '/../lib/MountProvider.php', + 'OCA\\Files_Sharing\\Scanner' => __DIR__ . '/..' . '/../lib/Scanner.php', + 'OCA\\Files_Sharing\\ShareBackend\\File' => __DIR__ . '/..' . '/../lib/ShareBackend/File.php', + 'OCA\\Files_Sharing\\ShareBackend\\Folder' => __DIR__ . '/..' . '/../lib/ShareBackend/Folder.php', + 'OCA\\Files_Sharing\\SharedMount' => __DIR__ . '/..' . '/../lib/SharedMount.php', + 'OCA\\Files_Sharing\\SharedStorage' => __DIR__ . '/..' . '/../lib/SharedStorage.php', + 'OCA\\Files_Sharing\\Updater' => __DIR__ . '/..' . '/../lib/Updater.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitf32f03f7cd82bff20d6a51be16689441::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitf32f03f7cd82bff20d6a51be16689441::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitf32f03f7cd82bff20d6a51be16689441::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index cb13956f91b..63d9a8399d9 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -1,43 +1,115 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "La compartició entre servidors no està activada en aquest servidor", - "Invalid or untrusted SSL certificate" : "El certificat SSL és invàlid o no és fiable", - "Storage not valid" : "Emmagatzemament no valit", - "Couldn't add remote share" : "No s'ha pogut afegir una compartició remota", "Shared with you" : "Us han compartit", "Shared with others" : "Heu compartit", "Shared by link" : "Compartit amb enllaç", + "Nothing shared with you yet" : "No s'ha compartit res amb vosté, encara", + "Files and folders others share with you will show up here" : "Els arxius i carpetes que altres comparteixin amb vosté es mostraran aquí", + "Nothing shared yet" : "No s'ha compartit res, encara", + "Files and folders you share will show up here" : "Els arxius i carpetes que vosté comparteixi es mostraran aquí", "No shared links" : "no hi ha enllaços compartits", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voleu afegir la compartició remota {nom} des de {owner}@{remote}?", - "Remote share" : "Compartició remota", - "Remote share password" : "Contrasenya de compartició remota", - "Cancel" : "Cancel·la", - "Add remote share" : "Afegeix compartició remota", - "Invalid ownCloud url" : "La url d'ownCloud no és vàlida", + "Files and folders you share by link will show up here" : "Els arxius i les carpetes que vosté ha compartit per link es mostraran aquí", + "You can upload into this folder" : "Pots pujar dins d'aquesta carpeta", + "No compatible server found at {remote}" : "No s'ha trobat cap servidor compatible a {remote}", + "Invalid server URL" : "Direcció del servidor invàlida", + "Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al teu Nextcloud", + "Share" : "Comparteix", + "No expiration date set" : "No s'ha establert cap data de caducitat", "Shared by" : "Compartit per", "Sharing" : "Compartir", + "File shares" : "Arxius compartits", + "Downloaded via public link" : "Descarregat mitjançant enllaç públic", + "Downloaded by {email}" : "Descarregat per {email}", + "{file} downloaded via public link" : "{file} descarregat mitjançant enllaç públic", + "{email} downloaded {file}" : "{email} descarregat {file}", + "Shared with group {group}" : "Compartit amb el grup {group}", + "Removed share for group {group}" : "S'ha eliminat la part per al grup {group}", + "{actor} shared with group {group}" : "{actor} ha compartit amb el grup {group}", + "{actor} removed share for group {group}" : "{actor} ha tret la part compartida del grup {grup}", + "You shared {file} with group {group}" : "Has compartit {file} amb el grup {group}", + "You removed group {group} from {file}" : "Heu eliminat el grup {group} de {file}", + "{actor} shared {file} with group {group}" : "{actor} ha compartit {file} amb el grup {group}", + "{actor} removed group {group} from {file}" : "{actor} ha eliminat el grup {group} de {file}", + "Shared as public link" : "Compartit com a enllaç públic", + "Removed public link" : "S'ha suprimit l'enllaç públic", + "Public link expired" : "L'enllaç públic ha caducat", + "{actor} shared as public link" : "{actor} ha compartit com a enllaç públic", + "{actor} removed public link" : "{actor} ha eliminat l'enllaç públic", + "Public link of {actor} expired" : "El vincle públic de {actor} ha caducat", + "You shared {file} as public link" : "Has compartit {file} com a enllaç públic", + "You removed public link for {file}" : "Heu eliminat l'enllaç públic per a {file}", + "Public link expired for {file}" : "L'enllaç públic ha caducat per {file}", + "{actor} shared {file} as public link" : "{actor} ha compartit {file} com a enllaç públic", + "{actor} removed public link for {file}" : "{actor} ha eliminat l'enllaç públic per a {file}", + "Public link of {actor} for {file} expired" : "El vincle públic de {actor} per {file} ha caducat", + "{user} accepted the remote share" : "{usuari} ha acceptat el recompte remot", + "{user} declined the remote share" : "{usuari} ha rebutjat el recompte remot", + "You received a new remote share {file} from {user}" : "Heu rebut una nova compartició remota {file} de {user}", + "{user} accepted the remote share of {file}" : "{usuari} ha acceptat la part remota de {file}", + "{user} declined the remote share of {file}" : "{usuari} ha denegat la part remota de {file}", + "{user} unshared {file} from you" : "{user} ha deixat de compartir {file}", + "Shared with {user}" : "Compartit amb {user}", + "Removed share for {user}" : "S'ha suprimit la part per {user}", + "{actor} shared with {user}" : "{actor} compartit amb {usuari}", + "{actor} removed share for {user}" : "{actor} ha tret la part compartida per {user}", + "Shared by {actor}" : "Compartit per {actor}", + "{actor} removed share" : "{actor} ha tret part", + "You shared {file} with {user}" : "Has compartit {file} amb {user}", + "You removed {user} from {file}" : "Heu eliminat {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} ha compartit {file} amb {usuari}", + "{actor} removed {user} from {file}" : "{actor} ha tret {user} de {file}", + "{actor} shared {file} with you" : "{actor} ha compartit {file} amb tu", + "{actor} removed you from {file}" : "{actor} t'ha eliminat de {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "S'ha <strong> baixat </strong> un fitxer o carpeta compartit per correu o per enllaç públic", + "A file or folder was shared from <strong>another server</strong>" : "S'ha compartit un fitxer o una carpeta d'un <strong> altre servidor</strong>", "A file or folder has been <strong>shared</strong>" : "S'ha <strong>compartit</strong> un fitxer o una carpeta", - "You shared %1$s with %2$s" : "Has compartit %1$s amb %2$s", - "You shared %1$s with group %2$s" : "has compartit %1$s amb el grup %2$s", - "You shared %1$s via link" : "Heu compartit %1$s via enllaç", - "%2$s shared %1$s with you" : "%2$s ha compartit %1$s amb tu", - "Shares" : "Compartits", + "Wrong share ID, share doesn't exist" : "L'identificador d'accions incorrecte, el compartir no existeix", + "could not delete share" : "No s'ha pogut suprimir la compartició", + "Could not delete share" : "No s'ha pogut suprimir la compartició", + "Please specify a file or folder path" : "Especifiqueu una ruta de fitxer o carpeta", + "Wrong path, file/folder doesn't exist" : "La ruta, el fitxer o la carpeta incorrectes no existeixen", + "Could not create share" : "No s'ha pogut crear la compartició", + "invalid permissions" : "Permisos invàlids", + "Please specify a valid user" : "Especifiqueu un usuari vàlid", + "Group sharing is disabled by the administrator" : "L'administrador ha desactivat l'opció per compartir grups", + "Please specify a valid group" : "Especifiqueu un grup vàlid", + "Public link sharing is disabled by the administrator" : "L'administrador ha desactivat l'intercanvi d'enllaços públics", + "Public upload disabled by the administrator" : "S'ha desactivat la càrrega pública per part de l'administrador", + "Public upload is only possible for publicly shared folders" : "La càrrega pública només és possible per a carpetes compartides públicament", + "Invalid date, date format must be YYYY-MM-DD" : "La data no vàlida, el format de la data ha de ser AAAA-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "S'ha produït un error en compartir %s perquè la part posterior no permet que les accions del tipus%s", + "You cannot share to a Circle if the app is not enabled" : "No podeu compartir en un cercle si l'aplicació no està habilitada", + "Please specify a valid circle" : "Especifiqueu un cercle vàlid", + "Unknown share type" : "Tipus d'acció desconegut", + "Not a directory" : "No és un directori", + "Could not lock path" : "No s'ha pogut bloquejar la ruta d'accés", + "Wrong or no update parameter given" : "S'ha donat un paràmetre d'actualització incorrecte o no", + "Can't change permissions for public share links" : "No es poden canviar els permisos per als enllaços compartits públics", + "Cannot increase permissions" : "No es poden augmentar els permisos", + "%s is publicly shared" : "%s es publica públicament", + "Share API is disabled" : "L'API compartida està desactivada", "This share is password-protected" : "Aquest compartit està protegit amb contrasenya", "The password is wrong. Try again." : "la contrasenya és incorrecta. Intenteu-ho de nou.", "Password" : "Contrasenya", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Name" : "Nom", "Share time" : "Temps de compartició", + "Expiration date" : "Data d'expiració", "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.", "Reasons might be:" : "Les raons podrien ser:", "the item was removed" : "l'element ha estat eliminat", "the link expired" : "l'enllaç ha vençut", "sharing is disabled" : "s'ha desactivat la compartició", "For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.", - "Add to your ownCloud" : "Afegiu a ownCloud", + "shared by %s" : "compartit per %s", + "Add to your Nextcloud" : "Afegeix al teu NextCloud", "Download" : "Baixa", "Download %s" : "Baixa %s", - "Direct link" : "Enllaç directe" + "Direct link" : "Enllaç directe", + "Upload files to %s" : "Carrega fitxers a %s", + "Select or drop files" : "Selecciona o deixa anar els fitxers", + "Uploading files…" : "Pujant arxius...", + "Uploaded files:" : "Arxius pujats:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index fa80c60befb..e04d1c72556 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -1,41 +1,113 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "La compartició entre servidors no està activada en aquest servidor", - "Invalid or untrusted SSL certificate" : "El certificat SSL és invàlid o no és fiable", - "Storage not valid" : "Emmagatzemament no valit", - "Couldn't add remote share" : "No s'ha pogut afegir una compartició remota", "Shared with you" : "Us han compartit", "Shared with others" : "Heu compartit", "Shared by link" : "Compartit amb enllaç", + "Nothing shared with you yet" : "No s'ha compartit res amb vosté, encara", + "Files and folders others share with you will show up here" : "Els arxius i carpetes que altres comparteixin amb vosté es mostraran aquí", + "Nothing shared yet" : "No s'ha compartit res, encara", + "Files and folders you share will show up here" : "Els arxius i carpetes que vosté comparteixi es mostraran aquí", "No shared links" : "no hi ha enllaços compartits", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Voleu afegir la compartició remota {nom} des de {owner}@{remote}?", - "Remote share" : "Compartició remota", - "Remote share password" : "Contrasenya de compartició remota", - "Cancel" : "Cancel·la", - "Add remote share" : "Afegeix compartició remota", - "Invalid ownCloud url" : "La url d'ownCloud no és vàlida", + "Files and folders you share by link will show up here" : "Els arxius i les carpetes que vosté ha compartit per link es mostraran aquí", + "You can upload into this folder" : "Pots pujar dins d'aquesta carpeta", + "No compatible server found at {remote}" : "No s'ha trobat cap servidor compatible a {remote}", + "Invalid server URL" : "Direcció del servidor invàlida", + "Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al teu Nextcloud", + "Share" : "Comparteix", + "No expiration date set" : "No s'ha establert cap data de caducitat", "Shared by" : "Compartit per", "Sharing" : "Compartir", + "File shares" : "Arxius compartits", + "Downloaded via public link" : "Descarregat mitjançant enllaç públic", + "Downloaded by {email}" : "Descarregat per {email}", + "{file} downloaded via public link" : "{file} descarregat mitjançant enllaç públic", + "{email} downloaded {file}" : "{email} descarregat {file}", + "Shared with group {group}" : "Compartit amb el grup {group}", + "Removed share for group {group}" : "S'ha eliminat la part per al grup {group}", + "{actor} shared with group {group}" : "{actor} ha compartit amb el grup {group}", + "{actor} removed share for group {group}" : "{actor} ha tret la part compartida del grup {grup}", + "You shared {file} with group {group}" : "Has compartit {file} amb el grup {group}", + "You removed group {group} from {file}" : "Heu eliminat el grup {group} de {file}", + "{actor} shared {file} with group {group}" : "{actor} ha compartit {file} amb el grup {group}", + "{actor} removed group {group} from {file}" : "{actor} ha eliminat el grup {group} de {file}", + "Shared as public link" : "Compartit com a enllaç públic", + "Removed public link" : "S'ha suprimit l'enllaç públic", + "Public link expired" : "L'enllaç públic ha caducat", + "{actor} shared as public link" : "{actor} ha compartit com a enllaç públic", + "{actor} removed public link" : "{actor} ha eliminat l'enllaç públic", + "Public link of {actor} expired" : "El vincle públic de {actor} ha caducat", + "You shared {file} as public link" : "Has compartit {file} com a enllaç públic", + "You removed public link for {file}" : "Heu eliminat l'enllaç públic per a {file}", + "Public link expired for {file}" : "L'enllaç públic ha caducat per {file}", + "{actor} shared {file} as public link" : "{actor} ha compartit {file} com a enllaç públic", + "{actor} removed public link for {file}" : "{actor} ha eliminat l'enllaç públic per a {file}", + "Public link of {actor} for {file} expired" : "El vincle públic de {actor} per {file} ha caducat", + "{user} accepted the remote share" : "{usuari} ha acceptat el recompte remot", + "{user} declined the remote share" : "{usuari} ha rebutjat el recompte remot", + "You received a new remote share {file} from {user}" : "Heu rebut una nova compartició remota {file} de {user}", + "{user} accepted the remote share of {file}" : "{usuari} ha acceptat la part remota de {file}", + "{user} declined the remote share of {file}" : "{usuari} ha denegat la part remota de {file}", + "{user} unshared {file} from you" : "{user} ha deixat de compartir {file}", + "Shared with {user}" : "Compartit amb {user}", + "Removed share for {user}" : "S'ha suprimit la part per {user}", + "{actor} shared with {user}" : "{actor} compartit amb {usuari}", + "{actor} removed share for {user}" : "{actor} ha tret la part compartida per {user}", + "Shared by {actor}" : "Compartit per {actor}", + "{actor} removed share" : "{actor} ha tret part", + "You shared {file} with {user}" : "Has compartit {file} amb {user}", + "You removed {user} from {file}" : "Heu eliminat {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} ha compartit {file} amb {usuari}", + "{actor} removed {user} from {file}" : "{actor} ha tret {user} de {file}", + "{actor} shared {file} with you" : "{actor} ha compartit {file} amb tu", + "{actor} removed you from {file}" : "{actor} t'ha eliminat de {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "S'ha <strong> baixat </strong> un fitxer o carpeta compartit per correu o per enllaç públic", + "A file or folder was shared from <strong>another server</strong>" : "S'ha compartit un fitxer o una carpeta d'un <strong> altre servidor</strong>", "A file or folder has been <strong>shared</strong>" : "S'ha <strong>compartit</strong> un fitxer o una carpeta", - "You shared %1$s with %2$s" : "Has compartit %1$s amb %2$s", - "You shared %1$s with group %2$s" : "has compartit %1$s amb el grup %2$s", - "You shared %1$s via link" : "Heu compartit %1$s via enllaç", - "%2$s shared %1$s with you" : "%2$s ha compartit %1$s amb tu", - "Shares" : "Compartits", + "Wrong share ID, share doesn't exist" : "L'identificador d'accions incorrecte, el compartir no existeix", + "could not delete share" : "No s'ha pogut suprimir la compartició", + "Could not delete share" : "No s'ha pogut suprimir la compartició", + "Please specify a file or folder path" : "Especifiqueu una ruta de fitxer o carpeta", + "Wrong path, file/folder doesn't exist" : "La ruta, el fitxer o la carpeta incorrectes no existeixen", + "Could not create share" : "No s'ha pogut crear la compartició", + "invalid permissions" : "Permisos invàlids", + "Please specify a valid user" : "Especifiqueu un usuari vàlid", + "Group sharing is disabled by the administrator" : "L'administrador ha desactivat l'opció per compartir grups", + "Please specify a valid group" : "Especifiqueu un grup vàlid", + "Public link sharing is disabled by the administrator" : "L'administrador ha desactivat l'intercanvi d'enllaços públics", + "Public upload disabled by the administrator" : "S'ha desactivat la càrrega pública per part de l'administrador", + "Public upload is only possible for publicly shared folders" : "La càrrega pública només és possible per a carpetes compartides públicament", + "Invalid date, date format must be YYYY-MM-DD" : "La data no vàlida, el format de la data ha de ser AAAA-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "S'ha produït un error en compartir %s perquè la part posterior no permet que les accions del tipus%s", + "You cannot share to a Circle if the app is not enabled" : "No podeu compartir en un cercle si l'aplicació no està habilitada", + "Please specify a valid circle" : "Especifiqueu un cercle vàlid", + "Unknown share type" : "Tipus d'acció desconegut", + "Not a directory" : "No és un directori", + "Could not lock path" : "No s'ha pogut bloquejar la ruta d'accés", + "Wrong or no update parameter given" : "S'ha donat un paràmetre d'actualització incorrecte o no", + "Can't change permissions for public share links" : "No es poden canviar els permisos per als enllaços compartits públics", + "Cannot increase permissions" : "No es poden augmentar els permisos", + "%s is publicly shared" : "%s es publica públicament", + "Share API is disabled" : "L'API compartida està desactivada", "This share is password-protected" : "Aquest compartit està protegit amb contrasenya", "The password is wrong. Try again." : "la contrasenya és incorrecta. Intenteu-ho de nou.", "Password" : "Contrasenya", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Name" : "Nom", "Share time" : "Temps de compartició", + "Expiration date" : "Data d'expiració", "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.", "Reasons might be:" : "Les raons podrien ser:", "the item was removed" : "l'element ha estat eliminat", "the link expired" : "l'enllaç ha vençut", "sharing is disabled" : "s'ha desactivat la compartició", "For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.", - "Add to your ownCloud" : "Afegiu a ownCloud", + "shared by %s" : "compartit per %s", + "Add to your Nextcloud" : "Afegeix al teu NextCloud", "Download" : "Baixa", "Download %s" : "Baixa %s", - "Direct link" : "Enllaç directe" + "Direct link" : "Enllaç directe", + "Upload files to %s" : "Carrega fitxers a %s", + "Select or drop files" : "Selecciona o deixa anar els fitxers", + "Uploading files…" : "Pujant arxius...", + "Uploaded files:" : "Arxius pujats:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 43c3a38acfb..2765042613a 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -84,7 +84,7 @@ OC.L10N.register( "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben", + "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 43e138d11dd..ec497346c84 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -82,7 +82,7 @@ "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben", + "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 2b16641f7f2..cadb95af32d 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -84,7 +84,7 @@ OC.L10N.register( "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben", + "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 3dd04e6a13e..8fdd54aad47 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -82,7 +82,7 @@ "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter übergeben", + "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 793546e34f4..c60c46de1a6 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -77,7 +77,7 @@ OC.L10N.register( "Public link sharing is disabled by the administrator" : "Le partage de lien public a été désactivé par l'administrateur", "Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur", "Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement", - "Invalid date, date format must be YYYY-MM-DD" : "Date invalide, le format doit être YYYY-MM-DD", + "Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY", "Sharing %s failed because the back end does not allow shares from type %s" : "Le partage %s a échoué parce que l'infrastructure n'autorise pas les partages du type %s", "You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée", "Please specify a valid circle" : "Veuillez entrer un cercle valide", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index b0768a3d3f9..f53ba956c3c 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -75,7 +75,7 @@ "Public link sharing is disabled by the administrator" : "Le partage de lien public a été désactivé par l'administrateur", "Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur", "Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement", - "Invalid date, date format must be YYYY-MM-DD" : "Date invalide, le format doit être YYYY-MM-DD", + "Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY", "Sharing %s failed because the back end does not allow shares from type %s" : "Le partage %s a échoué parce que l'infrastructure n'autorise pas les partages du type %s", "You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée", "Please specify a valid circle" : "Veuillez entrer un cercle valide", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 63ddb54a098..2fe130a548a 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -77,7 +77,7 @@ OC.L10N.register( "Public link sharing is disabled by the administrator" : "O compartilhamento por link público foi desativado pelo administrador", "Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador", "Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente", - "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser AAAA-MM-DD", + "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o serviço não permite ações de tipo %s", "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado", "Please specify a valid circle" : "Por favor especifique um círculo válido", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index a659e0ff8a3..66419d9393f 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -75,7 +75,7 @@ "Public link sharing is disabled by the administrator" : "O compartilhamento por link público foi desativado pelo administrador", "Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador", "Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente", - "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser AAAA-MM-DD", + "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o serviço não permite ações de tipo %s", "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado", "Please specify a valid circle" : "Por favor especifique um círculo válido", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 2ee1fe2b5f8..a81b094dafe 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -96,7 +96,7 @@ OC.L10N.register( "Name" : "Имя", "Share time" : "Дата публикации", "Expiration date" : "Дата истечения", - "Sorry, this link doesn’t seem to work anymore." : "Эта ссылка устарела и более не действительна.", + "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает.", "Reasons might be:" : "Причиной может быть:", "the item was removed" : "объект был удалён", "the link expired" : "срок действия ссылки истёк", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 669ce8fcd0f..a4891dd5c05 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -94,7 +94,7 @@ "Name" : "Имя", "Share time" : "Дата публикации", "Expiration date" : "Дата истечения", - "Sorry, this link doesn’t seem to work anymore." : "Эта ссылка устарела и более не действительна.", + "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает.", "Reasons might be:" : "Причиной может быть:", "the item was removed" : "объект был удалён", "the link expired" : "срок действия ссылки истёк", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index b7d260ca332..b60205e40a6 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -34,6 +34,25 @@ OC.L10N.register( "Shared as public link" : "Sprístupnené ako verejný odkaz", "Removed public link" : "Verejný odkaz odstránený", "Public link expired" : "Verejnému odkazu vypršala platnosť", + "{actor} shared as public link" : "{actor} sprístupnil ako verejný odkaz", + "{actor} removed public link" : "{actor} odstránil verejný odkaz", + "Public link of {actor} expired" : "Verejný odkaz {actor} vypršal", + "You shared {file} as public link" : "Sprístupnili ste súbor {file} ako verejný odkaz", + "You removed public link for {file}" : "Odstránili ste verejný odkaz pre {file}", + "Public link expired for {file}" : "Verejný odkaz pre {file} vypršal", + "{actor} shared {file} as public link" : "{actor} sprístupnil {file} ako verejný odkaz", + "{actor} removed public link for {file}" : "{actor} odstránil verejný odkaz pre {file}", + "Public link of {actor} for {file} expired" : "Verejný odkaz používateľa {actor} pre {file} vypršal", + "{user} accepted the remote share" : "používateľ {user} prijal vzdialené sprístupnenie", + "{user} declined the remote share" : "používateľ {user} odmietol vzdialené sprístupnenie", + "You received a new remote share {file} from {user}" : "Obdržali ste nové vzdialené zdieľanie súboru {file} používateľom {user}", + "{user} accepted the remote share of {file}" : "používateľ {user} prijal vzdialené sprístupnenie súboru {file}", + "{user} declined the remote share of {file}" : "používateľ {user} odmietol vzdialené spristupnenie súboru {file} ", + "{user} unshared {file} from you" : "používateľ {user} vám už nesprístupňuje súbor {file}", + "Shared with {user}" : "Zdieľané s {user}", + "Removed share for {user}" : "Odstránené sprístupnenie pre používateľa {user}", + "{actor} shared with {user}" : "{actor} zdieľal s {user}", + "{actor} removed share for {user}" : "{actor} odstránil sprístupnenie pre používateľa {user}", "Shared by {actor}" : "Sprístupnil {actor}", "{actor} removed share" : "{actor} zrušil sprístupnenie", "You shared {file} with {user}" : "Sprístupnili ste {file} používateľovi {user}", diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index 7d88a4efd20..2953c12bf44 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -32,6 +32,25 @@ "Shared as public link" : "Sprístupnené ako verejný odkaz", "Removed public link" : "Verejný odkaz odstránený", "Public link expired" : "Verejnému odkazu vypršala platnosť", + "{actor} shared as public link" : "{actor} sprístupnil ako verejný odkaz", + "{actor} removed public link" : "{actor} odstránil verejný odkaz", + "Public link of {actor} expired" : "Verejný odkaz {actor} vypršal", + "You shared {file} as public link" : "Sprístupnili ste súbor {file} ako verejný odkaz", + "You removed public link for {file}" : "Odstránili ste verejný odkaz pre {file}", + "Public link expired for {file}" : "Verejný odkaz pre {file} vypršal", + "{actor} shared {file} as public link" : "{actor} sprístupnil {file} ako verejný odkaz", + "{actor} removed public link for {file}" : "{actor} odstránil verejný odkaz pre {file}", + "Public link of {actor} for {file} expired" : "Verejný odkaz používateľa {actor} pre {file} vypršal", + "{user} accepted the remote share" : "používateľ {user} prijal vzdialené sprístupnenie", + "{user} declined the remote share" : "používateľ {user} odmietol vzdialené sprístupnenie", + "You received a new remote share {file} from {user}" : "Obdržali ste nové vzdialené zdieľanie súboru {file} používateľom {user}", + "{user} accepted the remote share of {file}" : "používateľ {user} prijal vzdialené sprístupnenie súboru {file}", + "{user} declined the remote share of {file}" : "používateľ {user} odmietol vzdialené spristupnenie súboru {file} ", + "{user} unshared {file} from you" : "používateľ {user} vám už nesprístupňuje súbor {file}", + "Shared with {user}" : "Zdieľané s {user}", + "Removed share for {user}" : "Odstránené sprístupnenie pre používateľa {user}", + "{actor} shared with {user}" : "{actor} zdieľal s {user}", + "{actor} removed share for {user}" : "{actor} odstránil sprístupnenie pre používateľa {user}", "Shared by {actor}" : "Sprístupnil {actor}", "{actor} removed share" : "{actor} zrušil sprístupnenie", "You shared {file} with {user}" : "Sprístupnili ste {file} používateľovi {user}", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index 07af47317c0..e32d442e938 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -1,60 +1,115 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "Дељење између сервера није укључено на овом серверу", - "The mountpoint name contains invalid characters." : "Назив тачке монтирања садржи неисправне знакове.", - "Invalid or untrusted SSL certificate" : "Неисправан или неповерљив ССЛ сертификат", - "Could not authenticate to remote share, password might be wrong" : "Не могу да се пријавим на удаљено дељење. Лозинка је можда погрешна", - "Storage not valid" : "Складиште није исправно", - "Couldn't add remote share" : "Не могу да додам удаљено дељење", "Shared with you" : "Дељено са вама", "Shared with others" : "Дељено са осталима", "Shared by link" : "Дељено путем везе", - "Nothing shared with you yet" : "Још увек се ништа са вама не дели", + "Nothing shared with you yet" : "Још увек се ништа не дели са Вама", "Files and folders others share with you will show up here" : "Фајлови и фасцикле које други деле са вама појавиће се овде", "Nothing shared yet" : "Још се ништа не дели", "Files and folders you share will show up here" : "Фајлови и фасцикле које делите појавиће се овде", "No shared links" : "Нема веза за дељење", "Files and folders you share by link will show up here" : "Фајлови и фасцикле које делите путем везе појавиће се овде", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Желите ли да додате удаљено дељење {name} власника {owner}@{remote}?", - "Remote share" : "Удаљено дељење", - "Remote share password" : "Лозинка удаљеног дељења", - "Cancel" : "Одустани", - "Add remote share" : "Додај удаљено дељење", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", - "No ownCloud installation (7 or higher) found at {remote}" : "Нема оунКлауд инсталације верзије 7 или више на {remote}", - "Invalid ownCloud url" : "Неисправан оунКлауд УРЛ", - "Shared by" : "Дели", + "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", + "Invalid server URL" : "Неисправна адреса сервера", + "Failed to add the public link to your Nextcloud" : "Неуспело додавање јавне везе ка Вашем Некстклауду", + "Share" : "Подели", + "No expiration date set" : "Није постављен датум истека", + "Shared by" : "Поделио", "Sharing" : "Дељење", - "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", + "File shares" : "Дељења фајлова", + "Downloaded via public link" : "Скинуто преко јавне везе", + "Downloaded by {email}" : "Скинуо {email}", + "{file} downloaded via public link" : "{file} скинут преко јавне везе", + "{email} downloaded {file}" : "{email} скинуо {file}", + "Shared with group {group}" : "Дељено са групом {group}", + "Removed share for group {group}" : "Уклоњено дељење за групу {group}", + "{actor} shared with group {group}" : "{actor} поделио са групом {group}", + "{actor} removed share for group {group}" : "{actor} уклонио дељење за групу {group}", + "You shared {file} with group {group}" : "Поделили сте {file} са групом {group}", + "You removed group {group} from {file}" : "Уклонили сте групу {group} са {file}", + "{actor} shared {file} with group {group}" : "{actor} поделио {file} са групом {group}", + "{actor} removed group {group} from {file}" : "{actor} уклонио групу {group} са {file}", + "Shared as public link" : "Дељено као јавна веза", + "Removed public link" : "Уклоњена јавна веза", + "Public link expired" : "Јавна веза истекла", + "{actor} shared as public link" : "{actor} поделио као јавну везу", + "{actor} removed public link" : "{actor} уклонио јавну везу", + "Public link of {actor} expired" : "Јавна веза коју је направио {actor} истекла", + "You shared {file} as public link" : "Поделили сте {file} као јавну везу", + "You removed public link for {file}" : "Уклонили сте јавну везу за {file}", + "Public link expired for {file}" : "Јавна веза за {file} истекла", + "{actor} shared {file} as public link" : "{actor} поделио {file} као јавну везу", + "{actor} removed public link for {file}" : "{actor} уклонио јавну везу за {file}", + "Public link of {actor} for {file} expired" : "Јавна веза коју је направио {actor} за {file} истекла", + "{user} accepted the remote share" : "{user} је прихватио удаљено дељење", + "{user} declined the remote share" : "{user} је одбио јавно дељење", + "You received a new remote share {file} from {user}" : "Добили сте ново удаљено дељење {file} које је направио {user}", + "{user} accepted the remote share of {file}" : "{user} прихватио удаљено дељење за фајл {file}", + "{user} declined the remote share of {file}" : "{user} одбио удаљено дељење за фајл {file}", + "{user} unshared {file} from you" : "{user} укинио дељење фајла {file} са Вама", + "Shared with {user}" : "Дељено са {user}", + "Removed share for {user}" : "Уклоњено дељење за корисника {user}", + "{actor} shared with {user}" : "{actor} поделио са корисником {user}", + "{actor} removed share for {user}" : "{actor} уклонио дељеље са корисником {user}", + "Shared by {actor}" : "Поделио {actor}", + "{actor} removed share" : "{actor} уклонио дељење", + "You shared {file} with {user}" : "Поделили сте {file} са корисником {user}", + "You removed {user} from {file}" : "Уклонили сте корисника {user} са фајла {file}", + "{actor} shared {file} with {user}" : "{actor} поделио {file} са корисником {user}", + "{actor} removed {user} from {file}" : "{actor} уклонио корисника {user} са {file}", + "{actor} shared {file} with you" : "{actor} поделио {file} са Вама", + "{actor} removed you from {file}" : "{actor} Вас је уклонио са {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Фајл или фасцикла подељена е-поштом су <strong>преузети</strong>", "A file or folder was shared from <strong>another server</strong>" : "Фајл или фасцикла су дељени са <strong>другог сервера</strong>", - "A public shared file or folder was <strong>downloaded</strong>" : "Јавно дељени фајл или фасцикла су <strong>преузети</strong>", - "You received a new remote share from %s" : "Добили сте ново удаљено дељење од %s", - "%1$s accepted remote share %2$s" : "%1$s прихвати удаљено дељење %2$s", - "%1$s declined remote share %2$s" : "%1$s одби удаљено дељење %2$s", - "%1$s unshared %2$s from you" : "%1$s не дели %2$s са вама", - "Public shared folder %1$s was downloaded" : "Јавно дељена фасцикла %1$s је преузета", - "Public shared file %1$s was downloaded" : "Јавно дељени фајл %1$s је преузет", - "You shared %1$s with %2$s" : "Поделили сте %1$s са %2$s", - "You shared %1$s with group %2$s" : "Поделили сте %1$s са групом %2$s", - "You shared %1$s via link" : "Поделили сте %1$s путем везе", - "%2$s shared %1$s with you" : "%2$s подели %1$s са вама", - "Shares" : "Дељења", + "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", + "Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји", + "could not delete share" : "не могу да обришем дељење", + "Could not delete share" : "Не могу да обришем дељење", + "Please specify a file or folder path" : "Молимо одаберите путању до фајла или фасцикле", + "Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји", + "Could not create share" : "Не могу да направим дељење", + "invalid permissions" : "Неисправне дозволе", + "Please specify a valid user" : "Одаберите исправног корисника", + "Group sharing is disabled by the administrator" : "Администратор је забранио дељење са групом", + "Please specify a valid group" : "Одаберите исправну групу", + "Public link sharing is disabled by the administrator" : "Администратор је забранио дељење јавном везом", + "Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом", + "Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле", + "Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД", + "Sharing %s failed because the back end does not allow shares from type %s" : "Дељење %s није успело зато што позадина не дозвољава дељење које је типа %s", + "You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена", + "Please specify a valid circle" : "Одаберите исправан круг", + "Unknown share type" : "Непознат тип дељења", + "Not a directory" : "Није фасцикла", + "Could not lock path" : "Не могу да закључам путању", + "Wrong or no update parameter given" : "Погрешан или ненаведен параметер", + "Can't change permissions for public share links" : "Не могу се променити привилегије за јавно доступне везе", + "Cannot increase permissions" : "Не могу да повећам привилегије", + "%s is publicly shared" : "%s је јавно дељен", + "Share API is disabled" : "API за дељене је искључен", "This share is password-protected" : "Дељење је заштићено лозинком", "The password is wrong. Try again." : "Лозинка је погрешна. Покушајте поново.", "Password" : "Лозинка", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Name" : "Назив", "Share time" : "Време дељења", + "Expiration date" : "Датум истека", "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.", "Reasons might be:" : "Разлози могу бити:", "the item was removed" : "ставка је уклоњена", "the link expired" : "веза је истекла", "sharing is disabled" : "дељење је искључено", "For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.", - "Add to your ownCloud" : "Додај у свој облак", + "shared by %s" : "поделио %s", + "Add to your Nextcloud" : "Додајте у свој облак", "Download" : "Преузми", "Download %s" : "Преузми %s", - "Direct link" : "Директна веза" + "Direct link" : "Директна веза", + "Upload files to %s" : "Отпремите фајлове на%s", + "Select or drop files" : "Одаберите или превуците фајлове", + "Uploading files…" : "Отпремам фајлове…", + "Uploaded files:" : "Отпремљени фајлови:" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index dacc1f79052..e352b892848 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -1,58 +1,113 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "Дељење између сервера није укључено на овом серверу", - "The mountpoint name contains invalid characters." : "Назив тачке монтирања садржи неисправне знакове.", - "Invalid or untrusted SSL certificate" : "Неисправан или неповерљив ССЛ сертификат", - "Could not authenticate to remote share, password might be wrong" : "Не могу да се пријавим на удаљено дељење. Лозинка је можда погрешна", - "Storage not valid" : "Складиште није исправно", - "Couldn't add remote share" : "Не могу да додам удаљено дељење", "Shared with you" : "Дељено са вама", "Shared with others" : "Дељено са осталима", "Shared by link" : "Дељено путем везе", - "Nothing shared with you yet" : "Још увек се ништа са вама не дели", + "Nothing shared with you yet" : "Још увек се ништа не дели са Вама", "Files and folders others share with you will show up here" : "Фајлови и фасцикле које други деле са вама појавиће се овде", "Nothing shared yet" : "Још се ништа не дели", "Files and folders you share will show up here" : "Фајлови и фасцикле које делите појавиће се овде", "No shared links" : "Нема веза за дељење", "Files and folders you share by link will show up here" : "Фајлови и фасцикле које делите путем везе појавиће се овде", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Желите ли да додате удаљено дељење {name} власника {owner}@{remote}?", - "Remote share" : "Удаљено дељење", - "Remote share password" : "Лозинка удаљеног дељења", - "Cancel" : "Одустани", - "Add remote share" : "Додај удаљено дељење", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", - "No ownCloud installation (7 or higher) found at {remote}" : "Нема оунКлауд инсталације верзије 7 или више на {remote}", - "Invalid ownCloud url" : "Неисправан оунКлауд УРЛ", - "Shared by" : "Дели", + "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", + "Invalid server URL" : "Неисправна адреса сервера", + "Failed to add the public link to your Nextcloud" : "Неуспело додавање јавне везе ка Вашем Некстклауду", + "Share" : "Подели", + "No expiration date set" : "Није постављен датум истека", + "Shared by" : "Поделио", "Sharing" : "Дељење", - "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", + "File shares" : "Дељења фајлова", + "Downloaded via public link" : "Скинуто преко јавне везе", + "Downloaded by {email}" : "Скинуо {email}", + "{file} downloaded via public link" : "{file} скинут преко јавне везе", + "{email} downloaded {file}" : "{email} скинуо {file}", + "Shared with group {group}" : "Дељено са групом {group}", + "Removed share for group {group}" : "Уклоњено дељење за групу {group}", + "{actor} shared with group {group}" : "{actor} поделио са групом {group}", + "{actor} removed share for group {group}" : "{actor} уклонио дељење за групу {group}", + "You shared {file} with group {group}" : "Поделили сте {file} са групом {group}", + "You removed group {group} from {file}" : "Уклонили сте групу {group} са {file}", + "{actor} shared {file} with group {group}" : "{actor} поделио {file} са групом {group}", + "{actor} removed group {group} from {file}" : "{actor} уклонио групу {group} са {file}", + "Shared as public link" : "Дељено као јавна веза", + "Removed public link" : "Уклоњена јавна веза", + "Public link expired" : "Јавна веза истекла", + "{actor} shared as public link" : "{actor} поделио као јавну везу", + "{actor} removed public link" : "{actor} уклонио јавну везу", + "Public link of {actor} expired" : "Јавна веза коју је направио {actor} истекла", + "You shared {file} as public link" : "Поделили сте {file} као јавну везу", + "You removed public link for {file}" : "Уклонили сте јавну везу за {file}", + "Public link expired for {file}" : "Јавна веза за {file} истекла", + "{actor} shared {file} as public link" : "{actor} поделио {file} као јавну везу", + "{actor} removed public link for {file}" : "{actor} уклонио јавну везу за {file}", + "Public link of {actor} for {file} expired" : "Јавна веза коју је направио {actor} за {file} истекла", + "{user} accepted the remote share" : "{user} је прихватио удаљено дељење", + "{user} declined the remote share" : "{user} је одбио јавно дељење", + "You received a new remote share {file} from {user}" : "Добили сте ново удаљено дељење {file} које је направио {user}", + "{user} accepted the remote share of {file}" : "{user} прихватио удаљено дељење за фајл {file}", + "{user} declined the remote share of {file}" : "{user} одбио удаљено дељење за фајл {file}", + "{user} unshared {file} from you" : "{user} укинио дељење фајла {file} са Вама", + "Shared with {user}" : "Дељено са {user}", + "Removed share for {user}" : "Уклоњено дељење за корисника {user}", + "{actor} shared with {user}" : "{actor} поделио са корисником {user}", + "{actor} removed share for {user}" : "{actor} уклонио дељеље са корисником {user}", + "Shared by {actor}" : "Поделио {actor}", + "{actor} removed share" : "{actor} уклонио дељење", + "You shared {file} with {user}" : "Поделили сте {file} са корисником {user}", + "You removed {user} from {file}" : "Уклонили сте корисника {user} са фајла {file}", + "{actor} shared {file} with {user}" : "{actor} поделио {file} са корисником {user}", + "{actor} removed {user} from {file}" : "{actor} уклонио корисника {user} са {file}", + "{actor} shared {file} with you" : "{actor} поделио {file} са Вама", + "{actor} removed you from {file}" : "{actor} Вас је уклонио са {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Фајл или фасцикла подељена е-поштом су <strong>преузети</strong>", "A file or folder was shared from <strong>another server</strong>" : "Фајл или фасцикла су дељени са <strong>другог сервера</strong>", - "A public shared file or folder was <strong>downloaded</strong>" : "Јавно дељени фајл или фасцикла су <strong>преузети</strong>", - "You received a new remote share from %s" : "Добили сте ново удаљено дељење од %s", - "%1$s accepted remote share %2$s" : "%1$s прихвати удаљено дељење %2$s", - "%1$s declined remote share %2$s" : "%1$s одби удаљено дељење %2$s", - "%1$s unshared %2$s from you" : "%1$s не дели %2$s са вама", - "Public shared folder %1$s was downloaded" : "Јавно дељена фасцикла %1$s је преузета", - "Public shared file %1$s was downloaded" : "Јавно дељени фајл %1$s је преузет", - "You shared %1$s with %2$s" : "Поделили сте %1$s са %2$s", - "You shared %1$s with group %2$s" : "Поделили сте %1$s са групом %2$s", - "You shared %1$s via link" : "Поделили сте %1$s путем везе", - "%2$s shared %1$s with you" : "%2$s подели %1$s са вама", - "Shares" : "Дељења", + "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", + "Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји", + "could not delete share" : "не могу да обришем дељење", + "Could not delete share" : "Не могу да обришем дељење", + "Please specify a file or folder path" : "Молимо одаберите путању до фајла или фасцикле", + "Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји", + "Could not create share" : "Не могу да направим дељење", + "invalid permissions" : "Неисправне дозволе", + "Please specify a valid user" : "Одаберите исправног корисника", + "Group sharing is disabled by the administrator" : "Администратор је забранио дељење са групом", + "Please specify a valid group" : "Одаберите исправну групу", + "Public link sharing is disabled by the administrator" : "Администратор је забранио дељење јавном везом", + "Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом", + "Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле", + "Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД", + "Sharing %s failed because the back end does not allow shares from type %s" : "Дељење %s није успело зато што позадина не дозвољава дељење које је типа %s", + "You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена", + "Please specify a valid circle" : "Одаберите исправан круг", + "Unknown share type" : "Непознат тип дељења", + "Not a directory" : "Није фасцикла", + "Could not lock path" : "Не могу да закључам путању", + "Wrong or no update parameter given" : "Погрешан или ненаведен параметер", + "Can't change permissions for public share links" : "Не могу се променити привилегије за јавно доступне везе", + "Cannot increase permissions" : "Не могу да повећам привилегије", + "%s is publicly shared" : "%s је јавно дељен", + "Share API is disabled" : "API за дељене је искључен", "This share is password-protected" : "Дељење је заштићено лозинком", "The password is wrong. Try again." : "Лозинка је погрешна. Покушајте поново.", "Password" : "Лозинка", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Name" : "Назив", "Share time" : "Време дељења", + "Expiration date" : "Датум истека", "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.", "Reasons might be:" : "Разлози могу бити:", "the item was removed" : "ставка је уклоњена", "the link expired" : "веза је истекла", "sharing is disabled" : "дељење је искључено", "For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.", - "Add to your ownCloud" : "Додај у свој облак", + "shared by %s" : "поделио %s", + "Add to your Nextcloud" : "Додајте у свој облак", "Download" : "Преузми", "Download %s" : "Преузми %s", - "Direct link" : "Директна веза" + "Direct link" : "Директна веза", + "Upload files to %s" : "Отпремите фајлове на%s", + "Select or drop files" : "Одаберите или превуците фајлове", + "Uploading files…" : "Отпремам фајлове…", + "Uploaded files:" : "Отпремљени фајлови:" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index 7f3016cc0aa..8a46cb8a5e8 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -61,7 +61,7 @@ OC.L10N.register( "{actor} removed {user} from {file}" : "{actor} {file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdı", "{actor} shared {file} with you" : "{actor} {file} dosyasını sizinle paylaştı", "{actor} removed you from {file}" : "{actor} {file} dosyasının sizinle paylaşımını kaldırdı", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlatı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlantı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka bir sunucudan</strong> bir dosya ya da klasör paylaşıldı", "A file or folder has been <strong>shared</strong>" : "Bir dosya ya da klasör <strong>paylaşıldı</strong>", "Wrong share ID, share doesn't exist" : "Paylaşım kimliği yanlış. Paylaşım bulunamadı", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 3772f953e29..f028cc1811e 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -59,7 +59,7 @@ "{actor} removed {user} from {file}" : "{actor} {file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdı", "{actor} shared {file} with you" : "{actor} {file} dosyasını sizinle paylaştı", "{actor} removed you from {file}" : "{actor} {file} dosyasının sizinle paylaşımını kaldırdı", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlatı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlantı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka bir sunucudan</strong> bir dosya ya da klasör paylaşıldı", "A file or folder has been <strong>shared</strong>" : "Bir dosya ya da klasör <strong>paylaşıldı</strong>", "Wrong share ID, share doesn't exist" : "Paylaşım kimliği yanlış. Paylaşım bulunamadı", diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 94a4854dbde..dcecf2c8e08 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -6,6 +6,7 @@ * @author Joas Schilling <coding@schilljs.com> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> * * @license AGPL-3.0 * @@ -27,52 +28,23 @@ namespace OCA\Files_Sharing\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCSController; -use OCP\Contacts\IManager; -use OCP\Federation\ICloudIdManager; -use OCP\Http\Client\IClientService; -use OCP\IGroup; -use OCP\IGroupManager; -use OCP\ILogger; +use OCP\Collaboration\Collaborators\ISearch; use OCP\IRequest; -use OCP\IUser; -use OCP\IUserManager; use OCP\IConfig; -use OCP\IUserSession; use OCP\IURLGenerator; use OCP\Share; +use OCP\Share\IManager; class ShareesAPIController extends OCSController { - - /** @var IGroupManager */ - protected $groupManager; - - /** @var IUserManager */ - protected $userManager; - - /** @var IManager */ - protected $contactsManager; - /** @var IConfig */ protected $config; - /** @var IUserSession */ - protected $userSession; - /** @var IURLGenerator */ protected $urlGenerator; - /** @var ILogger */ - protected $logger; - - /** @var \OCP\Share\IManager */ + /** @var IManager */ protected $shareManager; - /** @var IClientService */ - protected $clientService; - - /** @var ICloudIdManager */ - protected $cloudIdManager; - /** @var bool */ protected $shareWithGroupOnly = false; @@ -103,326 +75,31 @@ class ShareesAPIController extends OCSController { ]; protected $reachedEndFor = []; + /** @var ISearch */ + private $collaboratorSearch; /** * @param string $appName * @param IRequest $request - * @param IGroupManager $groupManager - * @param IUserManager $userManager - * @param IManager $contactsManager * @param IConfig $config - * @param IUserSession $userSession * @param IURLGenerator $urlGenerator - * @param ILogger $logger - * @param \OCP\Share\IManager $shareManager - * @param IClientService $clientService - * @param ICloudIdManager $cloudIdManager + * @param IManager $shareManager + * @param ISearch $collaboratorSearch */ - public function __construct($appName, - IRequest $request, - IGroupManager $groupManager, - IUserManager $userManager, - IManager $contactsManager, - IConfig $config, - IUserSession $userSession, - IURLGenerator $urlGenerator, - ILogger $logger, - \OCP\Share\IManager $shareManager, - IClientService $clientService, - ICloudIdManager $cloudIdManager + public function __construct( + $appName, + IRequest $request, + IConfig $config, + IURLGenerator $urlGenerator, + IManager $shareManager, + ISearch $collaboratorSearch ) { parent::__construct($appName, $request); - $this->groupManager = $groupManager; - $this->userManager = $userManager; - $this->contactsManager = $contactsManager; $this->config = $config; - $this->userSession = $userSession; $this->urlGenerator = $urlGenerator; - $this->logger = $logger; $this->shareManager = $shareManager; - $this->clientService = $clientService; - $this->cloudIdManager = $cloudIdManager; - } - - /** - * @param string $search - */ - protected function getUsers($search) { - $this->result['users'] = $this->result['exact']['users'] = $users = []; - - $userGroups = []; - if ($this->shareWithGroupOnly) { - // Search in all the groups this user is part of - $userGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser()); - foreach ($userGroups as $userGroup) { - $usersTmp = $this->groupManager->displayNamesInGroup($userGroup, $search, $this->limit, $this->offset); - foreach ($usersTmp as $uid => $userDisplayName) { - $users[$uid] = $userDisplayName; - } - } - } else { - // Search in all users - $usersTmp = $this->userManager->searchDisplayName($search, $this->limit, $this->offset); - - foreach ($usersTmp as $user) { - $users[$user->getUID()] = $user->getDisplayName(); - } - } - - if (!$this->shareeEnumeration || sizeof($users) < $this->limit) { - $this->reachedEndFor[] = 'users'; - } - - $foundUserById = false; - $lowerSearch = strtolower($search); - foreach ($users as $uid => $userDisplayName) { - if (strtolower($uid) === $lowerSearch || strtolower($userDisplayName) === $lowerSearch) { - if (strtolower($uid) === $lowerSearch) { - $foundUserById = true; - } - $this->result['exact']['users'][] = [ - 'label' => $userDisplayName, - 'value' => [ - 'shareType' => Share::SHARE_TYPE_USER, - 'shareWith' => $uid, - ], - ]; - } else { - $this->result['users'][] = [ - 'label' => $userDisplayName, - 'value' => [ - 'shareType' => Share::SHARE_TYPE_USER, - 'shareWith' => $uid, - ], - ]; - } - } - - if ($this->offset === 0 && !$foundUserById) { - // On page one we try if the search result has a direct hit on the - // user id and if so, we add that to the exact match list - $user = $this->userManager->get($search); - if ($user instanceof IUser) { - $addUser = true; - - if ($this->shareWithGroupOnly) { - // Only add, if we have a common group - $commonGroups = array_intersect($userGroups, $this->groupManager->getUserGroupIds($user)); - $addUser = !empty($commonGroups); - } - - if ($addUser) { - array_push($this->result['exact']['users'], [ - 'label' => $user->getDisplayName(), - 'value' => [ - 'shareType' => Share::SHARE_TYPE_USER, - 'shareWith' => $user->getUID(), - ], - ]); - } - } - } - - if (!$this->shareeEnumeration) { - $this->result['users'] = []; - } - } - - /** - * @param string $search - */ - protected function getGroups($search) { - $this->result['groups'] = $this->result['exact']['groups'] = []; - - $groups = $this->groupManager->search($search, $this->limit, $this->offset); - $groupIds = array_map(function (IGroup $group) { return $group->getGID(); }, $groups); - - if (!$this->shareeEnumeration || sizeof($groups) < $this->limit) { - $this->reachedEndFor[] = 'groups'; - } - - $userGroups = []; - if (!empty($groups) && $this->shareWithGroupOnly) { - // Intersect all the groups that match with the groups this user is a member of - $userGroups = $this->groupManager->getUserGroups($this->userSession->getUser()); - $userGroups = array_map(function (IGroup $group) { return $group->getGID(); }, $userGroups); - $groupIds = array_intersect($groupIds, $userGroups); - } - - $lowerSearch = strtolower($search); - foreach ($groups as $group) { - // FIXME: use a more efficient approach - $gid = $group->getGID(); - if (!in_array($gid, $groupIds)) { - continue; - } - if (strtolower($gid) === $lowerSearch || strtolower($group->getDisplayName()) === $lowerSearch) { - $this->result['exact']['groups'][] = [ - 'label' => $group->getDisplayName(), - 'value' => [ - 'shareType' => Share::SHARE_TYPE_GROUP, - 'shareWith' => $gid, - ], - ]; - } else { - $this->result['groups'][] = [ - 'label' => $group->getDisplayName(), - 'value' => [ - 'shareType' => Share::SHARE_TYPE_GROUP, - 'shareWith' => $gid, - ], - ]; - } - } - - if ($this->offset === 0 && empty($this->result['exact']['groups'])) { - // On page one we try if the search result has a direct hit on the - // user id and if so, we add that to the exact match list - $group = $this->groupManager->get($search); - if ($group instanceof IGroup && (!$this->shareWithGroupOnly || in_array($group->getGID(), $userGroups))) { - array_push($this->result['exact']['groups'], [ - 'label' => $group->getDisplayName(), - 'value' => [ - 'shareType' => Share::SHARE_TYPE_GROUP, - 'shareWith' => $group->getGID(), - ], - ]); - } - } - - if (!$this->shareeEnumeration) { - $this->result['groups'] = []; - } - } - - - /** - * @param string $search - * @suppress PhanUndeclaredClassMethod - */ - protected function getCircles($search) { - $this->result['circles'] = $this->result['exact']['circles'] = []; - - $result = \OCA\Circles\Api\Sharees::search($search, $this->limit, $this->offset); - if (array_key_exists('circles', $result['exact'])) { - $this->result['exact']['circles'] = $result['exact']['circles']; - } - if (array_key_exists('circles', $result)) { - $this->result['circles'] = $result['circles']; - } - } - - - /** - * @param string $search - * @return array - */ - protected function getRemote($search) { - $result = ['results' => [], 'exact' => []]; - - // Search in contacts - //@todo Pagination missing - $addressBookContacts = $this->contactsManager->search($search, ['CLOUD', 'FN']); - $result['exactIdMatch'] = false; - foreach ($addressBookContacts as $contact) { - if (isset($contact['isLocalSystemBook'])) { - continue; - } - if (isset($contact['CLOUD'])) { - $cloudIds = $contact['CLOUD']; - if (!is_array($cloudIds)) { - $cloudIds = [$cloudIds]; - } - $lowerSearch = strtolower($search); - foreach ($cloudIds as $cloudId) { - try { - list(, $serverUrl) = $this->splitUserRemote($cloudId); - } catch (\InvalidArgumentException $e) { - continue; - } - - if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) { - if (strtolower($cloudId) === $lowerSearch) { - $result['exactIdMatch'] = true; - } - $result['exact'][] = [ - 'label' => $contact['FN'] . " ($cloudId)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_REMOTE, - 'shareWith' => $cloudId, - 'server' => $serverUrl, - ], - ]; - } else { - $result['results'][] = [ - 'label' => $contact['FN'] . " ($cloudId)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_REMOTE, - 'shareWith' => $cloudId, - 'server' => $serverUrl, - ], - ]; - } - } - } - } - - if (!$this->shareeEnumeration) { - $result['results'] = []; - } - - if (!$result['exactIdMatch'] && $this->cloudIdManager->isValidCloudId($search) && $this->offset === 0) { - $result['exact'][] = [ - 'label' => $search, - 'value' => [ - 'shareType' => Share::SHARE_TYPE_REMOTE, - 'shareWith' => $search, - ], - ]; - } - - $this->reachedEndFor[] = 'remotes'; - - return $result; - } - - /** - * split user and remote from federated cloud id - * - * @param string $address federated share address - * @return array [user, remoteURL] - * @throws \InvalidArgumentException - */ - public function splitUserRemote($address) { - try { - $cloudId = $this->cloudIdManager->resolveCloudId($address); - return [$cloudId->getUser(), $cloudId->getRemote()]; - } catch (\InvalidArgumentException $e) { - throw new \InvalidArgumentException('Invalid Federated Cloud ID', 0, $e); - } - } - - /** - * Strips away a potential file names and trailing slashes: - * - http://localhost - * - http://localhost/ - * - http://localhost/index.php - * - http://localhost/index.php/s/{shareToken} - * - * all return: http://localhost - * - * @param string $remote - * @return string - */ - protected function fixRemoteURL($remote) { - $remote = str_replace('\\', '/', $remote); - if ($fileNamePosition = strpos($remote, '/index.php')) { - $remote = substr($remote, 0, $fileNamePosition); - } - $remote = rtrim($remote, '/'); - - return $remote; + $this->collaboratorSearch = $collaboratorSearch; } /** @@ -461,7 +138,9 @@ class ShareesAPIController extends OCSController { Share::SHARE_TYPE_USER, ]; - if ($itemType === 'file' || $itemType === 'folder') { + if ($itemType === null) { + throw new OCSBadRequestException('Missing itemType'); + } elseif ($itemType === 'file' || $itemType === 'folder') { if ($this->shareManager->allowGroupSharing()) { $shareTypes[] = Share::SHARE_TYPE_GROUP; } @@ -478,6 +157,7 @@ class ShareesAPIController extends OCSController { $shareTypes[] = Share::SHARE_TYPE_EMAIL; } + // FIXME: DI if (\OC::$server->getAppManager()->isEnabledForUser('circles') && class_exists('\OCA\Circles\ShareByCircleProvider')) { $shareTypes[] = Share::SHARE_TYPE_CIRCLE; } @@ -495,94 +175,16 @@ class ShareesAPIController extends OCSController { $this->limit = (int) $perPage; $this->offset = $perPage * ($page - 1); - return $this->searchSharees($search, $itemType, $shareTypes, $page, $perPage, $lookup); - } - - /** - * Method to get out the static call for better testing - * - * @param string $itemType - * @return bool - */ - protected function isRemoteSharingAllowed($itemType) { - try { - $backend = \OC\Share\Share::getBackend($itemType); - return $backend->isShareTypeAllowed(Share::SHARE_TYPE_REMOTE); - } catch (\Exception $e) { - return false; - } - } - - /** - * Testable search function that does not need globals - * - * @param string $search - * @param string $itemType - * @param array $shareTypes - * @param int $page - * @param int $perPage - * @param bool $lookup - * @return DataResponse - * @throws OCSBadRequestException - */ - protected function searchSharees($search, $itemType, array $shareTypes, $page, $perPage, $lookup) { - // Verify arguments - if ($itemType === null) { - throw new OCSBadRequestException('Missing itemType'); - } - - // Get users - if (in_array(Share::SHARE_TYPE_USER, $shareTypes)) { - $this->getUsers($search); - } - - // Get groups - if (in_array(Share::SHARE_TYPE_GROUP, $shareTypes)) { - $this->getGroups($search); - } - - // Get circles - if (in_array(Share::SHARE_TYPE_CIRCLE, $shareTypes)) { - $this->getCircles($search); - } - - - // Get remote - $remoteResults = ['results' => [], 'exact' => [], 'exactIdMatch' => false]; - if (in_array(Share::SHARE_TYPE_REMOTE, $shareTypes)) { - $remoteResults = $this->getRemote($search); - } - - // Get emails - $mailResults = ['results' => [], 'exact' => [], 'exactIdMatch' => false]; - if (in_array(Share::SHARE_TYPE_EMAIL, $shareTypes)) { - $mailResults = $this->getEmail($search); - } - - // Get from lookup server - if ($lookup) { - $this->getLookup($search); - } + list($result, $hasMoreResults) = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $this->limit, $this->offset); - // if we have a exact match, either for the federated cloud id or for the - // email address we only return the exact match. It is highly unlikely - // that the exact same email address and federated cloud id exists - if ($mailResults['exactIdMatch'] && !$remoteResults['exactIdMatch']) { - $this->result['emails'] = $mailResults['results']; - $this->result['exact']['emails'] = $mailResults['exact']; - } else if (!$mailResults['exactIdMatch'] && $remoteResults['exactIdMatch']) { - $this->result['remotes'] = $remoteResults['results']; - $this->result['exact']['remotes'] = $remoteResults['exact']; - } else { - $this->result['remotes'] = $remoteResults['results']; - $this->result['exact']['remotes'] = $remoteResults['exact']; - $this->result['emails'] = $mailResults['results']; - $this->result['exact']['emails'] = $mailResults['exact']; + // extra treatment for 'exact' subarray, with a single merge expected keys might be lost + if(isset($result['exact'])) { + $result['exact'] = array_merge($this->result['exact'], $result['exact']); } - + $this->result = array_merge($this->result, $result); $response = new DataResponse($this->result); - if (sizeof($this->reachedEndFor) < 3) { + if ($hasMoreResults) { $response->addHeader('Link', $this->getPaginationLink($page, [ 'search' => $search, 'itemType' => $itemType, @@ -595,166 +197,22 @@ class ShareesAPIController extends OCSController { } /** - * @param string $search - * @return array - */ - protected function getEmail($search) { - $result = ['results' => [], 'exact' => [], 'exactIdMatch' => false]; - - // Search in contacts - //@todo Pagination missing - $addressBookContacts = $this->contactsManager->search($search, ['EMAIL', 'FN']); - $lowerSearch = strtolower($search); - foreach ($addressBookContacts as $contact) { - if (isset($contact['EMAIL'])) { - $emailAddresses = $contact['EMAIL']; - if (!is_array($emailAddresses)) { - $emailAddresses = [$emailAddresses]; - } - foreach ($emailAddresses as $emailAddress) { - $exactEmailMatch = strtolower($emailAddress) === $lowerSearch; - - if (isset($contact['isLocalSystemBook'])) { - if ($exactEmailMatch) { - try { - $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); - } catch (\InvalidArgumentException $e) { - continue; - } - - if (!$this->hasUserInResult($cloud->getUser())) { - $this->result['exact']['users'][] = [ - 'label' => $contact['FN'] . " ($emailAddress)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_USER, - 'shareWith' => $cloud->getUser(), - ], - ]; - } - return ['results' => [], 'exact' => [], 'exactIdMatch' => true]; - } - - if ($this->shareeEnumeration) { - try { - $cloud = $this->cloudIdManager->resolveCloudId($contact['CLOUD'][0]); - } catch (\InvalidArgumentException $e) { - continue; - } - - if (!$this->hasUserInResult($cloud->getUser())) { - $this->result['users'][] = [ - 'label' => $contact['FN'] . " ($emailAddress)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_USER, - 'shareWith' => $cloud->getUser(), - ], - ]; - } - } - continue; - } - - if ($exactEmailMatch || strtolower($contact['FN']) === $lowerSearch) { - if ($exactEmailMatch) { - $result['exactIdMatch'] = true; - } - $result['exact'][] = [ - 'label' => $contact['FN'] . " ($emailAddress)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $emailAddress, - ], - ]; - } else { - $result['results'][] = [ - 'label' => $contact['FN'] . " ($emailAddress)", - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $emailAddress, - ], - ]; - } - } - } - } - - if (!$this->shareeEnumeration) { - $result['results'] = []; - } - - if (!$result['exactIdMatch'] && filter_var($search, FILTER_VALIDATE_EMAIL)) { - $result['exact'][] = [ - 'label' => $search, - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $search, - ], - ]; - } - - $this->reachedEndFor[] = 'emails'; - - return $result; - } - - protected function getLookup($search) { - $isEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no'); - $lookupServerUrl = $this->config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); - $lookupServerUrl = rtrim($lookupServerUrl, '/'); - $result = []; - - if($isEnabled === 'yes') { - try { - $client = $this->clientService->newClient(); - $response = $client->get( - $lookupServerUrl . '/users?search=' . urlencode($search), - [ - 'timeout' => 10, - 'connect_timeout' => 3, - ] - ); - - $body = json_decode($response->getBody(), true); - - $result = []; - foreach ($body as $lookup) { - $result[] = [ - 'label' => $lookup['federationId'], - 'value' => [ - 'shareType' => Share::SHARE_TYPE_REMOTE, - 'shareWith' => $lookup['federationId'], - ], - 'extra' => $lookup, - ]; - } - } catch (\Exception $e) {} - } - - $this->result['lookup'] = $result; - } - - /** - * Check if a given user is already part of the result + * Method to get out the static call for better testing * - * @param string $userId + * @param string $itemType * @return bool */ - protected function hasUserInResult($userId) { - foreach ($this->result['exact']['users'] as $result) { - if ($result['value']['shareWith'] === $userId) { - return true; - } - } - - foreach ($this->result['users'] as $result) { - if ($result['value']['shareWith'] === $userId) { - return true; - } + protected function isRemoteSharingAllowed($itemType) { + try { + // FIXME: static foo makes unit testing unnecessarily difficult + $backend = \OC\Share\Share::getBackend($itemType); + return $backend->isShareTypeAllowed(Share::SHARE_TYPE_REMOTE); + } catch (\Exception $e) { + return false; } - - return false; } + /** * Generates a bunch of pagination links for the current page * diff --git a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php index e027d0751cb..2b919f4849d 100644 --- a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php @@ -25,14 +25,16 @@ namespace OCA\Files_Sharing\Tests\Controller; -use OC\Federation\CloudIdManager; use OCA\Files_Sharing\Controller\ShareesAPIController; use OCA\Files_Sharing\Tests\TestCase; use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSBadRequestException; -use OCP\Federation\ICloudIdManager; -use OCP\Http\Client\IClientService; +use OCP\Collaboration\Collaborators\ISearch; +use OCP\IConfig; +use OCP\IRequest; +use OCP\IURLGenerator; use OCP\Share; +use OCP\Share\IManager; /** * Class ShareesTest @@ -45,1251 +47,39 @@ class ShareesAPIControllerTest extends TestCase { /** @var ShareesAPIController */ protected $sharees; - /** @var \OCP\IUserManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $userManager; - - /** @var \OCP\IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $groupManager; - - /** @var \OCP\Contacts\IManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $contactsManager; - - /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject */ - protected $session; - - /** @var \OCP\IRequest|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ protected $request; - /** @var \OCP\Share\IManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ protected $shareManager; - /** @var IClientService|\PHPUnit_Framework_MockObject_MockObject */ - private $clientService; - - /** @var ICloudIdManager */ - private $cloudIdManager; + /** @var ISearch|\PHPUnit_Framework_MockObject_MockObject */ + protected $collaboratorSearch; protected function setUp() { parent::setUp(); - $this->userManager = $this->getMockBuilder('OCP\IUserManager') - ->disableOriginalConstructor() - ->getMock(); + $this->request = $this->createMock(IRequest::class); + $this->shareManager = $this->createMock(IManager::class); - $this->groupManager = $this->getMockBuilder('OCP\IGroupManager') - ->disableOriginalConstructor() - ->getMock(); + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject $configMock */ + $configMock = $this->createMock(IConfig::class); - $this->contactsManager = $this->getMockBuilder('OCP\Contacts\IManager') - ->disableOriginalConstructor() - ->getMock(); + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject $urlGeneratorMock */ + $urlGeneratorMock = $this->createMock(IURLGenerator::class); - $this->session = $this->getMockBuilder('OCP\IUserSession') - ->disableOriginalConstructor() - ->getMock(); - - $this->request = $this->getMockBuilder('OCP\IRequest') - ->disableOriginalConstructor() - ->getMock(); - - $this->shareManager = $this->getMockBuilder('OCP\Share\IManager') - ->disableOriginalConstructor() - ->getMock(); - - $this->clientService = $this->createMock(IClientService::class); - - $this->cloudIdManager = new CloudIdManager(); + $this->collaboratorSearch = $this->createMock(ISearch::class); $this->sharees = new ShareesAPIController( 'files_sharing', $this->request, - $this->groupManager, - $this->userManager, - $this->contactsManager, - $this->getMockBuilder('OCP\IConfig')->disableOriginalConstructor()->getMock(), - $this->session, - $this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(), - $this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(), + $configMock, + $urlGeneratorMock, $this->shareManager, - $this->clientService, - $this->cloudIdManager + $this->collaboratorSearch ); } - /** - * @param string $uid - * @param string $displayName - * @return \OCP\IUser|\PHPUnit_Framework_MockObject_MockObject - */ - protected function getUserMock($uid, $displayName) { - $user = $this->getMockBuilder('OCP\IUser') - ->disableOriginalConstructor() - ->getMock(); - - $user->expects($this->any()) - ->method('getUID') - ->willReturn($uid); - - $user->expects($this->any()) - ->method('getDisplayName') - ->willReturn($displayName); - - return $user; - } - - /** - * @param string $gid - * @return \OCP\IGroup|\PHPUnit_Framework_MockObject_MockObject - */ - protected function getGroupMock($gid, $displayName = null) { - $group = $this->getMockBuilder('OCP\IGroup') - ->disableOriginalConstructor() - ->getMock(); - - $group->expects($this->any()) - ->method('getGID') - ->willReturn($gid); - - if (is_null($displayName)) { - // note: this is how the Group class behaves - $displayName = $gid; - } - - $group->expects($this->any()) - ->method('getDisplayName') - ->willReturn($displayName); - - return $group; - } - - public function dataGetUsers() { - return [ - ['test', false, true, [], [], [], [], true, false], - ['test', false, false, [], [], [], [], true, false], - ['test', true, true, [], [], [], [], true, false], - ['test', true, false, [], [], [], [], true, false], - [ - 'test', false, true, [], [], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', false, false, [], [], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', true, true, [], [], - [], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', true, false, [], [], - [], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', true, true, ['test-group'], [['test-group', 'test', 2, 0, []]], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', true, false, ['test-group'], [['test-group', 'test', 2, 0, []]], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], [], true, $this->getUserMock('test', 'Test') - ], - [ - 'test', - false, - true, - [], - [ - $this->getUserMock('test1', 'Test One'), - ], - [], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], - true, - false, - ], - [ - 'test', - false, - false, - [], - [ - $this->getUserMock('test1', 'Test One'), - ], - [], - [], - true, - false, - ], - [ - 'test', - false, - true, - [], - [ - $this->getUserMock('test1', 'Test One'), - $this->getUserMock('test2', 'Test Two'), - ], - [], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ['label' => 'Test Two', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], - false, - false, - ], - [ - 'test', - false, - false, - [], - [ - $this->getUserMock('test1', 'Test One'), - $this->getUserMock('test2', 'Test Two'), - ], - [], - [], - true, - false, - ], - [ - 'test', - false, - true, - [], - [ - $this->getUserMock('test0', 'Test'), - $this->getUserMock('test1', 'Test One'), - $this->getUserMock('test2', 'Test Two'), - ], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test0']], - ], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ['label' => 'Test Two', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], - false, - false, - ], - [ - 'test', - false, - false, - [], - [ - $this->getUserMock('test0', 'Test'), - $this->getUserMock('test1', 'Test One'), - $this->getUserMock('test2', 'Test Two'), - ], - [ - ['label' => 'Test', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test0']], - ], - [], - true, - false, - ], - [ - 'test', - true, - true, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, ['test1' => 'Test One']], - ['xyz', 'test', 2, 0, []], - ], - [], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], - true, - false, - ], - [ - 'test', - true, - false, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, ['test1' => 'Test One']], - ['xyz', 'test', 2, 0, []], - ], - [], - [], - true, - false, - ], - [ - 'test', - true, - true, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, [ - 'test1' => 'Test One', - 'test2' => 'Test Two', - ]], - ['xyz', 'test', 2, 0, [ - 'test1' => 'Test One', - 'test2' => 'Test Two', - ]], - ], - [], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ['label' => 'Test Two', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], - false, - false, - ], - [ - 'test', - true, - false, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, [ - 'test1' => 'Test One', - 'test2' => 'Test Two', - ]], - ['xyz', 'test', 2, 0, [ - 'test1' => 'Test One', - 'test2' => 'Test Two', - ]], - ], - [], - [], - true, - false, - ], - [ - 'test', - true, - true, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, [ - 'test' => 'Test One', - ]], - ['xyz', 'test', 2, 0, [ - 'test2' => 'Test Two', - ]], - ], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], - [ - ['label' => 'Test Two', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], - false, - false, - ], - [ - 'test', - true, - false, - ['abc', 'xyz'], - [ - ['abc', 'test', 2, 0, [ - 'test' => 'Test One', - ]], - ['xyz', 'test', 2, 0, [ - 'test2' => 'Test Two', - ]], - ], - [ - ['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test']], - ], - [], - true, - false, - ], - ]; - } - - /** - * @dataProvider dataGetUsers - * - * @param string $searchTerm - * @param bool $shareWithGroupOnly - * @param bool $shareeEnumeration - * @param array $groupResponse - * @param array $userResponse - * @param array $exactExpected - * @param array $expected - * @param bool $reachedEnd - * @param mixed $singleUser - */ - public function testGetUsers($searchTerm, $shareWithGroupOnly, $shareeEnumeration, $groupResponse, $userResponse, $exactExpected, $expected, $reachedEnd, $singleUser) { - $this->invokePrivate($this->sharees, 'limit', [2]); - $this->invokePrivate($this->sharees, 'offset', [0]); - $this->invokePrivate($this->sharees, 'shareWithGroupOnly', [$shareWithGroupOnly]); - $this->invokePrivate($this->sharees, 'shareeEnumeration', [$shareeEnumeration]); - - $user = $this->getUserMock('admin', 'Administrator'); - $this->session->expects($this->any()) - ->method('getUser') - ->willReturn($user); - - if (!$shareWithGroupOnly) { - $this->userManager->expects($this->once()) - ->method('searchDisplayName') - ->with($searchTerm, $this->invokePrivate($this->sharees, 'limit'), $this->invokePrivate($this->sharees, 'offset')) - ->willReturn($userResponse); - } else { - if ($singleUser !== false) { - $this->groupManager->expects($this->exactly(2)) - ->method('getUserGroupIds') - ->withConsecutive( - $user, - $singleUser - ) - ->willReturn($groupResponse); - } else { - $this->groupManager->expects($this->once()) - ->method('getUserGroupIds') - ->with($user) - ->willReturn($groupResponse); - } - - $this->groupManager->expects($this->exactly(sizeof($groupResponse))) - ->method('displayNamesInGroup') - ->with($this->anything(), $searchTerm, $this->invokePrivate($this->sharees, 'limit'), $this->invokePrivate($this->sharees, 'offset')) - ->willReturnMap($userResponse); - } - - if ($singleUser !== false) { - $this->userManager->expects($this->once()) - ->method('get') - ->with($searchTerm) - ->willReturn($singleUser); - } - - $this->invokePrivate($this->sharees, 'getUsers', [$searchTerm]); - $result = $this->invokePrivate($this->sharees, 'result'); - - $this->assertEquals($exactExpected, $result['exact']['users']); - $this->assertEquals($expected, $result['users']); - $this->assertCount((int) $reachedEnd, $this->invokePrivate($this->sharees, 'reachedEndFor')); - } - - public function dataGetGroups() { - return [ - ['test', false, true, [], [], [], [], true, false], - ['test', false, false, [], [], [], [], true, false], - // group without display name - [ - 'test', false, true, - [$this->getGroupMock('test1')], - [], - [], - [['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - true, - false, - ], - // group with display name, search by id - [ - 'test', false, true, - [$this->getGroupMock('test1', 'Test One')], - [], - [], - [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - true, - false, - ], - // group with display name, search by display name - [ - 'one', false, true, - [$this->getGroupMock('test1', 'Test One')], - [], - [], - [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - true, - false, - ], - // group with display name, search by display name, exact expected - [ - 'Test One', false, true, - [$this->getGroupMock('test1', 'Test One')], - [], - [['label' => 'Test One', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - [], - true, - false, - ], - [ - 'test', false, false, - [$this->getGroupMock('test1')], - [], - [], - [], - true, - false, - ], - [ - 'test', false, true, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - false, - false, - ], - [ - 'test', false, false, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [], - true, - false, - ], - [ - 'test', false, true, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [], - [], - [ - ['label' => 'test0', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test0']], - ['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']], - ], - false, - null, - ], - [ - 'test', false, false, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [], - [], - [], - true, - null, - ], - [ - 'test', false, true, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [], - [ - ['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']], - ], - [ - ['label' => 'test0', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test0']], - ['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']], - ], - false, - $this->getGroupMock('test'), - ], - [ - 'test', false, false, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [], - [ - ['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']], - ], - [], - true, - $this->getGroupMock('test'), - ], - ['test', true, true, [], [], [], [], true, false], - ['test', true, false, [], [], [], [], true, false], - [ - 'test', true, true, - [ - $this->getGroupMock('test1'), - $this->getGroupMock('test2'), - ], - [$this->getGroupMock('test1')], - [], - [['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - false, - false, - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test1'), - $this->getGroupMock('test2'), - ], - [$this->getGroupMock('test1')], - [], - [], - true, - false, - ], - [ - 'test', true, true, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test')], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [], - false, - false, - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test')], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [], - true, - false, - ], - [ - 'test', true, true, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test1')], - [], - [['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - false, - false, - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test1')], - [], - [], - true, - false, - ], - [ - 'test', true, true, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']]], - false, - false, - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']]], - [], - true, - false, - ], - [ - 'test', true, true, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [], - [ - ['label' => 'test0', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test0']], - ['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']], - ], - false, - null, - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [], - [], - true, - null, - ], - [ - 'test', true, true, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [ - ['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']], - ], - [ - ['label' => 'test0', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test0']], - ['label' => 'test1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test1']], - ], - false, - $this->getGroupMock('test'), - ], - [ - 'test', true, false, - [ - $this->getGroupMock('test0'), - $this->getGroupMock('test1'), - ], - [$this->getGroupMock('test'), $this->getGroupMock('test0'), $this->getGroupMock('test1')], - [ - ['label' => 'test', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'test']], - ], - [], - true, - $this->getGroupMock('test'), - ], - ]; - } - - /** - * @dataProvider dataGetGroups - * - * @param string $searchTerm - * @param bool $shareWithGroupOnly - * @param bool $shareeEnumeration - * @param array $groupResponse - * @param array $userGroupsResponse - * @param array $exactExpected - * @param array $expected - * @param bool $reachedEnd - * @param mixed $singleGroup - */ - public function testGetGroups($searchTerm, $shareWithGroupOnly, $shareeEnumeration, $groupResponse, $userGroupsResponse, $exactExpected, $expected, $reachedEnd, $singleGroup) { - $this->invokePrivate($this->sharees, 'limit', [2]); - $this->invokePrivate($this->sharees, 'offset', [0]); - $this->invokePrivate($this->sharees, 'shareWithGroupOnly', [$shareWithGroupOnly]); - $this->invokePrivate($this->sharees, 'shareeEnumeration', [$shareeEnumeration]); - - $this->groupManager->expects($this->once()) - ->method('search') - ->with($searchTerm, $this->invokePrivate($this->sharees, 'limit'), $this->invokePrivate($this->sharees, 'offset')) - ->willReturn($groupResponse); - - if ($singleGroup !== false) { - $this->groupManager->expects($this->once()) - ->method('get') - ->with($searchTerm) - ->willReturn($singleGroup); - } - - if ($shareWithGroupOnly) { - $user = $this->getUserMock('admin', 'Administrator'); - $this->session->expects($this->any()) - ->method('getUser') - ->willReturn($user); - - $numGetUserGroupsCalls = empty($groupResponse) ? 0 : 1; - $this->groupManager->expects($this->exactly($numGetUserGroupsCalls)) - ->method('getUserGroups') - ->with($user) - ->willReturn($userGroupsResponse); - } - - $this->invokePrivate($this->sharees, 'getGroups', [$searchTerm]); - $result = $this->invokePrivate($this->sharees, 'result'); - - $this->assertEquals($exactExpected, $result['exact']['groups']); - $this->assertEquals($expected, $result['groups']); - $this->assertCount((int) $reachedEnd, $this->invokePrivate($this->sharees, 'reachedEndFor')); - } - - /** - * @dataProvider dataGetRemote - * - * @param string $searchTerm - * @param array $contacts - * @param bool $shareeEnumeration - * @param array $expected - * @param bool $reachedEnd - */ - public function testGetRemote($searchTerm, $contacts, $shareeEnumeration, $expected, $reachedEnd) { - $this->invokePrivate($this->sharees, 'shareeEnumeration', [$shareeEnumeration]); - $this->contactsManager->expects($this->any()) - ->method('search') - ->with($searchTerm, ['CLOUD', 'FN']) - ->willReturn($contacts); - - $result = $this->invokePrivate($this->sharees, 'getRemote', [$searchTerm]); - - $this->assertEquals($expected, $result); - $this->assertCount((int) $reachedEnd, $this->invokePrivate($this->sharees, 'reachedEndFor')); - } - - public function dataGetRemote() { - return [ - ['test', [], true, ['results' => [], 'exact' => [], 'exactIdMatch' => false], true], - ['test', [], false, ['results' => [], 'exact' => [], 'exactIdMatch' => false], true], - [ - 'test@remote', - [], - true, - ['results' => [], 'exact' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote', - [], - false, - ['results' => [], 'exact' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]], 'exactIdMatch' => false], - true, - ], - [ - 'test', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => [], 'exactIdMatch' => false], - true, - ], - [ - 'test', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]], 'exactIdMatch' => false], - true, - ], - [ - 'username@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [], 'exact' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exactIdMatch' => true], - true, - ], - [ - 'username@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exactIdMatch' => true], - true, - ], - // contact with space - [ - 'user name@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User Name @ Localhost', - 'CLOUD' => [ - 'user name@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'user name@localhost', 'server' => 'localhost']]], 'exactIdMatch' => true], - true, - ], - // remote with space, no contact - [ - 'user space@remote', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'CLOUD' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'CLOUD' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'user space@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'user space@remote']]], 'exactIdMatch' => false], - true, - ], - ]; - } - - /** - * @dataProvider dataGetEmail - * - * @param string $searchTerm - * @param array $contacts - * @param bool $shareeEnumeration - * @param array $expected - * @param bool $reachedEnd - */ - public function testGetEmail($searchTerm, $contacts, $shareeEnumeration, $expected, $reachedEnd) { - $this->invokePrivate($this->sharees, 'shareeEnumeration', [$shareeEnumeration]); - $this->contactsManager->expects($this->any()) - ->method('search') - ->with($searchTerm, ['EMAIL', 'FN']) - ->willReturn($contacts); - - $result = $this->invokePrivate($this->sharees, 'getEmail', [$searchTerm]); - - $this->assertEquals($expected, $result); - $this->assertCount((int) $reachedEnd, $this->invokePrivate($this->sharees, 'reachedEndFor')); - } - - public function dataGetEmail() { - return [ - ['test', [], true, ['results' => [], 'exact' => [], 'exactIdMatch' => false], true], - ['test', [], false, ['results' => [], 'exact' => [], 'exactIdMatch' => false], true], - [ - 'test@remote.com', - [], - true, - ['results' => [], 'exact' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]], 'exactIdMatch' => false], - true, - ], - [ // no valid email address - 'test@remote', - [], - true, - ['results' => [], 'exact' => [], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote.com', - [], - false, - ['results' => [], 'exact' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]], 'exactIdMatch' => false], - true, - ], - [ - 'test', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => [], 'exactIdMatch' => false], - true, - ], - [ - 'test', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote.com', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]], 'exactIdMatch' => false], - true, - ], - [ - 'test@remote.com', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]], 'exactIdMatch' => false], - true, - ], - [ - 'username@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - true, - ['results' => [], 'exact' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exactIdMatch' => true], - true, - ], - [ - 'username@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exactIdMatch' => true], - true, - ], - // contact with space - [ - 'user name@localhost', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User Name @ Localhost', - 'EMAIL' => [ - 'user name@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'user name@localhost']]], 'exactIdMatch' => true], - true, - ], - // remote with space, no contact - [ - 'user space@remote.com', - [ - [ - 'FN' => 'User3 @ Localhost', - ], - [ - 'FN' => 'User2 @ Localhost', - 'EMAIL' => [ - ], - ], - [ - 'FN' => 'User @ Localhost', - 'EMAIL' => [ - 'username@localhost', - ], - ], - ], - false, - ['results' => [], 'exact' => [], 'exactIdMatch' => false], - true, - ], - // Local user found by email - [ - 'test@example.com', - [ - [ - 'FN' => 'User', - 'EMAIL' => ['test@example.com'], - 'CLOUD' => ['test@localhost'], - 'isLocalSystemBook' => true, - ] - ], - false, - ['results' => [], 'exact' => [], 'exactIdMatch' => true], - false, - ] - ]; - } - public function dataSearch() { $noRemote = [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_EMAIL]; $allTypes = [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE, Share::SHARE_TYPE_EMAIL]; @@ -1424,14 +214,13 @@ class ShareesAPIControllerTest extends TestCase { */ public function testSearch($getData, $apiSetting, $enumSetting, $remoteSharingEnabled, $emailSharingEnabled, $shareTypes, $shareWithGroupOnly, $shareeEnumeration, $allowGroupSharing) { $search = isset($getData['search']) ? $getData['search'] : ''; - $itemType = isset($getData['itemType']) ? $getData['itemType'] : null; + $itemType = isset($getData['itemType']) ? $getData['itemType'] : 'irrelevant'; $page = isset($getData['page']) ? $getData['page'] : 1; $perPage = isset($getData['perPage']) ? $getData['perPage'] : 200; $shareType = isset($getData['shareType']) ? $getData['shareType'] : null; - $config = $this->getMockBuilder('OCP\IConfig') - ->disableOriginalConstructor() - ->getMock(); + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject $config */ + $config = $this->createMock(IConfig::class); $config->expects($this->exactly(2)) ->method('getAppValue') ->with('core', $this->anything(), $this->anything()) @@ -1444,41 +233,29 @@ class ShareesAPIControllerTest extends TestCase { ->method('allowGroupSharing') ->willReturn($allowGroupSharing); + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject $request */ + $request = $this->createMock(IRequest::class); + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject $urlGenerator */ + $urlGenerator = $this->createMock(IURLGenerator::class); + /** @var \PHPUnit_Framework_MockObject_MockObject|\OCA\Files_Sharing\Controller\ShareesAPIController $sharees */ $sharees = $this->getMockBuilder('\OCA\Files_Sharing\Controller\ShareesAPIController') ->setConstructorArgs([ 'files_sharing', - $this->getMockBuilder('OCP\IRequest')->disableOriginalConstructor()->getMock(), - $this->groupManager, - $this->userManager, - $this->contactsManager, + $request, $config, - $this->session, - $this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(), - $this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(), + $urlGenerator, $this->shareManager, - $this->clientService, - $this->cloudIdManager + $this->collaboratorSearch ]) - ->setMethods(array('searchSharees', 'isRemoteSharingAllowed', 'shareProviderExists')) + ->setMethods(['isRemoteSharingAllowed', 'shareProviderExists']) ->getMock(); - $sharees->expects($this->once()) - ->method('searchSharees') - ->willReturnCallback(function - ($isearch, $iitemType, $ishareTypes, $ipage, $iperPage) - use ($search, $itemType, $shareTypes, $page, $perPage) { - // We are doing strict comparisons here, so we can differ 0/'' and null on shareType/itemType - $this->assertSame($search, $isearch); - $this->assertSame($itemType, $iitemType); - $this->assertSame(count($shareTypes), count($ishareTypes)); - foreach($shareTypes as $expected) { - $this->assertTrue(in_array($expected, $ishareTypes)); - } - $this->assertSame($page, $ipage); - $this->assertSame($perPage, $iperPage); - return new Http\DataResponse(); - }); + $this->collaboratorSearch->expects($this->once()) + ->method('search') + ->with($search, $shareTypes, $this->anything(), $perPage, $perPage * ($page -1)) + ->willReturn([[], false]); + $sharees->expects($this->any()) ->method('isRemoteSharingAllowed') ->with($itemType) @@ -1531,35 +308,34 @@ class ShareesAPIControllerTest extends TestCase { $page = isset($getData['page']) ? $getData['page'] : 1; $perPage = isset($getData['perPage']) ? $getData['perPage'] : 200; - $config = $this->getMockBuilder('OCP\IConfig') - ->disableOriginalConstructor() - ->getMock(); + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject $config */ + $config = $this->createMock(IConfig::class); $config->expects($this->never()) ->method('getAppValue'); + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject $request */ + $request = $this->createMock(IRequest::class); + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject $urlGenerator */ + $urlGenerator = $this->createMock(IURLGenerator::class); + /** @var \PHPUnit_Framework_MockObject_MockObject|\OCA\Files_Sharing\Controller\ShareesAPIController $sharees */ $sharees = $this->getMockBuilder('\OCA\Files_Sharing\Controller\ShareesAPIController') ->setConstructorArgs([ 'files_sharing', - $this->getMockBuilder('OCP\IRequest')->disableOriginalConstructor()->getMock(), - $this->groupManager, - $this->userManager, - $this->contactsManager, + $request, $config, - $this->session, - $this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(), - $this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(), + $urlGenerator, $this->shareManager, - $this->clientService, - $this->cloudIdManager + $this->collaboratorSearch ]) - ->setMethods(array('searchSharees', 'isRemoteSharingAllowed')) + ->setMethods(['isRemoteSharingAllowed']) ->getMock(); $sharees->expects($this->never()) - ->method('searchSharees'); - $sharees->expects($this->never()) ->method('isRemoteSharingAllowed'); + $this->collaboratorSearch->expects($this->never()) + ->method('search'); + try { $sharees->search('', null, $page, $perPage, null); $this->fail(); @@ -1587,188 +363,12 @@ class ShareesAPIControllerTest extends TestCase { $this->assertSame($expected, $this->invokePrivate($this->sharees, 'isRemoteSharingAllowed', [$itemType])); } - public function dataSearchSharees() { - return [ - ['test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [], [], ['results' => [], 'exact' => [], 'exactIdMatch' => false], - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [], - 'groups' => [], - 'remotes' => [], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], false], - ['test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [], [], ['results' => [], 'exact' => [], 'exactIdMatch' => false], - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [], - 'groups' => [], - 'remotes' => [], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], false], - [ - 'test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE], 1, 2, false, [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], [ - ['label' => 'testgroup1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'testgroup1']], - ], [ - 'results' => [['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']]], 'exact' => [], 'exactIdMatch' => false, - ], - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], - 'groups' => [ - ['label' => 'testgroup1', 'value' => ['shareType' => Share::SHARE_TYPE_GROUP, 'shareWith' => 'testgroup1']], - ], - 'remotes' => [ - ['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']], - ], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], true, - ], - // No groups requested - [ - 'test', 'folder', [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_REMOTE], 1, 2, false, [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], null, [ - 'results' => [['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']]], 'exact' => [], 'exactIdMatch' => false - ], - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], - 'groups' => [], - 'remotes' => [ - ['label' => 'testz@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'testz@remote']], - ], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], false, - ], - // Share type restricted to user - Only one user - [ - 'test', 'folder', [Share::SHARE_TYPE_USER], 1, 2, false, [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], null, null, - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [ - ['label' => 'test One', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ], - 'groups' => [], - 'remotes' => [], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], false, - ], - // Share type restricted to user - Multipage result - [ - 'test', 'folder', [Share::SHARE_TYPE_USER], 1, 2, false, [ - ['label' => 'test 1', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ['label' => 'test 2', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], null, null, - [ - 'exact' => ['users' => [], 'groups' => [], 'remotes' => [], 'circles' => [], 'emails' => []], - 'users' => [ - ['label' => 'test 1', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], - ['label' => 'test 2', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], - ], - 'groups' => [], - 'remotes' => [], - 'emails' => [], - 'circles' => [], - 'lookup' => [], - ], true, - ], - ]; - } - - /** - * @dataProvider dataSearchSharees - * - * @param string $searchTerm - * @param string $itemType - * @param array $shareTypes - * @param int $page - * @param int $perPage - * @param bool $shareWithGroupOnly - * @param array $mockedUserResult - * @param array $mockedGroupsResult - * @param array $mockedRemotesResult - * @param array $expected - * @param bool $nextLink - */ - public function testSearchSharees($searchTerm, $itemType, array $shareTypes, $page, $perPage, $shareWithGroupOnly, - $mockedUserResult, $mockedGroupsResult, $mockedRemotesResult, $expected, $nextLink) { - /** @var \PHPUnit_Framework_MockObject_MockObject|\OCA\Files_Sharing\Controller\ShareesAPIController $sharees */ - $sharees = $this->getMockBuilder('\OCA\Files_Sharing\Controller\ShareesAPIController') - ->setConstructorArgs([ - 'files_sharing', - $this->getMockBuilder('OCP\IRequest')->disableOriginalConstructor()->getMock(), - $this->groupManager, - $this->userManager, - $this->contactsManager, - $this->getMockBuilder('OCP\IConfig')->disableOriginalConstructor()->getMock(), - $this->session, - $this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock(), - $this->getMockBuilder('OCP\ILogger')->disableOriginalConstructor()->getMock(), - $this->shareManager, - $this->clientService, - $this->cloudIdManager - ]) - ->setMethods(array('getShareesForShareIds', 'getUsers', 'getGroups', 'getRemote')) - ->getMock(); - $sharees->expects(($mockedUserResult === null) ? $this->never() : $this->once()) - ->method('getUsers') - ->with($searchTerm) - ->willReturnCallback(function() use ($sharees, $mockedUserResult) { - $result = $this->invokePrivate($sharees, 'result'); - $result['users'] = $mockedUserResult; - $this->invokePrivate($sharees, 'result', [$result]); - }); - $sharees->expects(($mockedGroupsResult === null) ? $this->never() : $this->once()) - ->method('getGroups') - ->with($searchTerm) - ->willReturnCallback(function() use ($sharees, $mockedGroupsResult) { - $result = $this->invokePrivate($sharees, 'result'); - $result['groups'] = $mockedGroupsResult; - $this->invokePrivate($sharees, 'result', [$result]); - }); - - $sharees->expects(($mockedRemotesResult === null) ? $this->never() : $this->once()) - ->method('getRemote') - ->with($searchTerm) - ->willReturn($mockedRemotesResult); - - $ocs = $this->invokePrivate($sharees, 'searchSharees', [$searchTerm, $itemType, $shareTypes, $page, $perPage, $shareWithGroupOnly]); - $this->assertInstanceOf('\OCP\AppFramework\Http\DataResponse', $ocs); - $this->assertEquals($expected, $ocs->getData()); - - // Check if next link is set - if ($nextLink) { - $headers = $ocs->getHeaders(); - $this->assertArrayHasKey('Link', $headers); - $this->assertStringStartsWith('<', $headers['Link']); - $this->assertStringEndsWith('>; rel="next"', $headers['Link']); - } - } - /** * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException * @expectedExceptionMessage Missing itemType */ - public function testSearchShareesNoItemType() { - $this->invokePrivate($this->sharees, 'searchSharees', ['', null, [], [], 0, 0, false]); + public function testSearchNoItemType() { + $this->sharees->search('', null, 1, 10, [], false); } public function dataGetPaginationLink() { @@ -1814,97 +414,4 @@ class ShareesAPIControllerTest extends TestCase { $this->assertEquals($expected, $this->invokePrivate($this->sharees, 'isV2')); } - - /** - * @dataProvider dataTestSplitUserRemote - * - * @param string $remote - * @param string $expectedUser - * @param string $expectedUrl - */ - public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) { - list($remoteUser, $remoteUrl) = $this->sharees->splitUserRemote($remote); - $this->assertSame($expectedUser, $remoteUser); - $this->assertSame($expectedUrl, $remoteUrl); - } - - public function dataTestSplitUserRemote() { - $userPrefix = ['user@name', 'username']; - $protocols = ['', 'http://', 'https://']; - $remotes = [ - 'localhost', - 'local.host', - 'dev.local.host', - 'dev.local.host/path', - 'dev.local.host/at@inpath', - '127.0.0.1', - '::1', - '::192.0.2.128', - '::192.0.2.128/at@inpath', - ]; - - $testCases = []; - foreach ($userPrefix as $user) { - foreach ($remotes as $remote) { - foreach ($protocols as $protocol) { - $baseUrl = $user . '@' . $protocol . $remote; - - $testCases[] = [$baseUrl, $user, $protocol . $remote]; - $testCases[] = [$baseUrl . '/', $user, $protocol . $remote]; - $testCases[] = [$baseUrl . '/index.php', $user, $protocol . $remote]; - $testCases[] = [$baseUrl . '/index.php/s/token', $user, $protocol . $remote]; - } - } - } - return $testCases; - } - - public function dataTestSplitUserRemoteError() { - return array( - // Invalid path - array('user@'), - - // Invalid user - array('@server'), - array('us/er@server'), - array('us:er@server'), - - // Invalid splitting - array('user'), - array(''), - array('us/erserver'), - array('us:erserver'), - ); - } - - /** - * @dataProvider dataTestSplitUserRemoteError - * - * @param string $id - * @expectedException \Exception - */ - public function testSplitUserRemoteError($id) { - $this->sharees->splitUserRemote($id); - } - - /** - * @dataProvider dataTestFixRemoteUrl - * - * @param string $url - * @param string $expected - */ - public function testFixRemoteUrl($url, $expected) { - $this->assertSame($expected, - $this->invokePrivate($this->sharees, 'fixRemoteURL', [$url]) - ); - } - - public function dataTestFixRemoteUrl() { - return [ - ['http://localhost', 'http://localhost'], - ['http://localhost/', 'http://localhost'], - ['http://localhost/index.php', 'http://localhost'], - ['http://localhost/index.php/s/AShareToken', 'http://localhost'], - ]; - } } diff --git a/apps/files_trashbin/l10n/fa.js b/apps/files_trashbin/l10n/fa.js index 281851c65a0..b3c63104b04 100644 --- a/apps/files_trashbin/l10n/fa.js +++ b/apps/files_trashbin/l10n/fa.js @@ -11,6 +11,8 @@ OC.L10N.register( "This operation is forbidden" : "این عملیات غیرمجاز است", "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", "restored" : "بازیابی شد", + "No deleted files" : "هیچ فایل حذف شده وجود ندارد", + "You will be able to recover deleted files from here" : "شما قادر خواهید بود فایل های حذف شده را از اینجا بازیابی کنید", "No entries found in this folder" : "هیچ ورودیای در این پوشه وجود ندارد", "Select all" : "انتخاب همه", "Name" : "نام", diff --git a/apps/files_trashbin/l10n/fa.json b/apps/files_trashbin/l10n/fa.json index 08bee906d38..09ff91cc2e0 100644 --- a/apps/files_trashbin/l10n/fa.json +++ b/apps/files_trashbin/l10n/fa.json @@ -9,6 +9,8 @@ "This operation is forbidden" : "این عملیات غیرمجاز است", "This directory is unavailable, please check the logs or contact the administrator" : "پوشه در دسترس نیست، لطفا لاگها را بررسی کنید یا به مدیر سیستم اطلاع دهید", "restored" : "بازیابی شد", + "No deleted files" : "هیچ فایل حذف شده وجود ندارد", + "You will be able to recover deleted files from here" : "شما قادر خواهید بود فایل های حذف شده را از اینجا بازیابی کنید", "No entries found in this folder" : "هیچ ورودیای در این پوشه وجود ندارد", "Select all" : "انتخاب همه", "Name" : "نام", diff --git a/apps/files_trashbin/l10n/pt_PT.js b/apps/files_trashbin/l10n/pt_PT.js index 7f0f658e9b0..fbf84019251 100644 --- a/apps/files_trashbin/l10n/pt_PT.js +++ b/apps/files_trashbin/l10n/pt_PT.js @@ -9,7 +9,7 @@ OC.L10N.register( "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta pasta não está disponível, por favor, verifique os registos ou contacte o administrador", "restored" : "Restaurado", "No deleted files" : "Sem ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros eliminados a partir daqui", diff --git a/apps/files_trashbin/l10n/pt_PT.json b/apps/files_trashbin/l10n/pt_PT.json index 541a4b72f3c..d4fe15313f9 100644 --- a/apps/files_trashbin/l10n/pt_PT.json +++ b/apps/files_trashbin/l10n/pt_PT.json @@ -7,7 +7,7 @@ "Delete permanently" : "Eliminar permanentemente", "Error" : "Erro", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador", + "This directory is unavailable, please check the logs or contact the administrator" : "Esta pasta não está disponível, por favor, verifique os registos ou contacte o administrador", "restored" : "Restaurado", "No deleted files" : "Sem ficheiros eliminados", "You will be able to recover deleted files from here" : "Poderá recuperar ficheiros eliminados a partir daqui", diff --git a/apps/files_trashbin/tests/StorageTest.php b/apps/files_trashbin/tests/StorageTest.php index 2e3ddf2e6bf..bdddafcf016 100644 --- a/apps/files_trashbin/tests/StorageTest.php +++ b/apps/files_trashbin/tests/StorageTest.php @@ -530,7 +530,7 @@ class StorageTest extends \Test\TestCase { */ public function testShouldMoveToTrash($mountPoint, $path, $userExists, $appDisablesTrash, $expected) { $fileID = 1; - $cache = $this->getMock(ICache::class); + $cache = $this->createMock(ICache::class); $cache->expects($this->any())->method('getId')->willReturn($fileID); $tmpStorage = $this->getMockBuilder('\OC\Files\Storage\Temporary') ->disableOriginalConstructor()->getMock($cache); @@ -542,7 +542,7 @@ class StorageTest extends \Test\TestCase { $logger = $this->getMockBuilder(ILogger::class)->getMock(); $eventDispatcher = $this->getMockBuilder(EventDispatcher::class) ->disableOriginalConstructor()->getMock(); - $rootFolder = $this->getMock(IRootFolder::class); + $rootFolder = $this->createMock(IRootFolder::class); $node = $this->getMockBuilder(Node::class)->disableOriginalConstructor()->getMock(); $event = $this->getMockBuilder(MoveToTrashEvent::class)->disableOriginalConstructor()->getMock(); $event->expects($this->any())->method('shouldMoveToTrashBin')->willReturn(!$appDisablesTrash); diff --git a/apps/files_versions/l10n/es.js b/apps/files_versions/l10n/es.js index 2a35aca3231..c5cbac93f9b 100644 --- a/apps/files_versions/l10n/es.js +++ b/apps/files_versions/l10n/es.js @@ -6,7 +6,7 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "No se ha podido revertir {archivo} a revisión {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Recuperar", - "No earlier versions available" : "No hay versiones previouses disponibles", + "No earlier versions available" : "No hay versiones previas disponibles", "More versions …" : "Más versiones ...", "No versions available" : "No hay versiones disponibles", "More versions..." : "Más versiones..." diff --git a/apps/files_versions/l10n/es.json b/apps/files_versions/l10n/es.json index 19b2fa5ea3b..2e7fbbc5752 100644 --- a/apps/files_versions/l10n/es.json +++ b/apps/files_versions/l10n/es.json @@ -4,7 +4,7 @@ "Failed to revert {file} to revision {timestamp}." : "No se ha podido revertir {archivo} a revisión {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Recuperar", - "No earlier versions available" : "No hay versiones previouses disponibles", + "No earlier versions available" : "No hay versiones previas disponibles", "More versions …" : "Más versiones ...", "No versions available" : "No hay versiones disponibles", "More versions..." : "Más versiones..." diff --git a/apps/files_versions/l10n/nb.js b/apps/files_versions/l10n/nb.js index 14bdd10a893..40eecd966c3 100644 --- a/apps/files_versions/l10n/nb.js +++ b/apps/files_versions/l10n/nb.js @@ -4,7 +4,7 @@ OC.L10N.register( "Could not revert: %s" : "Klarte ikke å tilbakeføre: %s", "Versions" : "Versjoner", "Failed to revert {file} to revision {timestamp}." : "Klarte ikke å tilbakeføre {file} til revisjon {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n Byte","%n Byte"], + "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Restore" : "Gjenopprett", "No earlier versions available" : "Ingen tidligere versjoner tilgjengelige", "More versions …" : "Flere versjoner…", diff --git a/apps/files_versions/l10n/nb.json b/apps/files_versions/l10n/nb.json index acbba4d379c..479d4037ec8 100644 --- a/apps/files_versions/l10n/nb.json +++ b/apps/files_versions/l10n/nb.json @@ -2,7 +2,7 @@ "Could not revert: %s" : "Klarte ikke å tilbakeføre: %s", "Versions" : "Versjoner", "Failed to revert {file} to revision {timestamp}." : "Klarte ikke å tilbakeføre {file} til revisjon {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n Byte","%n Byte"], + "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Restore" : "Gjenopprett", "No earlier versions available" : "Ingen tidligere versjoner tilgjengelige", "More versions …" : "Flere versjoner…", diff --git a/apps/files_versions/l10n/sr.js b/apps/files_versions/l10n/sr.js index 812ff38f1d6..ed1e96c4573 100644 --- a/apps/files_versions/l10n/sr.js +++ b/apps/files_versions/l10n/sr.js @@ -4,8 +4,11 @@ OC.L10N.register( "Could not revert: %s" : "Не могу да вратим: %s", "Versions" : "Верзије", "Failed to revert {file} to revision {timestamp}." : "Не могу да вратим {file} на ревизију {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"], "Restore" : "Врати", - "More versions..." : "Још верзија...", - "No other versions available" : "Нема других верзија" + "No earlier versions available" : "Нема старијих верзија", + "More versions …" : "Још верзија …", + "No versions available" : "Нема доступних верзија", + "More versions..." : "Још верзија..." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_versions/l10n/sr.json b/apps/files_versions/l10n/sr.json index 11a1479daed..b9c1a71153d 100644 --- a/apps/files_versions/l10n/sr.json +++ b/apps/files_versions/l10n/sr.json @@ -2,8 +2,11 @@ "Could not revert: %s" : "Не могу да вратим: %s", "Versions" : "Верзије", "Failed to revert {file} to revision {timestamp}." : "Не могу да вратим {file} на ревизију {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"], "Restore" : "Врати", - "More versions..." : "Још верзија...", - "No other versions available" : "Нема других верзија" + "No earlier versions available" : "Нема старијих верзија", + "More versions …" : "Још верзија …", + "No versions available" : "Нема доступних верзија", + "More versions..." : "Још верзија..." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/sr.js b/apps/oauth2/l10n/sr.js new file mode 100644 index 00000000000..17bf401136d --- /dev/null +++ b/apps/oauth2/l10n/sr.js @@ -0,0 +1,13 @@ +OC.L10N.register( + "oauth2", + { + "OAuth 2.0 clients" : "OAuth 2.0 клијенти", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 дозвољава спољним сервисима да захтевају приступ на %s.", + "Name" : "Име", + "Redirection URI" : "Адреса за преусмеравање", + "Client Identifier" : "Идентификација клијента", + "Secret" : "Тајна", + "Add client" : "Додај клијента", + "Add" : "Додај" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/oauth2/l10n/sr.json b/apps/oauth2/l10n/sr.json new file mode 100644 index 00000000000..ce91adc6253 --- /dev/null +++ b/apps/oauth2/l10n/sr.json @@ -0,0 +1,11 @@ +{ "translations": { + "OAuth 2.0 clients" : "OAuth 2.0 клијенти", + "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 дозвољава спољним сервисима да захтевају приступ на %s.", + "Name" : "Име", + "Redirection URI" : "Адреса за преусмеравање", + "Client Identifier" : "Идентификација клијента", + "Secret" : "Тајна", + "Add client" : "Додај клијента", + "Add" : "Додај" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/ca.js b/apps/sharebymail/l10n/ca.js index 0783846acb7..a80a7519582 100644 --- a/apps/sharebymail/l10n/ca.js +++ b/apps/sharebymail/l10n/ca.js @@ -23,12 +23,12 @@ OC.L10N.register( "Click the button below to open it." : "Feu clic al botó següent per obrir-lo.", "Open »%s«" : "Obert »%s«", "%s via %s" : "%svia%s", - "Password to access »%s« shared to you by %s" : "Contrasenya d'accés »%s« compartida per vostè %s", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%scompartit »%s« amb tu. Heu d'haver rebut un correu independent amb un enllaç per accedir-hi.", + "Password to access »%s« shared to you by %s" : "Contrasenya d'accés »%s« compartida per vostè %s", "Password to access »%s«" : "Contrasenya d'accés »%s«", "It is protected with the following password: %s" : "Està protegit amb la següent contrasenya: %s", - "Password to access »%s« shared with %s" : "Contrasenya d'accés »%s« compartit amb %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabeu de compartir »%s« amb %s. La part ja s'ha enviat al destinatari. A causa de les polítiques de seguretat definides per l'administrador de %scada acció, ha de ser protegit per contrasenya i no es permet enviar la contrasenya directament al destinatari. Per tant, heu de reenviar la contrasenya manualment al destinatari.", + "Password to access »%s« shared with %s" : "Contrasenya d'accés »%s« compartit amb %s", "This is the password: %s" : "Aquesta és la contrasenya:%s", "You can choose a different password at any time in the share dialog." : "Podeu triar una contrasenya diferent en qualsevol moment al diàleg d'accions.", "Could not find share" : "No s'ha pogut trobar la compartició", diff --git a/apps/sharebymail/l10n/ca.json b/apps/sharebymail/l10n/ca.json index c5254f91fd0..6e0981ab4e3 100644 --- a/apps/sharebymail/l10n/ca.json +++ b/apps/sharebymail/l10n/ca.json @@ -21,12 +21,12 @@ "Click the button below to open it." : "Feu clic al botó següent per obrir-lo.", "Open »%s«" : "Obert »%s«", "%s via %s" : "%svia%s", - "Password to access »%s« shared to you by %s" : "Contrasenya d'accés »%s« compartida per vostè %s", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%scompartit »%s« amb tu. Heu d'haver rebut un correu independent amb un enllaç per accedir-hi.", + "Password to access »%s« shared to you by %s" : "Contrasenya d'accés »%s« compartida per vostè %s", "Password to access »%s«" : "Contrasenya d'accés »%s«", "It is protected with the following password: %s" : "Està protegit amb la següent contrasenya: %s", - "Password to access »%s« shared with %s" : "Contrasenya d'accés »%s« compartit amb %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabeu de compartir »%s« amb %s. La part ja s'ha enviat al destinatari. A causa de les polítiques de seguretat definides per l'administrador de %scada acció, ha de ser protegit per contrasenya i no es permet enviar la contrasenya directament al destinatari. Per tant, heu de reenviar la contrasenya manualment al destinatari.", + "Password to access »%s« shared with %s" : "Contrasenya d'accés »%s« compartit amb %s", "This is the password: %s" : "Aquesta és la contrasenya:%s", "You can choose a different password at any time in the share dialog." : "Podeu triar una contrasenya diferent en qualsevol moment al diàleg d'accions.", "Could not find share" : "No s'ha pogut trobar la compartició", diff --git a/apps/sharebymail/l10n/cs.js b/apps/sharebymail/l10n/cs.js index e3231c6a65a..b2cbfa08f41 100644 --- a/apps/sharebymail/l10n/cs.js +++ b/apps/sharebymail/l10n/cs.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.", "Open »%s«" : "Otevřít »%s«", "%s via %s" : "%s přes %s", - "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s s vámi sdílel(a) %s.", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s s vámi sdílel(a) »%s«. Již jste měli dostat e-mail s přístupovými údaji.", + "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", "Password to access »%s«" : "Heslo pro přístup k »%s«", "It is protected with the following password: %s" : "Je chráněn následujícím heslem: %s", - "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s »%s» nasdílel(a) %s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset manuálně přeposlat.", + "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", "This is the password: %s" : "Toto je heslo: %s", "You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.", "Could not find share" : "Nelze nalézt sdílení", diff --git a/apps/sharebymail/l10n/cs.json b/apps/sharebymail/l10n/cs.json index 7758949bd0f..80b4476b45d 100644 --- a/apps/sharebymail/l10n/cs.json +++ b/apps/sharebymail/l10n/cs.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.", "Open »%s«" : "Otevřít »%s«", "%s via %s" : "%s přes %s", - "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s s vámi sdílel(a) %s.", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s s vámi sdílel(a) »%s«. Již jste měli dostat e-mail s přístupovými údaji.", + "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", "Password to access »%s«" : "Heslo pro přístup k »%s«", "It is protected with the following password: %s" : "Je chráněn následujícím heslem: %s", - "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s »%s» nasdílel(a) %s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset manuálně přeposlat.", + "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", "This is the password: %s" : "Toto je heslo: %s", "You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.", "Could not find share" : "Nelze nalézt sdílení", diff --git a/apps/sharebymail/l10n/da.js b/apps/sharebymail/l10n/da.js index d37a907e5a2..cd9584039bf 100644 --- a/apps/sharebymail/l10n/da.js +++ b/apps/sharebymail/l10n/da.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klik på knappen nedenunder for at åbne.", "Open »%s«" : "Åbn »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Kodeord for adgang til »%s« delt med dig af %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delte »%s« med dig.\nDu burde allerede have modtaget en email med et link til at tilgå det.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delte »%s« med dig.\nDu burde allerede have modtaget en email med et link til at tilgå det.", + "Password to access »%s« shared to you by %s" : "Kodeord for adgang til »%s« delt med dig af %s", "Password to access »%s«" : "Kodeord for adgang til »%s«", "It is protected with the following password: %s" : "Det er beskyttet af følgende kodeord: %s", - "Password to access »%s« shared with %s" : "Password for adgang til »%s« delt med dig af %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du har delt »%s« med %s. Delingen er allerede sendt til modtageren. Pga. sikkerhedsretninger der er lavet af administratoren af %s hver deling skal beskyttes af et password og det er ikke tilladt at sende passwordet direkte til modtageren. Derfor skal du give passwordet til modtageren manuelt.", + "Password to access »%s« shared with %s" : "Password for adgang til »%s« delt med dig af %s", "This is the password: %s" : "Dette password er: %s", "You can choose a different password at any time in the share dialog." : "Du kan til enhver tid vælge et andet password i delings dialogen.", "Could not find share" : "Kan ikke finde deling", diff --git a/apps/sharebymail/l10n/da.json b/apps/sharebymail/l10n/da.json index 046d4436386..77a40542d31 100644 --- a/apps/sharebymail/l10n/da.json +++ b/apps/sharebymail/l10n/da.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klik på knappen nedenunder for at åbne.", "Open »%s«" : "Åbn »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Kodeord for adgang til »%s« delt med dig af %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delte »%s« med dig.\nDu burde allerede have modtaget en email med et link til at tilgå det.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delte »%s« med dig.\nDu burde allerede have modtaget en email med et link til at tilgå det.", + "Password to access »%s« shared to you by %s" : "Kodeord for adgang til »%s« delt med dig af %s", "Password to access »%s«" : "Kodeord for adgang til »%s«", "It is protected with the following password: %s" : "Det er beskyttet af følgende kodeord: %s", - "Password to access »%s« shared with %s" : "Password for adgang til »%s« delt med dig af %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du har delt »%s« med %s. Delingen er allerede sendt til modtageren. Pga. sikkerhedsretninger der er lavet af administratoren af %s hver deling skal beskyttes af et password og det er ikke tilladt at sende passwordet direkte til modtageren. Derfor skal du give passwordet til modtageren manuelt.", + "Password to access »%s« shared with %s" : "Password for adgang til »%s« delt med dig af %s", "This is the password: %s" : "Dette password er: %s", "You can choose a different password at any time in the share dialog." : "Du kan til enhver tid vælge et andet password i delings dialogen.", "Could not find share" : "Kan ikke finde deling", diff --git a/apps/sharebymail/l10n/de.js b/apps/sharebymail/l10n/de.js index ed08ebf76bf..ad26d8f1c5a 100644 --- a/apps/sharebymail/l10n/de.js +++ b/apps/sharebymail/l10n/de.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Dir geteilt.", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s hat »%s« mit Dir geteilt.\nDu solltest eine weitere E-Mail mit dem Link für den Zugriff erhalten haben.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s hat »%s« mit Dir geteilt. Du solltest schon eine E-Mail mit einem Link erhalten haben um darauf zu zugreifen. ", + "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Dir geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password: %s" : "Dies ist mit dem folgendem Passwort geschützt: %s", - "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%s« mit %s geteilt. Die Freigabe wurde an den Empfenger gesandt. Aufgrund der Sicherheits-Richtlinien die vom Administrator von %svorgegeben wurden, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.", + "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "This is the password: %s" : "Das Passwort lautet: %s", "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", diff --git a/apps/sharebymail/l10n/de.json b/apps/sharebymail/l10n/de.json index 367699482d9..64c6ac197ea 100644 --- a/apps/sharebymail/l10n/de.json +++ b/apps/sharebymail/l10n/de.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Dir geteilt.", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s hat »%s« mit Dir geteilt.\nDu solltest eine weitere E-Mail mit dem Link für den Zugriff erhalten haben.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s hat »%s« mit Dir geteilt. Du solltest schon eine E-Mail mit einem Link erhalten haben um darauf zu zugreifen. ", + "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Dir geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password: %s" : "Dies ist mit dem folgendem Passwort geschützt: %s", - "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%s« mit %s geteilt. Die Freigabe wurde an den Empfenger gesandt. Aufgrund der Sicherheits-Richtlinien die vom Administrator von %svorgegeben wurden, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.", + "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "This is the password: %s" : "Das Passwort lautet: %s", "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", diff --git a/apps/sharebymail/l10n/de_DE.js b/apps/sharebymail/l10n/de_DE.js index b078e0be43c..1aa24570027 100644 --- a/apps/sharebymail/l10n/de_DE.js +++ b/apps/sharebymail/l10n/de_DE.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Ihnen geteilt.", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s hat »%s« mit Ihnen geteilt.\nSie sollten eine weitere E-Mail mit dem Link für den Zugriff erhalten haben.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s hat »%s« mit Ihnen geteilt. Sie sollten schon eine E-Mail mit einem Link erhalten haben um darauf zu zugreifen. ", + "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Ihnen geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password: %s" : "Dies ist mit dem folgendem Passwort geschützt: %s", - "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sie haben »%s« mit %s geteilt. Die Freigabe wurde an den Empfenger gesandt. Aufgrund der Sicherheits-Richtlinien die vom Administrator von %svorgegeben wurden, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund müssen Sie Passwort selbst an den Empfänger senden.", + "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "This is the password: %s" : "Das Passwort lautet: %s", "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", diff --git a/apps/sharebymail/l10n/de_DE.json b/apps/sharebymail/l10n/de_DE.json index 62aeb5df736..6cc73b38876 100644 --- a/apps/sharebymail/l10n/de_DE.json +++ b/apps/sharebymail/l10n/de_DE.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Ihnen geteilt.", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s hat »%s« mit Ihnen geteilt.\nSie sollten eine weitere E-Mail mit dem Link für den Zugriff erhalten haben.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s hat »%s« mit Ihnen geteilt. Sie sollten schon eine E-Mail mit einem Link erhalten haben um darauf zu zugreifen. ", + "Password to access »%s« shared to you by %s" : "Das Passwort zum Zugriff auf %s wurde durch %s mit Ihnen geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password: %s" : "Dies ist mit dem folgendem Passwort geschützt: %s", - "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sie haben »%s« mit %s geteilt. Die Freigabe wurde an den Empfenger gesandt. Aufgrund der Sicherheits-Richtlinien die vom Administrator von %svorgegeben wurden, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund müssen Sie Passwort selbst an den Empfänger senden.", + "Password to access »%s« shared with %s" : "Passwort für den Zugriff auf %s, geteilt mit %s", "This is the password: %s" : "Das Passwort lautet: %s", "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", diff --git a/apps/sharebymail/l10n/el.js b/apps/sharebymail/l10n/el.js index 2661f7d11f5..952d5245546 100644 --- a/apps/sharebymail/l10n/el.js +++ b/apps/sharebymail/l10n/el.js @@ -23,13 +23,13 @@ OC.L10N.register( "Click the button below to open it." : "Κάντε κλικ στο παρακάτω κουμπί για να το ανοίξετε.", "Open »%s«" : "Ανοίξτε »%s«", "%s via %s" : "%s μέσω %s", - "Password to access »%s« shared to you by %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε μαζί σας μέσω %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s διαμοιράστηκε »%s« με εσάς.\nΘα πρέπει να έχετε ήδη λάβει ένα ξεχωριστό mail με έναν σύνδεσμο με πρόσβαση σε αυτό.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s διαμοιράστηκε »%s« με εσάς. Θα πρέπει να έχετε ήδη λάβει ένα ξεχωριστό mail με έναν σύνδεσμο με πρόσβαση σε αυτό.", + "Password to access »%s« shared to you by %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε μαζί σας μέσω %s", "Password to access »%s«" : "Συνθηματικό για πρόσβαση στο »%s«", "It is protected with the following password: %s" : "Είναι προστατευμένο με το ακόλουθο συνθηματικό: %s", - "Password to access »%s« shared with %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε με %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Έχετε μόλις διαμοιραστεί »%s« με %s. Ο διαμοιρασμός έχει ήδη σταλθεί στον παραλήπτη. Βάση των πολιτικών ασφαλείας που έχουν ορισθεί από τον διαχειριστή του %s ο κάθε διαμοιρασμός χρειάζεται να προστατεύεται από ένα συνθηματικό και δεν επιτρέπετε να σταλθεί το συνθηματικό απευθείας στον παραλήπτη. Επομένως χρειάζεται να προωθήσετε το συνθηματικό χειροκίνητα στον παραλήπτη.", + "Password to access »%s« shared with %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε με %s", "This is the password: %s" : "Αυτό είναι το συνθηματικό: %s", "You can choose a different password at any time in the share dialog." : "Μπορείτε να διαλέξετε ένα διαφορετικό συνθηματικό οποιαδήποτε στιγμή στον διάλογο διαμοιρασμού.", "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου", diff --git a/apps/sharebymail/l10n/el.json b/apps/sharebymail/l10n/el.json index e2f80276367..f8d942c000f 100644 --- a/apps/sharebymail/l10n/el.json +++ b/apps/sharebymail/l10n/el.json @@ -21,13 +21,13 @@ "Click the button below to open it." : "Κάντε κλικ στο παρακάτω κουμπί για να το ανοίξετε.", "Open »%s«" : "Ανοίξτε »%s«", "%s via %s" : "%s μέσω %s", - "Password to access »%s« shared to you by %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε μαζί σας μέσω %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s διαμοιράστηκε »%s« με εσάς.\nΘα πρέπει να έχετε ήδη λάβει ένα ξεχωριστό mail με έναν σύνδεσμο με πρόσβαση σε αυτό.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s διαμοιράστηκε »%s« με εσάς. Θα πρέπει να έχετε ήδη λάβει ένα ξεχωριστό mail με έναν σύνδεσμο με πρόσβαση σε αυτό.", + "Password to access »%s« shared to you by %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε μαζί σας μέσω %s", "Password to access »%s«" : "Συνθηματικό για πρόσβαση στο »%s«", "It is protected with the following password: %s" : "Είναι προστατευμένο με το ακόλουθο συνθηματικό: %s", - "Password to access »%s« shared with %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε με %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Έχετε μόλις διαμοιραστεί »%s« με %s. Ο διαμοιρασμός έχει ήδη σταλθεί στον παραλήπτη. Βάση των πολιτικών ασφαλείας που έχουν ορισθεί από τον διαχειριστή του %s ο κάθε διαμοιρασμός χρειάζεται να προστατεύεται από ένα συνθηματικό και δεν επιτρέπετε να σταλθεί το συνθηματικό απευθείας στον παραλήπτη. Επομένως χρειάζεται να προωθήσετε το συνθηματικό χειροκίνητα στον παραλήπτη.", + "Password to access »%s« shared with %s" : "Συνθηματικό για πρόσβαση στο »%s« διαμοιράστηκε με %s", "This is the password: %s" : "Αυτό είναι το συνθηματικό: %s", "You can choose a different password at any time in the share dialog." : "Μπορείτε να διαλέξετε ένα διαφορετικό συνθηματικό οποιαδήποτε στιγμή στον διάλογο διαμοιρασμού.", "Could not find share" : "Αδυναμία εύρεσης κοινόχρηστου", diff --git a/apps/sharebymail/l10n/en_GB.js b/apps/sharebymail/l10n/en_GB.js index 51de9bcd3e3..463c28fa631 100644 --- a/apps/sharebymail/l10n/en_GB.js +++ b/apps/sharebymail/l10n/en_GB.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Click the button below to open it.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Password to access »%s« shared to you by %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s shared »%s« with you. You should have already received a separate mail with a link to access it.", + "Password to access »%s« shared to you by %s" : "Password to access »%s« shared to you by %s", "Password to access »%s«" : "Password to access »%s«", "It is protected with the following password: %s" : "It is protected with the following password: %s", - "Password to access »%s« shared with %s" : "Password to access »%s« shared with %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.", + "Password to access »%s« shared with %s" : "Password to access »%s« shared with %s", "This is the password: %s" : "This is the password: %s", "You can choose a different password at any time in the share dialog." : "You can choose a different password at any time in the share dialog.", "Could not find share" : "Could not find share", diff --git a/apps/sharebymail/l10n/en_GB.json b/apps/sharebymail/l10n/en_GB.json index 8ba45b8fa2c..5b9d653745c 100644 --- a/apps/sharebymail/l10n/en_GB.json +++ b/apps/sharebymail/l10n/en_GB.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Click the button below to open it.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Password to access »%s« shared to you by %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s shared »%s« with you. You should have already received a separate mail with a link to access it.", + "Password to access »%s« shared to you by %s" : "Password to access »%s« shared to you by %s", "Password to access »%s«" : "Password to access »%s«", "It is protected with the following password: %s" : "It is protected with the following password: %s", - "Password to access »%s« shared with %s" : "Password to access »%s« shared with %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.", + "Password to access »%s« shared with %s" : "Password to access »%s« shared with %s", "This is the password: %s" : "This is the password: %s", "You can choose a different password at any time in the share dialog." : "You can choose a different password at any time in the share dialog.", "Could not find share" : "Could not find share", diff --git a/apps/sharebymail/l10n/es.js b/apps/sharebymail/l10n/es.js index f205576ac9c..3f01dc6f3fe 100644 --- a/apps/sharebymail/l10n/es.js +++ b/apps/sharebymail/l10n/es.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Haga click en el botón debajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s por %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con un enlace para acceder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Debería haber recibido un mensaje de correo separado con un enlace para abrirlo.", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted acaba de compartir »%s« con %s. El recurso compartido ya fue enviado al destinatario. Debido a las reglas de seguridad definadas por el administrador de %s cada recurso compartido necesita ser protegido por una contraseña y no esta permitido que usted mande la contraseña directamente al destinatario. Por eso, usted necesita mandar la contraseña manualmente al destinatario.", + "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.", "Could not find share" : "No se pudo encontrar el recurso compartido", diff --git a/apps/sharebymail/l10n/es.json b/apps/sharebymail/l10n/es.json index 126ec78cbf2..1faa382564d 100644 --- a/apps/sharebymail/l10n/es.json +++ b/apps/sharebymail/l10n/es.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Haga click en el botón debajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s por %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con un enlace para acceder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Debería haber recibido un mensaje de correo separado con un enlace para abrirlo.", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted acaba de compartir »%s« con %s. El recurso compartido ya fue enviado al destinatario. Debido a las reglas de seguridad definadas por el administrador de %s cada recurso compartido necesita ser protegido por una contraseña y no esta permitido que usted mande la contraseña directamente al destinatario. Por eso, usted necesita mandar la contraseña manualmente al destinatario.", + "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.", "Could not find share" : "No se pudo encontrar el recurso compartido", diff --git a/apps/sharebymail/l10n/es_AR.js b/apps/sharebymail/l10n/es_AR.js index 14cc043d919..f2fa571d1cd 100644 --- a/apps/sharebymail/l10n/es_AR.js +++ b/apps/sharebymail/l10n/es_AR.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Haga click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s ", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« con usted.\nDebería haber recibido ya un correo por separado con el link para accederlo. \n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Ya debería haber recibido un correo aparte con el link para accederlo. ", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s ", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted compartió »%s« con %s. El elemento compartido ya ha sido enviado al destinatario. Debido a las políticas de seguridad definidas por el administrador de %s cada elelento compartido debe ser protegido por una contraseña y no se permite enviar la contraseña directamente al destinatario. Por lo tanto necesita reenviar la contaseña manualmente al destinatario. ", + "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puede elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", diff --git a/apps/sharebymail/l10n/es_AR.json b/apps/sharebymail/l10n/es_AR.json index 4b27cbe5782..d7c9861e44b 100644 --- a/apps/sharebymail/l10n/es_AR.json +++ b/apps/sharebymail/l10n/es_AR.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Haga click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s ", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« con usted.\nDebería haber recibido ya un correo por separado con el link para accederlo. \n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Ya debería haber recibido un correo aparte con el link para accederlo. ", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s ", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted compartió »%s« con %s. El elemento compartido ya ha sido enviado al destinatario. Debido a las políticas de seguridad definidas por el administrador de %s cada elelento compartido debe ser protegido por una contraseña y no se permite enviar la contraseña directamente al destinatario. Por lo tanto necesita reenviar la contaseña manualmente al destinatario. ", + "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puede elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", diff --git a/apps/sharebymail/l10n/es_MX.js b/apps/sharebymail/l10n/es_MX.js index 9dc5ee4b55d..92f61e8f63e 100644 --- a/apps/sharebymail/l10n/es_MX.js +++ b/apps/sharebymail/l10n/es_MX.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con la liga para accederlo. \n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« contigo. Ya deberías haber recibido un correo aparte con la liga para accederlo. ", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabas de compartir »%s« con %s. El elemento compartido ya ha sido enviado al destinatario. Debido a las políticas de seguridad definidas por el administrador de %s cada elelento compartido debe ser protegido por una contraseña y no se permite enviar la contraseña directamente al destinatario. Por lo tanto necesitas reenviar la contaseña manualmente al destinatario. ", + "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", diff --git a/apps/sharebymail/l10n/es_MX.json b/apps/sharebymail/l10n/es_MX.json index 3cc7b9a4899..43a4bc87eb2 100644 --- a/apps/sharebymail/l10n/es_MX.json +++ b/apps/sharebymail/l10n/es_MX.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Haz click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", - "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con la liga para accederlo. \n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« contigo. Ya deberías haber recibido un correo aparte con la liga para accederlo. ", + "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido contigo por %s ", "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", - "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabas de compartir »%s« con %s. El elemento compartido ya ha sido enviado al destinatario. Debido a las políticas de seguridad definidas por el administrador de %s cada elelento compartido debe ser protegido por una contraseña y no se permite enviar la contraseña directamente al destinatario. Por lo tanto necesitas reenviar la contaseña manualmente al destinatario. ", + "Password to access »%s« shared with %s" : "La contraseña para acceder »%s« ha sido compartida con %s", "This is the password: %s" : "Esta es la contraseña: %s", "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js index 8a022b5afcd..d823ae21cf2 100644 --- a/apps/sharebymail/l10n/fr.js +++ b/apps/sharebymail/l10n/fr.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.", "Open »%s«" : "Ouvrir «%s»", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Mot de passe pour accèder à «%s» partagé par %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s a partagé «%s» avec vous.\nVous avez normalement déjà reçu un autre email avec un lien pour y accéder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s a partagé «%s» avec vous. Vous avez normalement déjà reçu un autre email avec un lien pour y accéder.", + "Password to access »%s« shared to you by %s" : "Mot de passe pour accèder à «%s» partagé par %s", "Password to access »%s«" : "Mot de passe pour accèder à «%s»", "It is protected with the following password: %s" : "Il est protégé avec le mot de passe suivant : %s", - "Password to access »%s« shared with %s" : "Mot de passe pour accèder à «%s» partagé avec %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Vous venez de partager «%s» avec %s. Le partage a déjà été envoyé au destinataire. En raison de la politique de sécurité définie par l'administrateur de %s, chaque partage a besoin d'être protégé par mot de passe et il n'est pas autorisé d'envoyer le mot de passe directement au destinataire. C'est pourquoi vous devez transmettre le mot de passe manuellement au destinataire.", + "Password to access »%s« shared with %s" : "Mot de passe pour accèder à «%s» partagé avec %s", "This is the password: %s" : "Voici le mot de passe : %s", "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json index 98f14cdb717..ed1df58468b 100644 --- a/apps/sharebymail/l10n/fr.json +++ b/apps/sharebymail/l10n/fr.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.", "Open »%s«" : "Ouvrir «%s»", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Mot de passe pour accèder à «%s» partagé par %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s a partagé «%s» avec vous.\nVous avez normalement déjà reçu un autre email avec un lien pour y accéder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s a partagé «%s» avec vous. Vous avez normalement déjà reçu un autre email avec un lien pour y accéder.", + "Password to access »%s« shared to you by %s" : "Mot de passe pour accèder à «%s» partagé par %s", "Password to access »%s«" : "Mot de passe pour accèder à «%s»", "It is protected with the following password: %s" : "Il est protégé avec le mot de passe suivant : %s", - "Password to access »%s« shared with %s" : "Mot de passe pour accèder à «%s» partagé avec %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Vous venez de partager «%s» avec %s. Le partage a déjà été envoyé au destinataire. En raison de la politique de sécurité définie par l'administrateur de %s, chaque partage a besoin d'être protégé par mot de passe et il n'est pas autorisé d'envoyer le mot de passe directement au destinataire. C'est pourquoi vous devez transmettre le mot de passe manuellement au destinataire.", + "Password to access »%s« shared with %s" : "Mot de passe pour accèder à «%s» partagé avec %s", "This is the password: %s" : "Voici le mot de passe : %s", "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", diff --git a/apps/sharebymail/l10n/is.js b/apps/sharebymail/l10n/is.js index 1a1a4feb92e..6fc01805d9b 100644 --- a/apps/sharebymail/l10n/is.js +++ b/apps/sharebymail/l10n/is.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Smelltu á tengilinn hér fyrir neðan til að opna það.", "Open »%s«" : "Opna »%s«", "%s via %s" : "%s með %s", - "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.", + "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", "Password to access »%s«" : "Lykilorð fyrir aðgang að »%s«", "It is protected with the following password: %s" : "Það er varið með eftirfarandi lykilorði: %s", - "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Þú varst í þessu að deila »%s« með %s. Sameignin var þegar send til viðtakandans. Vegna öryggisskilmála sem skilgreindir hafa verið af kerfisstjóra %s þarf hver sameign að vera varin með lykilorði og að ekki er leyfilegt að senda það lykilorð beint til viðtakandans. Því er nauðsynlegt að þú homir lykilorðinu beint til sjálfs viðtakandans.", + "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", "This is the password: %s" : "Þetta er lykilorðið: %s", "You can choose a different password at any time in the share dialog." : "Þú getur hvenær sem er valið annað lykilorð með því að fara í deilingargluggann.", "Could not find share" : "Gat ekki fundið sameign", diff --git a/apps/sharebymail/l10n/is.json b/apps/sharebymail/l10n/is.json index 8ed632b9424..e4ce4e63092 100644 --- a/apps/sharebymail/l10n/is.json +++ b/apps/sharebymail/l10n/is.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Smelltu á tengilinn hér fyrir neðan til að opna það.", "Open »%s«" : "Opna »%s«", "%s via %s" : "%s með %s", - "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.", + "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", "Password to access »%s«" : "Lykilorð fyrir aðgang að »%s«", "It is protected with the following password: %s" : "Það er varið með eftirfarandi lykilorði: %s", - "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Þú varst í þessu að deila »%s« með %s. Sameignin var þegar send til viðtakandans. Vegna öryggisskilmála sem skilgreindir hafa verið af kerfisstjóra %s þarf hver sameign að vera varin með lykilorði og að ekki er leyfilegt að senda það lykilorð beint til viðtakandans. Því er nauðsynlegt að þú homir lykilorðinu beint til sjálfs viðtakandans.", + "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", "This is the password: %s" : "Þetta er lykilorðið: %s", "You can choose a different password at any time in the share dialog." : "Þú getur hvenær sem er valið annað lykilorð með því að fara í deilingargluggann.", "Could not find share" : "Gat ekki fundið sameign", diff --git a/apps/sharebymail/l10n/it.js b/apps/sharebymail/l10n/it.js index 9fb612b2677..705dd042ff1 100644 --- a/apps/sharebymail/l10n/it.js +++ b/apps/sharebymail/l10n/it.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.", "Open »%s«" : "Apri «%s»", "%s via %s" : "%s tramite %s", - "Password to access »%s« shared to you by %s" : "Password per accedere a «%s» condivisa con te da %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s ha condiviso «%s» con te.\nDovresti aver ricevuto un messaggio separato con un collegamento per accedervi.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ha condiviso «%s» con te. Dovresti aver ricevuto un messaggio separato con un collegamento per accedervi.", + "Password to access »%s« shared to you by %s" : "Password per accedere a «%s» condivisa con te da %s", "Password to access »%s«" : "Password per accedere a «%s»", "It is protected with the following password: %s" : "È protetta con la password seguente: %s", - "Password to access »%s« shared with %s" : "Password per accedere a «%s» condivisa con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Hai appena condiviso «%s» con %s. La condivisione è stata già inviata al destinatario. A causa dei criteri di sicurezza definiti dall'amministratore di %s, ogni condivisione deve essere protetta da password e non è consentito l'invio diretto della password al destinatario. Perciò, devi inoltrare manualmente la password al destinatario.", + "Password to access »%s« shared with %s" : "Password per accedere a «%s» condivisa con %s", "This is the password: %s" : "Questa è la password: %s", "You can choose a different password at any time in the share dialog." : "Puoi scegliere una password diversa in qualsiasi momento nella finestra di condivisione.", "Could not find share" : "Non è stato possibile trovare la condivisione", diff --git a/apps/sharebymail/l10n/it.json b/apps/sharebymail/l10n/it.json index e2000275c39..f2096a3e91a 100644 --- a/apps/sharebymail/l10n/it.json +++ b/apps/sharebymail/l10n/it.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.", "Open »%s«" : "Apri «%s»", "%s via %s" : "%s tramite %s", - "Password to access »%s« shared to you by %s" : "Password per accedere a «%s» condivisa con te da %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s ha condiviso «%s» con te.\nDovresti aver ricevuto un messaggio separato con un collegamento per accedervi.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ha condiviso «%s» con te. Dovresti aver ricevuto un messaggio separato con un collegamento per accedervi.", + "Password to access »%s« shared to you by %s" : "Password per accedere a «%s» condivisa con te da %s", "Password to access »%s«" : "Password per accedere a «%s»", "It is protected with the following password: %s" : "È protetta con la password seguente: %s", - "Password to access »%s« shared with %s" : "Password per accedere a «%s» condivisa con %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Hai appena condiviso «%s» con %s. La condivisione è stata già inviata al destinatario. A causa dei criteri di sicurezza definiti dall'amministratore di %s, ogni condivisione deve essere protetta da password e non è consentito l'invio diretto della password al destinatario. Perciò, devi inoltrare manualmente la password al destinatario.", + "Password to access »%s« shared with %s" : "Password per accedere a «%s» condivisa con %s", "This is the password: %s" : "Questa è la password: %s", "You can choose a different password at any time in the share dialog." : "Puoi scegliere una password diversa in qualsiasi momento nella finestra di condivisione.", "Could not find share" : "Non è stato possibile trovare la condivisione", diff --git a/apps/sharebymail/l10n/ja.js b/apps/sharebymail/l10n/ja.js index 91d1000194a..29fb7e59be8 100644 --- a/apps/sharebymail/l10n/ja.js +++ b/apps/sharebymail/l10n/ja.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "クリックすると下が開きます", "Open »%s«" : "»%s«を開く", "%s via %s" : "%s に %s から", - "Password to access »%s« shared to you by %s" : "%sへの共有アクセスのパスワードが %s から共有されました", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s により »%s« が共有されました\nアクセスするためのリンクは別途メールで受信してください。\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s により »%s« が共有されました。アクセスするためのリンクは別途メールで受信してください。", + "Password to access »%s« shared to you by %s" : "%sへの共有アクセスのパスワードが %s から共有されました", "Password to access »%s«" : "»%s« にアクセスするパスワード", "It is protected with the following password: %s" : "次のパスワードで保護されています: %s", - "Password to access »%s« shared with %s" : "»%s« にアクセスするパスワードが %s から共有されました", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%sを%sと共有しました。共有は受信者に送信されています。セキュリティポリシーにより%sの管理者が共有はパスワードで保護されるべきで、直接受信者に送信するべきではないと定めている場合、手動で受信者にメールを転送する必要があります。", + "Password to access »%s« shared with %s" : "»%s« にアクセスするパスワードが %s から共有されました", "This is the password: %s" : "パスワード: %s", "You can choose a different password at any time in the share dialog." : "共有ダイアログからいつでも違うパスワードに変更できます。", "Could not find share" : "共有が見つかりませんでした", diff --git a/apps/sharebymail/l10n/ja.json b/apps/sharebymail/l10n/ja.json index 668810a581b..61c31c40e7d 100644 --- a/apps/sharebymail/l10n/ja.json +++ b/apps/sharebymail/l10n/ja.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "クリックすると下が開きます", "Open »%s«" : "»%s«を開く", "%s via %s" : "%s に %s から", - "Password to access »%s« shared to you by %s" : "%sへの共有アクセスのパスワードが %s から共有されました", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s により »%s« が共有されました\nアクセスするためのリンクは別途メールで受信してください。\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s により »%s« が共有されました。アクセスするためのリンクは別途メールで受信してください。", + "Password to access »%s« shared to you by %s" : "%sへの共有アクセスのパスワードが %s から共有されました", "Password to access »%s«" : "»%s« にアクセスするパスワード", "It is protected with the following password: %s" : "次のパスワードで保護されています: %s", - "Password to access »%s« shared with %s" : "»%s« にアクセスするパスワードが %s から共有されました", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%sを%sと共有しました。共有は受信者に送信されています。セキュリティポリシーにより%sの管理者が共有はパスワードで保護されるべきで、直接受信者に送信するべきではないと定めている場合、手動で受信者にメールを転送する必要があります。", + "Password to access »%s« shared with %s" : "»%s« にアクセスするパスワードが %s から共有されました", "This is the password: %s" : "パスワード: %s", "You can choose a different password at any time in the share dialog." : "共有ダイアログからいつでも違うパスワードに変更できます。", "Could not find share" : "共有が見つかりませんでした", diff --git a/apps/sharebymail/l10n/ko.js b/apps/sharebymail/l10n/ko.js index b3f275e47f2..3c0d9e5a270 100644 --- a/apps/sharebymail/l10n/ko.js +++ b/apps/sharebymail/l10n/ko.js @@ -23,13 +23,13 @@ OC.L10N.register( "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.", "Open »%s«" : "%s 열기", "%s via %s" : "%s(%s 경유)", - "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s 님이 %s을(를) 공유했습니다.\n접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s 님이 %s을(를) 공유했습니다. 접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.", + "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", "Password to access »%s«" : "%s에 접근할 수 있는 암호", "It is protected with the following password: %s" : "다음 암호로 보호되어 있습니다: %s", - "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%s을(를) %s 님과 공유했습니다. 공유 정보를 이메일로 전송했습니다. %s 관리자의 보안 정책에 의하여 각각 공유 항목은 암호로 보호되어야 하며, 해당 암호를 직접 이메일로 보낼 수 없습니다. 수신자에게 이 암호를 다른 방법으로 직접 전달하십시오.", + "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", "This is the password: %s" : "다음은 암호입니다: %s", "You can choose a different password at any time in the share dialog." : "공유 대화 상자에서 언제든지 다른 암호를 선택할 수 있습니다.", "Could not find share" : "공유를 찾을 수 없음", diff --git a/apps/sharebymail/l10n/ko.json b/apps/sharebymail/l10n/ko.json index 26af9862c7a..17c438f2a49 100644 --- a/apps/sharebymail/l10n/ko.json +++ b/apps/sharebymail/l10n/ko.json @@ -21,13 +21,13 @@ "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.", "Open »%s«" : "%s 열기", "%s via %s" : "%s(%s 경유)", - "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s 님이 %s을(를) 공유했습니다.\n접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s 님이 %s을(를) 공유했습니다. 접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.", + "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", "Password to access »%s«" : "%s에 접근할 수 있는 암호", "It is protected with the following password: %s" : "다음 암호로 보호되어 있습니다: %s", - "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%s을(를) %s 님과 공유했습니다. 공유 정보를 이메일로 전송했습니다. %s 관리자의 보안 정책에 의하여 각각 공유 항목은 암호로 보호되어야 하며, 해당 암호를 직접 이메일로 보낼 수 없습니다. 수신자에게 이 암호를 다른 방법으로 직접 전달하십시오.", + "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", "This is the password: %s" : "다음은 암호입니다: %s", "You can choose a different password at any time in the share dialog." : "공유 대화 상자에서 언제든지 다른 암호를 선택할 수 있습니다.", "Could not find share" : "공유를 찾을 수 없음", diff --git a/apps/sharebymail/l10n/lt_LT.js b/apps/sharebymail/l10n/lt_LT.js index 2e8465a46c9..2c3fb59305f 100644 --- a/apps/sharebymail/l10n/lt_LT.js +++ b/apps/sharebymail/l10n/lt_LT.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Norėdami atverti failą, spustelėkite mygtuką žemiau.", "Open »%s«" : "Atverti »%s«", "%s via %s" : "%s per %s", - "Password to access »%s« shared to you by %s" : "Slaptažodis, skirtas prieigai prie »%s« pasidalintas su jumis per %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s pasidalintas »%s« su Jumis.\nJūs turėjote gauti elektroninį laišką su prieigos nuoroda.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s pasidalintas »%s« su Jumis. Jūs turėjote gauti elektroninį laišką su prieigos nuoroda.", + "Password to access »%s« shared to you by %s" : "Slaptažodis, skirtas prieigai prie »%s« pasidalintas su jumis per %s", "Password to access »%s«" : "Slaptažodis, skirtas prieigai prie »%s«", "It is protected with the following password: %s" : "Apsaugotas slaptažodžiu: %s", - "Password to access »%s« shared with %s" : "Slaptažodis prieigai prie »%s« pasidalintas su %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Jūs ką tik pasidalinote »%s« su %s. Dalinimosi nuoroda buvo išsiųsta adresatui. Pagal saugumo taisykles, kurias nustatė %s administratorius, kiekvienas dalinimasis turi būti apsaugotas slaptažodžiu. Kadangi slaptažodžio negalima tiesiogiai siųsti adresatui, jūs turite jį perduoti gyvai.", + "Password to access »%s« shared with %s" : "Slaptažodis prieigai prie »%s« pasidalintas su %s", "This is the password: %s" : "Štai yra slaptažodis: %s", "You can choose a different password at any time in the share dialog." : "Bendrinimo dialoge bet kuriuo metu galite pasirinkti kitą slaptažodį.", "Could not find share" : "Nepavyko rasti viešinio", diff --git a/apps/sharebymail/l10n/lt_LT.json b/apps/sharebymail/l10n/lt_LT.json index e1859589e08..625265c468b 100644 --- a/apps/sharebymail/l10n/lt_LT.json +++ b/apps/sharebymail/l10n/lt_LT.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Norėdami atverti failą, spustelėkite mygtuką žemiau.", "Open »%s«" : "Atverti »%s«", "%s via %s" : "%s per %s", - "Password to access »%s« shared to you by %s" : "Slaptažodis, skirtas prieigai prie »%s« pasidalintas su jumis per %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s pasidalintas »%s« su Jumis.\nJūs turėjote gauti elektroninį laišką su prieigos nuoroda.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s pasidalintas »%s« su Jumis. Jūs turėjote gauti elektroninį laišką su prieigos nuoroda.", + "Password to access »%s« shared to you by %s" : "Slaptažodis, skirtas prieigai prie »%s« pasidalintas su jumis per %s", "Password to access »%s«" : "Slaptažodis, skirtas prieigai prie »%s«", "It is protected with the following password: %s" : "Apsaugotas slaptažodžiu: %s", - "Password to access »%s« shared with %s" : "Slaptažodis prieigai prie »%s« pasidalintas su %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Jūs ką tik pasidalinote »%s« su %s. Dalinimosi nuoroda buvo išsiųsta adresatui. Pagal saugumo taisykles, kurias nustatė %s administratorius, kiekvienas dalinimasis turi būti apsaugotas slaptažodžiu. Kadangi slaptažodžio negalima tiesiogiai siųsti adresatui, jūs turite jį perduoti gyvai.", + "Password to access »%s« shared with %s" : "Slaptažodis prieigai prie »%s« pasidalintas su %s", "This is the password: %s" : "Štai yra slaptažodis: %s", "You can choose a different password at any time in the share dialog." : "Bendrinimo dialoge bet kuriuo metu galite pasirinkti kitą slaptažodį.", "Could not find share" : "Nepavyko rasti viešinio", diff --git a/apps/sharebymail/l10n/nb.js b/apps/sharebymail/l10n/nb.js index 6770711a972..e02b698f536 100644 --- a/apps/sharebymail/l10n/nb.js +++ b/apps/sharebymail/l10n/nb.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klikk på knappen nedenfor for å åpne den.", "Open »%s«" : "Åpne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Passord for å benytte »%s« tildelt deg av %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delte «%s» med deg.\nDu skal allerede ha mottatt en annen e-post med en lenke til innholdet.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delte «%s» med deg. Du skal allerede ha mottatt en annen e-post med en lenke til innholdet.", + "Password to access »%s« shared to you by %s" : "Passord for å benytte »%s« tildelt deg av %s", "Password to access »%s«" : "Passord for å benytte »%s«", "It is protected with the following password: %s" : "Den er beskyttet med følgende passord: %s", - "Password to access »%s« shared with %s" : "Passord for å benytte »%s« delt med %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delte akkurat »%s« med %s. Lageret har allerede blitt sendt til mottakeren. På grunn av sikkerhetspraksisen definert av administratoren for %s må hvert lager beskyttes med et passord, og det tillates ikke sendt direkte til mottakeren. Derfor trenger du å sende passordet manuelt til mottakeren.", + "Password to access »%s« shared with %s" : "Passord for å benytte »%s« delt med %s", "This is the password: %s" : "Dette er passordet: %s", "You can choose a different password at any time in the share dialog." : "Du kan velge et annet passord når som helst i delingsdialogvinduet.", "Could not find share" : "Delingen ble ikke funnet", diff --git a/apps/sharebymail/l10n/nb.json b/apps/sharebymail/l10n/nb.json index 80c0b760b66..c6ba8fb4eff 100644 --- a/apps/sharebymail/l10n/nb.json +++ b/apps/sharebymail/l10n/nb.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klikk på knappen nedenfor for å åpne den.", "Open »%s«" : "Åpne »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Passord for å benytte »%s« tildelt deg av %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delte «%s» med deg.\nDu skal allerede ha mottatt en annen e-post med en lenke til innholdet.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delte «%s» med deg. Du skal allerede ha mottatt en annen e-post med en lenke til innholdet.", + "Password to access »%s« shared to you by %s" : "Passord for å benytte »%s« tildelt deg av %s", "Password to access »%s«" : "Passord for å benytte »%s«", "It is protected with the following password: %s" : "Den er beskyttet med følgende passord: %s", - "Password to access »%s« shared with %s" : "Passord for å benytte »%s« delt med %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delte akkurat »%s« med %s. Lageret har allerede blitt sendt til mottakeren. På grunn av sikkerhetspraksisen definert av administratoren for %s må hvert lager beskyttes med et passord, og det tillates ikke sendt direkte til mottakeren. Derfor trenger du å sende passordet manuelt til mottakeren.", + "Password to access »%s« shared with %s" : "Passord for å benytte »%s« delt med %s", "This is the password: %s" : "Dette er passordet: %s", "You can choose a different password at any time in the share dialog." : "Du kan velge et annet passord når som helst i delingsdialogvinduet.", "Could not find share" : "Delingen ble ikke funnet", diff --git a/apps/sharebymail/l10n/nl.js b/apps/sharebymail/l10n/nl.js index 9bbeeefdf72..fadb4d8e29e 100644 --- a/apps/sharebymail/l10n/nl.js +++ b/apps/sharebymail/l10n/nl.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klik op onderstaande link om te openen.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Toegangswachtwoord »%s« gedeeld met je door %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sdeelde »%s« met jou.\nJe moet al een apart bericht hebben ontvangen met een linkje voor toegang.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deelde »%s« met jou. Je zou al een apart mailbericht moeten hebben ontvangen met een link om er te komen.", + "Password to access »%s« shared to you by %s" : "Toegangswachtwoord »%s« gedeeld met je door %s", "Password to access »%s«" : "Wachtwoord om binnen te komen »%s«", "It is protected with the following password: %s" : "Het is beveiligd met het volgende wachtwoord: %s", - "Password to access »%s« shared with %s" : "Wachtwoord voor toegang »%s« gedeeld met %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Je deelde »%s« met %s. De link is al gestuurd naar de geadresseerde. Vanwege de beveiligingsinstellingen, zoals ingesteld door de beheerder van %s, moet het delen worden beveiligd met een wachtwoord en is het niet toegestaan het wachtwoord rechtstreeks naar de ontvanger te versturen. Hierdoor moet je het wachtwoord zelf handmatig naar de ontvanger sturen.", + "Password to access »%s« shared with %s" : "Wachtwoord voor toegang »%s« gedeeld met %s", "This is the password: %s" : "Dit is het wachtwoord: %s", "You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.", "Could not find share" : "Kon gedeeld niet vinden", diff --git a/apps/sharebymail/l10n/nl.json b/apps/sharebymail/l10n/nl.json index fbd47e92bbb..b88e61c6210 100644 --- a/apps/sharebymail/l10n/nl.json +++ b/apps/sharebymail/l10n/nl.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klik op onderstaande link om te openen.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Toegangswachtwoord »%s« gedeeld met je door %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sdeelde »%s« met jou.\nJe moet al een apart bericht hebben ontvangen met een linkje voor toegang.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deelde »%s« met jou. Je zou al een apart mailbericht moeten hebben ontvangen met een link om er te komen.", + "Password to access »%s« shared to you by %s" : "Toegangswachtwoord »%s« gedeeld met je door %s", "Password to access »%s«" : "Wachtwoord om binnen te komen »%s«", "It is protected with the following password: %s" : "Het is beveiligd met het volgende wachtwoord: %s", - "Password to access »%s« shared with %s" : "Wachtwoord voor toegang »%s« gedeeld met %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Je deelde »%s« met %s. De link is al gestuurd naar de geadresseerde. Vanwege de beveiligingsinstellingen, zoals ingesteld door de beheerder van %s, moet het delen worden beveiligd met een wachtwoord en is het niet toegestaan het wachtwoord rechtstreeks naar de ontvanger te versturen. Hierdoor moet je het wachtwoord zelf handmatig naar de ontvanger sturen.", + "Password to access »%s« shared with %s" : "Wachtwoord voor toegang »%s« gedeeld met %s", "This is the password: %s" : "Dit is het wachtwoord: %s", "You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.", "Could not find share" : "Kon gedeeld niet vinden", diff --git a/apps/sharebymail/l10n/pl.js b/apps/sharebymail/l10n/pl.js index 3602b8b23f8..a267d0b8daf 100644 --- a/apps/sharebymail/l10n/pl.js +++ b/apps/sharebymail/l10n/pl.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Kliknij przycisk poniżej, żeby to otworzyć.", "Open »%s«" : "Otwórz »%s«", "%s via %s" : "%s przez %s", - "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione Tobie przez %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s współdzieli z Tobą »%s«.\nPowinieneś już otrzymać osobny e-mail zawierający link dostępowy.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s współdzieli »%s« z Tobą. Powinieneś już otrzymać osobnego e-maila z linkiem do dostępu.", + "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione Tobie przez %s", "Password to access »%s«" : "Hasło do dostępu »%s«", "It is protected with the following password: %s" : "To jest chronione z nstępującym hasłem: %s", - "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Właśnie udostępniłeś »%s« użytkownikowi %s. Udostępniony udział został już wysłany do odbiorcy, jednak zgodnie z polityką bezpieczeństwa ustanowioną przez administratora %s każdy udział musi zostać zabezpieczony hasłem. Wysyłanie hasła bezpośrednio do odbiorcy jest zabronione, dlatego też musisz mu je przekazać w klasyczny sposób.", + "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", "This is the password: %s" : "To jest hasło: %s", "You can choose a different password at any time in the share dialog." : "Możesz zmienić hasło w okienku współdzielenia w dowolnym momencie.", "Could not find share" : "Nie można odnaleźć współdzielonego obiektu", diff --git a/apps/sharebymail/l10n/pl.json b/apps/sharebymail/l10n/pl.json index 7a04b7c6a6b..f9e72eb5f69 100644 --- a/apps/sharebymail/l10n/pl.json +++ b/apps/sharebymail/l10n/pl.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Kliknij przycisk poniżej, żeby to otworzyć.", "Open »%s«" : "Otwórz »%s«", "%s via %s" : "%s przez %s", - "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione Tobie przez %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s współdzieli z Tobą »%s«.\nPowinieneś już otrzymać osobny e-mail zawierający link dostępowy.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s współdzieli »%s« z Tobą. Powinieneś już otrzymać osobnego e-maila z linkiem do dostępu.", + "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione Tobie przez %s", "Password to access »%s«" : "Hasło do dostępu »%s«", "It is protected with the following password: %s" : "To jest chronione z nstępującym hasłem: %s", - "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Właśnie udostępniłeś »%s« użytkownikowi %s. Udostępniony udział został już wysłany do odbiorcy, jednak zgodnie z polityką bezpieczeństwa ustanowioną przez administratora %s każdy udział musi zostać zabezpieczony hasłem. Wysyłanie hasła bezpośrednio do odbiorcy jest zabronione, dlatego też musisz mu je przekazać w klasyczny sposób.", + "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", "This is the password: %s" : "To jest hasło: %s", "You can choose a different password at any time in the share dialog." : "Możesz zmienić hasło w okienku współdzielenia w dowolnym momencie.", "Could not find share" : "Nie można odnaleźć współdzielonego obiektu", diff --git a/apps/sharebymail/l10n/pt_BR.js b/apps/sharebymail/l10n/pt_BR.js index 173abe70dc4..d2508731e9e 100644 --- a/apps/sharebymail/l10n/pt_BR.js +++ b/apps/sharebymail/l10n/pt_BR.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", + "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", - "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Você compartilhou »%s« com %s. O compartilhamento já foi enviado ao destinatário. Devido às políticas de segurança definidas pelo administrador de %s, cada compartilhamento necessita ser protegido por senha e não é permitido enviar a senha diretamente ao destinatário. Portanto você necessita enviar a senha manualmente ao destinatário.", + "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", diff --git a/apps/sharebymail/l10n/pt_BR.json b/apps/sharebymail/l10n/pt_BR.json index 8c2964ef257..25c84b332da 100644 --- a/apps/sharebymail/l10n/pt_BR.json +++ b/apps/sharebymail/l10n/pt_BR.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", + "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", - "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Você compartilhou »%s« com %s. O compartilhamento já foi enviado ao destinatário. Devido às políticas de segurança definidas pelo administrador de %s, cada compartilhamento necessita ser protegido por senha e não é permitido enviar a senha diretamente ao destinatário. Portanto você necessita enviar a senha manualmente ao destinatário.", + "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", diff --git a/apps/sharebymail/l10n/ru.js b/apps/sharebymail/l10n/ru.js index 5e9db6c57e7..ecbb3381cac 100644 --- a/apps/sharebymail/l10n/ru.js +++ b/apps/sharebymail/l10n/ru.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Для открытия нажмите на кнопку, расположенную ниже.", "Open »%s«" : "Открыть «%s»", "%s via %s" : "%s через %s", - "Password to access »%s« shared to you by %s" : "Пароль для «%s», общий доступ к которому предоставлен Вам пользователем %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s предоставил(а) Вам общий доступ к «%s».\nВы, скорее всего, уже получили отдельное письмо, содержащую ссылку для получения доступа.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s предоставил(а) Вам доступ к «%s». Вы, скорее всего, уже получили отдельное письмо, содержащее ссылку для получения доступа.", + "Password to access »%s« shared to you by %s" : "Пароль для «%s», общий доступ к которому предоставлен Вам пользователем %s", "Password to access »%s«" : "Пароль для доступа «%s»", "It is protected with the following password: %s" : "Доступ защищён следующим паролем: %s", - "Password to access »%s« shared with %s" : "Паролем для доступа к «%s» поделились с %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Вы только что предоставили общий доступ к «%s» пользователю %s. Информация о предоставлении доступа была отправлен получателю. В соответствии с политиками безопасности, заданными администратором %s, каждый общий ресурс должен быть защищён паролем, а так же не допускается непосредственное отправление пароля получателю. Поэтому вам потребуется самостоятельно перенаправить пароль получателю.", + "Password to access »%s« shared with %s" : "Паролем для доступа к «%s» поделились с %s", "This is the password: %s" : "Пароль: %s", "You can choose a different password at any time in the share dialog." : "В любой момент можно выбрать другой пароль в диалоге «Общий доступ».", "Could not find share" : "Не удалось найти общий ресурс", diff --git a/apps/sharebymail/l10n/ru.json b/apps/sharebymail/l10n/ru.json index 901e4925866..f5967e67906 100644 --- a/apps/sharebymail/l10n/ru.json +++ b/apps/sharebymail/l10n/ru.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Для открытия нажмите на кнопку, расположенную ниже.", "Open »%s«" : "Открыть «%s»", "%s via %s" : "%s через %s", - "Password to access »%s« shared to you by %s" : "Пароль для «%s», общий доступ к которому предоставлен Вам пользователем %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s предоставил(а) Вам общий доступ к «%s».\nВы, скорее всего, уже получили отдельное письмо, содержащую ссылку для получения доступа.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s предоставил(а) Вам доступ к «%s». Вы, скорее всего, уже получили отдельное письмо, содержащее ссылку для получения доступа.", + "Password to access »%s« shared to you by %s" : "Пароль для «%s», общий доступ к которому предоставлен Вам пользователем %s", "Password to access »%s«" : "Пароль для доступа «%s»", "It is protected with the following password: %s" : "Доступ защищён следующим паролем: %s", - "Password to access »%s« shared with %s" : "Паролем для доступа к «%s» поделились с %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Вы только что предоставили общий доступ к «%s» пользователю %s. Информация о предоставлении доступа была отправлен получателю. В соответствии с политиками безопасности, заданными администратором %s, каждый общий ресурс должен быть защищён паролем, а так же не допускается непосредственное отправление пароля получателю. Поэтому вам потребуется самостоятельно перенаправить пароль получателю.", + "Password to access »%s« shared with %s" : "Паролем для доступа к «%s» поделились с %s", "This is the password: %s" : "Пароль: %s", "You can choose a different password at any time in the share dialog." : "В любой момент можно выбрать другой пароль в диалоге «Общий доступ».", "Could not find share" : "Не удалось найти общий ресурс", diff --git a/apps/sharebymail/l10n/sq.js b/apps/sharebymail/l10n/sq.js index 2d30b819d74..18d251b26a8 100644 --- a/apps/sharebymail/l10n/sq.js +++ b/apps/sharebymail/l10n/sq.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.", "Open »%s«" : "Hap »%s«", "%s via %s" : "%s përmes %s", - "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.", + "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", "Password to access »%s«" : "Fjalëkalimi për akses »%s«", "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s", - "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.", + "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", "This is the password: %s" : "Ky është fjalëkalimi: %s", "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.", "Could not find share" : "Nuk mund të gjej shpërndarje", diff --git a/apps/sharebymail/l10n/sq.json b/apps/sharebymail/l10n/sq.json index 1027fe6a677..e80fa8819fd 100644 --- a/apps/sharebymail/l10n/sq.json +++ b/apps/sharebymail/l10n/sq.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klikoni butonin poshtë për ta hapur.", "Open »%s«" : "Hap »%s«", "%s via %s" : "%s përmes %s", - "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%sndau »%s« me ju. \nJu duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s ndau »%s« me ju. Ju duhet të keni marrë tashmë një mail të veçantë me një lidhje për të aksesuar atë.", + "Password to access »%s« shared to you by %s" : "Fjalëkalimi për të hyrë »%s« ndarë me ju nda %s", "Password to access »%s«" : "Fjalëkalimi për akses »%s«", "It is protected with the following password: %s" : "Është i mbrojtur me fjalëkalimin e mëposhtëm: %s", - "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Ju sapo ndatë »« me %s%s. Pjesa ishte dërguar tashmë tek marrësi. Për shkak të politikave të sigurisë të përcaktuara nga administratori %s secila ndarje duhet të mbrohet me fjalëkalim dhe nuk lejohet të dërgojë fjalëkalimin drejtpërdrejt te marrësi. Prandaj ju duhet ta kaloni fjalëkalimin manualisht tek marrësi.", + "Password to access »%s« shared with %s" : "Fjalëkalimi për të hyrë »%s« ndarë me %s", "This is the password: %s" : "Ky është fjalëkalimi: %s", "You can choose a different password at any time in the share dialog." : "Ju mund të zgjidhni një fjalëkalim tjetër në çdo kohë në dialogun e ndarjes.", "Could not find share" : "Nuk mund të gjej shpërndarje", diff --git a/apps/sharebymail/l10n/sv.js b/apps/sharebymail/l10n/sv.js index 0d650e96725..eb3b8451e6b 100644 --- a/apps/sharebymail/l10n/sv.js +++ b/apps/sharebymail/l10n/sv.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Klicka knappen nedan för att öppna det.", "Open »%s«" : "Öppna »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Lösenord för att få tillgång till »%s« delat med dig av %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delade »%s« med dig.\nDu ska redan ha fått ett separat epost med en länk för att nå det.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delade »%s« med dig. Du ska redan ha fått ett separat e-post med en länk för att nå det.", + "Password to access »%s« shared to you by %s" : "Lösenord för att få tillgång till »%s« delat med dig av %s", "Password to access »%s«" : "Lösenord för att nå »%s«", "It is protected with the following password: %s" : "Den är skyddad med följande lösenord: %s", - "Password to access »%s« shared with %s" : "Lösenord för att få tillgång till »%s« delade med %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delade precis »%s« med %s. Delningen var redan skickat till mottagaren. På grund av säkerhetspolicyn definierad av administratören av %s måste varje delning vara lösenordsskyddad och det är inte tillåtet att skicka lösenordet direkt till mottagaren. Därför behöver du vidarebefordra lösenordet manuellt till mottagaren.", + "Password to access »%s« shared with %s" : "Lösenord för att få tillgång till »%s« delade med %s", "This is the password: %s" : "Detta är lösenordet: %s", "You can choose a different password at any time in the share dialog." : "Du kan välja ett annat lösenord när som helst i delningsdialogen.", "Could not find share" : "Kunde inte hitta delning", diff --git a/apps/sharebymail/l10n/sv.json b/apps/sharebymail/l10n/sv.json index 31a28f427ed..75e3bb9d299 100644 --- a/apps/sharebymail/l10n/sv.json +++ b/apps/sharebymail/l10n/sv.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Klicka knappen nedan för att öppna det.", "Open »%s«" : "Öppna »%s«", "%s via %s" : "%s via %s", - "Password to access »%s« shared to you by %s" : "Lösenord för att få tillgång till »%s« delat med dig av %s", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s delade »%s« med dig.\nDu ska redan ha fått ett separat epost med en länk för att nå det.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s delade »%s« med dig. Du ska redan ha fått ett separat e-post med en länk för att nå det.", + "Password to access »%s« shared to you by %s" : "Lösenord för att få tillgång till »%s« delat med dig av %s", "Password to access »%s«" : "Lösenord för att nå »%s«", "It is protected with the following password: %s" : "Den är skyddad med följande lösenord: %s", - "Password to access »%s« shared with %s" : "Lösenord för att få tillgång till »%s« delade med %s", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delade precis »%s« med %s. Delningen var redan skickat till mottagaren. På grund av säkerhetspolicyn definierad av administratören av %s måste varje delning vara lösenordsskyddad och det är inte tillåtet att skicka lösenordet direkt till mottagaren. Därför behöver du vidarebefordra lösenordet manuellt till mottagaren.", + "Password to access »%s« shared with %s" : "Lösenord för att få tillgång till »%s« delade med %s", "This is the password: %s" : "Detta är lösenordet: %s", "You can choose a different password at any time in the share dialog." : "Du kan välja ett annat lösenord när som helst i delningsdialogen.", "Could not find share" : "Kunde inte hitta delning", diff --git a/apps/sharebymail/l10n/tr.js b/apps/sharebymail/l10n/tr.js index e84ac60c1d4..904ab5365ff 100644 --- a/apps/sharebymail/l10n/tr.js +++ b/apps/sharebymail/l10n/tr.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", "Open »%s«" : "»%s« Aç", "%s via %s" : "%s, %s aracılığıyla", - "Password to access »%s« shared to you by %s" : "»%s« için sizin tarafınızdan %s üzerinden paylaşılan erişim parolası", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s sizinle »%s« ögesini paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s sizinle »%s« ögesini paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.", + "Password to access »%s« shared to you by %s" : "»%s« için sizin tarafınızdan %s üzerinden paylaşılan erişim parolası", "Password to access »%s«" : "»%s« erişim parolası", "It is protected with the following password: %s" : "Öge şu parola ile korunuyor: %s", - "Password to access »%s« shared with %s" : "»%s« için %s üzerinden paylaşılan erişim parolası", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "»%s« ögesini %s ile paylaştınız. Paylaşım alıcıya gönderildi. %s yöneticisi tarafından belirlenmiş güvenlik ilkelerine göre her bir paylaşım için bir parola belirtilmesi ve bu parolanın alıcıya doğrudan gönderilmemesi gerekiyor. Bu nedenle parolayı alıcıya el ile siz iletmelisiniz.", + "Password to access »%s« shared with %s" : "»%s« için %s üzerinden paylaşılan erişim parolası", "This is the password: %s" : "İleteceğiniz parola: %s", "You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.", "Could not find share" : "Paylaşım bulunamadı", diff --git a/apps/sharebymail/l10n/tr.json b/apps/sharebymail/l10n/tr.json index 87c39b3ff3e..657db4036f8 100644 --- a/apps/sharebymail/l10n/tr.json +++ b/apps/sharebymail/l10n/tr.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", "Open »%s«" : "»%s« Aç", "%s via %s" : "%s, %s aracılığıyla", - "Password to access »%s« shared to you by %s" : "»%s« için sizin tarafınızdan %s üzerinden paylaşılan erişim parolası", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s sizinle »%s« ögesini paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s sizinle »%s« ögesini paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.", + "Password to access »%s« shared to you by %s" : "»%s« için sizin tarafınızdan %s üzerinden paylaşılan erişim parolası", "Password to access »%s«" : "»%s« erişim parolası", "It is protected with the following password: %s" : "Öge şu parola ile korunuyor: %s", - "Password to access »%s« shared with %s" : "»%s« için %s üzerinden paylaşılan erişim parolası", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "»%s« ögesini %s ile paylaştınız. Paylaşım alıcıya gönderildi. %s yöneticisi tarafından belirlenmiş güvenlik ilkelerine göre her bir paylaşım için bir parola belirtilmesi ve bu parolanın alıcıya doğrudan gönderilmemesi gerekiyor. Bu nedenle parolayı alıcıya el ile siz iletmelisiniz.", + "Password to access »%s« shared with %s" : "»%s« için %s üzerinden paylaşılan erişim parolası", "This is the password: %s" : "İleteceğiniz parola: %s", "You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.", "Could not find share" : "Paylaşım bulunamadı", diff --git a/apps/sharebymail/l10n/zh_CN.js b/apps/sharebymail/l10n/zh_CN.js index 97afec66870..1e21de4d9d2 100644 --- a/apps/sharebymail/l10n/zh_CN.js +++ b/apps/sharebymail/l10n/zh_CN.js @@ -24,13 +24,13 @@ OC.L10N.register( "Click the button below to open it." : "点击下面的按钮打开它。", "Open »%s«" : "打开 »%s«", "%s via %s" : "%s通过%s", - "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s与您共享了%s\n访问链接已另外以邮件方式发送到您的邮箱\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s与您共享了%s。访问链接已另外以邮件方式发送到您的邮箱。", + "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享", "Password to access »%s«" : "访问 »%s« 的密码", "It is protected with the following password: %s" : "已被已下密码保护:%s", - "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。", + "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享", "This is the password: %s" : "这是密码: %s", "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", "Could not find share" : "没有发现共享", diff --git a/apps/sharebymail/l10n/zh_CN.json b/apps/sharebymail/l10n/zh_CN.json index 339edbcd096..b435c7c2aa1 100644 --- a/apps/sharebymail/l10n/zh_CN.json +++ b/apps/sharebymail/l10n/zh_CN.json @@ -22,13 +22,13 @@ "Click the button below to open it." : "点击下面的按钮打开它。", "Open »%s«" : "打开 »%s«", "%s via %s" : "%s通过%s", - "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享", "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s与您共享了%s\n访问链接已另外以邮件方式发送到您的邮箱\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s与您共享了%s。访问链接已另外以邮件方式发送到您的邮箱。", + "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享", "Password to access »%s«" : "访问 »%s« 的密码", "It is protected with the following password: %s" : "已被已下密码保护:%s", - "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享", "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。", + "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享", "This is the password: %s" : "这是密码: %s", "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", "Could not find share" : "没有发现共享", diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 516e4e243bf..f610a1a5fa9 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -380,8 +380,6 @@ class ShareByMailProvider implements IShareProvider { \DateTime $expiration = null) { $initiatorUser = $this->userManager->get($initiator); $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; - $subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename)); - $message = $this->mailer->createMessage(); $emailTemplate = $this->mailer->createEMailTemplate('sharebymail.RecipientNotification', [ @@ -392,6 +390,7 @@ class ShareByMailProvider implements IShareProvider { 'shareWith' => $shareWith, ]); + $emailTemplate->setSubject($this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename))); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false); $text = $this->l->t('%s shared »%s« with you.', [$initiatorDisplayName, $filename]); @@ -428,9 +427,7 @@ class ShareByMailProvider implements IShareProvider { $emailTemplate->addFooter(); } - $message->setSubject($subject); - $message->setPlainBody($emailTemplate->renderText()); - $message->setHtmlBody($emailTemplate->renderHtml()); + $message->useTemplate($emailTemplate); $this->mailer->send($message); } @@ -455,7 +452,6 @@ class ShareByMailProvider implements IShareProvider { $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null; - $subject = (string)$this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName]); $plainBodyPart = $this->l->t("%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n", [$initiatorDisplayName, $filename]); $htmlBodyPart = $this->l->t('%s shared »%s« with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]); @@ -468,6 +464,8 @@ class ShareByMailProvider implements IShareProvider { 'initiatorEmail' => $initiatorEmailAddress, 'shareWith' => $shareWith, ]); + + $emailTemplate->setSubject($this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]), false); $emailTemplate->addBodyText($htmlBodyPart, $plainBodyPart); @@ -491,9 +489,7 @@ class ShareByMailProvider implements IShareProvider { } $message->setTo([$shareWith]); - $message->setSubject($subject); - $message->setBody($emailTemplate->renderText(), 'text/plain'); - $message->setHtmlBody($emailTemplate->renderHtml()); + $message->useTemplate($emailTemplate); $this->mailer->send($message); $this->createPasswordSendActivity($share, $shareWith, false); @@ -524,7 +520,6 @@ class ShareByMailProvider implements IShareProvider { ); } - $subject = (string)$this->l->t('Password to access »%s« shared with %s', [$filename, $shareWith]); $bodyPart = $this->l->t("You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.", [$filename, $shareWith, $this->defaults->getName()]); $message = $this->mailer->createMessage(); @@ -536,6 +531,7 @@ class ShareByMailProvider implements IShareProvider { 'shareWith' => $shareWith, ]); + $emailTemplate->setSubject($this->l->t('Password to access »%s« shared with %s', [$filename, $shareWith])); $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]), false); $emailTemplate->addBodyText($bodyPart); @@ -547,9 +543,7 @@ class ShareByMailProvider implements IShareProvider { $message->setFrom([$initiatorEMailAddress => $initiatorDisplayName]); } $message->setTo([$initiatorEMailAddress => $initiatorDisplayName]); - $message->setSubject($subject); - $message->setBody($emailTemplate->renderText(), 'text/plain'); - $message->setHtmlBody($emailTemplate->renderHtml()); + $message->useTemplate($emailTemplate); $this->mailer->send($message); $this->createPasswordSendActivity($share, $shareWith, true); diff --git a/apps/sharebymail/tests/ShareByMailProviderTest.php b/apps/sharebymail/tests/ShareByMailProviderTest.php index 23e61ee58f1..68a645ec0e6 100644 --- a/apps/sharebymail/tests/ShareByMailProviderTest.php +++ b/apps/sharebymail/tests/ShareByMailProviderTest.php @@ -835,26 +835,14 @@ class ShareByMailProviderTest extends TestCase { ->expects($this->once()) ->method('addFooter') ->with('UnitTestCloud - Testing like 1990'); - $message - ->expects($this->once()) - ->method('setSubject') - ->willReturn('Mrs. Owner User shared »file.txt« with you'); $template ->expects($this->once()) - ->method('renderText') - ->willReturn('Text Render'); - $message - ->expects($this->once()) - ->method('setPlainBody') - ->with('Text Render'); - $template - ->expects($this->once()) - ->method('renderHtml') - ->willReturn('HTML Render'); + ->method('setSubject') + ->with('Mrs. Owner User shared »file.txt« with you'); $message ->expects($this->once()) - ->method('setHtmlBody') - ->with('HTML Render'); + ->method('useTemplate') + ->with($template); $this->mailer ->expects($this->once()) ->method('send') @@ -936,26 +924,14 @@ class ShareByMailProviderTest extends TestCase { ->expects($this->once()) ->method('addFooter') ->with(''); - $message - ->expects($this->once()) - ->method('setSubject') - ->willReturn('Mr. Initiator User shared »file.txt« with you'); $template ->expects($this->once()) - ->method('renderText') - ->willReturn('Text Render'); - $message - ->expects($this->once()) - ->method('setPlainBody') - ->with('Text Render'); - $template - ->expects($this->once()) - ->method('renderHtml') - ->willReturn('HTML Render'); + ->method('setSubject') + ->with('Mr. Initiator User shared »file.txt« with you'); $message ->expects($this->once()) - ->method('setHtmlBody') - ->with('HTML Render'); + ->method('useTemplate') + ->with($template); $this->mailer ->expects($this->once()) ->method('send') diff --git a/apps/systemtags/l10n/ca.js b/apps/systemtags/l10n/ca.js index 3506940d2ee..aa098858184 100644 --- a/apps/systemtags/l10n/ca.js +++ b/apps/systemtags/l10n/ca.js @@ -2,28 +2,54 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiquetes", + "Update" : "Actualitza", + "Create" : "Crea", + "Select tag…" : "Selecciona etiqueta...", "Tagged files" : "Fitxers marcats", "Select tags to filter by" : "Selecciona les marques per filtrar-ne", + "No tags found" : "No s'han trobat etiquetes", "Please select tags to filter by" : "Si us plau selecciona les marques per filtrar-ne", "No files found for the selected tags" : "No s'han trobat fitxers per les marques sel·leccionades", - "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", - "You assigned system tag %3$s" : "Has assignat la marca de sistema %3$s", - "%1$s assigned system tag %3$s" : "%1$s ha assignat la marca de sistema %3$s", - "You unassigned system tag %3$s" : "Has des-assignat la marca de sistema %3$s", - "%1$s unassigned system tag %3$s" : "%1$s ha des-assignat la marca de sistema %3$s", - "You created system tag %2$s" : "Has creat la marca de sistema %2$s", + "Added system tag %1$s" : "S'ha afegit l'etiqueta del sistema%1$s", + "Added system tag {systemtag}" : "S'ha afegit l'etiqueta del sistema {systemtag}", + "%1$s added system tag %2$s" : "%1$setiqueta del sistema afegida%2$s", + "{actor} added system tag {systemtag}" : "{actor} etiqueta del sistema afegida {systemtag}", + "Removed system tag %1$s" : "S'ha eliminat l'etiqueta del sistema%1$s", + "Removed system tag {systemtag}" : "S'ha eliminat l'etiqueta del sistema {systemtag}", + "%1$s removed system tag %2$s" : "%1$setiqueta del sistema eliminada%2$s", + "{actor} removed system tag {systemtag}" : "{actor} ha eliminat l'etiqueta del sistema {systemtag}", + "You created system tag %1$s" : "Has creat la marca de sistema %1$s", + "You created system tag {systemtag}" : "Has creat la marca de sistema {systemtag}", "%1$s created system tag %2$s" : "%1$s ha creat la marca de sistema %2$s", - "You deleted system tag %2$s" : "Has esborrat la marca de sistema %2$s", + "{actor} created system tag {systemtag}" : "{actor} ha creat l'etiqueta del sistema {systemtag}", + "You deleted system tag %1$s" : "Has esborrat la marca de sistema %1$s", + "You deleted system tag {systemtag}" : "Heu suprimit l'etiqueta del sistema {systemtag}", "%1$s deleted system tag %2$s" : "%1$s ha esborrat la marca de sistema %2$s", - "You updated system tag %3$s to %2$s" : "Has actualitzat les marques de sistema de la %3$s a la %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} sistema de sistema eliminat {systemtag}", + "You updated system tag %2$s to %1$s" : "Has actualitzat les marques de sistema de la %2$s a la %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Heu actualitzat l'etiqueta del sistema {oldsystemtag} a {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s ha actualitzat les marques de sistema de la %3$s a la %2$s", - "You assigned system tag %3$s to %2$s" : "Has assignat les marques de sistema de la %3$s a la %2$s", - "%1$s assigned system tag %3$s to %2$s" : "%1$s ha assignat les marques de sistema de la %3$s a la %2$s", - "You unassigned system tag %3$s from %2$s" : "Has des-assignat les marques de sistema de la %3$s a la %2$s", - "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha des-assignat les marques de sistema de la %3$s a la %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} etiqueta del sistema actualitzada {oldsystemtag} a {newsystemtag}", + "You added system tag %2$s to %1$s" : "Heu afegit l'etiqueta del sistema %2$sa%1$s", + "You added system tag {systemtag} to {file}" : "Heu afegit l'etiqueta del sistema {systemtag} a {file}", + "%1$s added system tag %3$s to %2$s" : "%1$sS'ha afegit una etiqueta al sistema%3$s%2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} ha afegit l'etiqueta del sistema {systemtag} a {file}", + "You removed system tag %2$s from %1$s" : "Heu eliminat l'etiqueta del sistema%2$s %1$s", + "You removed system tag {systemtag} from {file}" : "Heu eliminat l'etiqueta del sistema {systemtag} de {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$sS'ha eliminat l'etiqueta del sistema%3$s%2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} ha eliminat l'etiqueta del sistema {systemtag} de {file}", "%s (restricted)" : "%s (restringit)", "%s (invisible)" : "%s (invisible)", + "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", + "Collaborative tags" : "Etiquetes col·laboratives", + "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris.", + "Select tag …" : "Selecciona etiqueta...", "Name" : "Nom", + "Delete" : "Esborra", + "Public" : "Públic", + "Restricted" : "Restringit", + "Invisible" : "Invisible", + "Reset" : "Canvia", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Size" : "Mida", diff --git a/apps/systemtags/l10n/ca.json b/apps/systemtags/l10n/ca.json index 46bdaabfacc..12a18285956 100644 --- a/apps/systemtags/l10n/ca.json +++ b/apps/systemtags/l10n/ca.json @@ -1,27 +1,53 @@ { "translations": { "Tags" : "Etiquetes", + "Update" : "Actualitza", + "Create" : "Crea", + "Select tag…" : "Selecciona etiqueta...", "Tagged files" : "Fitxers marcats", "Select tags to filter by" : "Selecciona les marques per filtrar-ne", + "No tags found" : "No s'han trobat etiquetes", "Please select tags to filter by" : "Si us plau selecciona les marques per filtrar-ne", "No files found for the selected tags" : "No s'han trobat fitxers per les marques sel·leccionades", - "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", - "You assigned system tag %3$s" : "Has assignat la marca de sistema %3$s", - "%1$s assigned system tag %3$s" : "%1$s ha assignat la marca de sistema %3$s", - "You unassigned system tag %3$s" : "Has des-assignat la marca de sistema %3$s", - "%1$s unassigned system tag %3$s" : "%1$s ha des-assignat la marca de sistema %3$s", - "You created system tag %2$s" : "Has creat la marca de sistema %2$s", + "Added system tag %1$s" : "S'ha afegit l'etiqueta del sistema%1$s", + "Added system tag {systemtag}" : "S'ha afegit l'etiqueta del sistema {systemtag}", + "%1$s added system tag %2$s" : "%1$setiqueta del sistema afegida%2$s", + "{actor} added system tag {systemtag}" : "{actor} etiqueta del sistema afegida {systemtag}", + "Removed system tag %1$s" : "S'ha eliminat l'etiqueta del sistema%1$s", + "Removed system tag {systemtag}" : "S'ha eliminat l'etiqueta del sistema {systemtag}", + "%1$s removed system tag %2$s" : "%1$setiqueta del sistema eliminada%2$s", + "{actor} removed system tag {systemtag}" : "{actor} ha eliminat l'etiqueta del sistema {systemtag}", + "You created system tag %1$s" : "Has creat la marca de sistema %1$s", + "You created system tag {systemtag}" : "Has creat la marca de sistema {systemtag}", "%1$s created system tag %2$s" : "%1$s ha creat la marca de sistema %2$s", - "You deleted system tag %2$s" : "Has esborrat la marca de sistema %2$s", + "{actor} created system tag {systemtag}" : "{actor} ha creat l'etiqueta del sistema {systemtag}", + "You deleted system tag %1$s" : "Has esborrat la marca de sistema %1$s", + "You deleted system tag {systemtag}" : "Heu suprimit l'etiqueta del sistema {systemtag}", "%1$s deleted system tag %2$s" : "%1$s ha esborrat la marca de sistema %2$s", - "You updated system tag %3$s to %2$s" : "Has actualitzat les marques de sistema de la %3$s a la %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} sistema de sistema eliminat {systemtag}", + "You updated system tag %2$s to %1$s" : "Has actualitzat les marques de sistema de la %2$s a la %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Heu actualitzat l'etiqueta del sistema {oldsystemtag} a {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s ha actualitzat les marques de sistema de la %3$s a la %2$s", - "You assigned system tag %3$s to %2$s" : "Has assignat les marques de sistema de la %3$s a la %2$s", - "%1$s assigned system tag %3$s to %2$s" : "%1$s ha assignat les marques de sistema de la %3$s a la %2$s", - "You unassigned system tag %3$s from %2$s" : "Has des-assignat les marques de sistema de la %3$s a la %2$s", - "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha des-assignat les marques de sistema de la %3$s a la %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} etiqueta del sistema actualitzada {oldsystemtag} a {newsystemtag}", + "You added system tag %2$s to %1$s" : "Heu afegit l'etiqueta del sistema %2$sa%1$s", + "You added system tag {systemtag} to {file}" : "Heu afegit l'etiqueta del sistema {systemtag} a {file}", + "%1$s added system tag %3$s to %2$s" : "%1$sS'ha afegit una etiqueta al sistema%3$s%2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} ha afegit l'etiqueta del sistema {systemtag} a {file}", + "You removed system tag %2$s from %1$s" : "Heu eliminat l'etiqueta del sistema%2$s %1$s", + "You removed system tag {systemtag} from {file}" : "Heu eliminat l'etiqueta del sistema {systemtag} de {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$sS'ha eliminat l'etiqueta del sistema%3$s%2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} ha eliminat l'etiqueta del sistema {systemtag} de {file}", "%s (restricted)" : "%s (restringit)", "%s (invisible)" : "%s (invisible)", + "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", + "Collaborative tags" : "Etiquetes col·laboratives", + "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris.", + "Select tag …" : "Selecciona etiqueta...", "Name" : "Nom", + "Delete" : "Esborra", + "Public" : "Públic", + "Restricted" : "Restringit", + "Invisible" : "Invisible", + "Reset" : "Canvia", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Size" : "Mida", diff --git a/apps/systemtags/l10n/hu.js b/apps/systemtags/l10n/hu.js index e2cc831e08c..a8843c60538 100644 --- a/apps/systemtags/l10n/hu.js +++ b/apps/systemtags/l10n/hu.js @@ -42,6 +42,7 @@ OC.L10N.register( "%s (invisible)" : "%s (láthatatlan)", "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett", "Collaborative tags" : "Együttműködési címkék", + "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek.", "Select tag …" : "Címke választás...", "Name" : "Név", "Delete" : "Törlés", diff --git a/apps/systemtags/l10n/hu.json b/apps/systemtags/l10n/hu.json index 8e1cff657ce..42b0b7df129 100644 --- a/apps/systemtags/l10n/hu.json +++ b/apps/systemtags/l10n/hu.json @@ -40,6 +40,7 @@ "%s (invisible)" : "%s (láthatatlan)", "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett", "Collaborative tags" : "Együttműködési címkék", + "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek.", "Select tag …" : "Címke választás...", "Name" : "Név", "Delete" : "Törlés", diff --git a/apps/systemtags/l10n/nb.js b/apps/systemtags/l10n/nb.js index a46e4f90a52..3414b982ab0 100644 --- a/apps/systemtags/l10n/nb.js +++ b/apps/systemtags/l10n/nb.js @@ -5,7 +5,7 @@ OC.L10N.register( "Update" : "Oppdater", "Create" : "Opprett", "Select tag…" : "Velg merkelapp…", - "Tagged files" : "Merkede filer", + "Tagged files" : "Filer med merkelapper", "Select tags to filter by" : "Velg merkelapper å filtrere etter", "No tags found" : "Fant ingen merkelapper", "Please select tags to filter by" : "Velg merkelapper å filtrere etter", @@ -41,8 +41,8 @@ OC.L10N.register( "%s (restricted)" : "%s (begrenset)", "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "Endringer av en fils <strong>System-merkelapper</strong>", - "Collaborative tags" : "Felles merkelapper", - "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmessige merkelapper. Disse har innvirkning på alle brukere.", + "Collaborative tags" : "Samarbeidsmerkelapper", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere.", "Select tag …" : "Velg merkelapp…", "Name" : "Navn", "Delete" : "Slett", diff --git a/apps/systemtags/l10n/nb.json b/apps/systemtags/l10n/nb.json index e07dc26ac27..bf5047e205d 100644 --- a/apps/systemtags/l10n/nb.json +++ b/apps/systemtags/l10n/nb.json @@ -3,7 +3,7 @@ "Update" : "Oppdater", "Create" : "Opprett", "Select tag…" : "Velg merkelapp…", - "Tagged files" : "Merkede filer", + "Tagged files" : "Filer med merkelapper", "Select tags to filter by" : "Velg merkelapper å filtrere etter", "No tags found" : "Fant ingen merkelapper", "Please select tags to filter by" : "Velg merkelapper å filtrere etter", @@ -39,8 +39,8 @@ "%s (restricted)" : "%s (begrenset)", "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "Endringer av en fils <strong>System-merkelapper</strong>", - "Collaborative tags" : "Felles merkelapper", - "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmessige merkelapper. Disse har innvirkning på alle brukere.", + "Collaborative tags" : "Samarbeidsmerkelapper", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere.", "Select tag …" : "Velg merkelapp…", "Name" : "Navn", "Delete" : "Slett", diff --git a/apps/systemtags/l10n/sr.js b/apps/systemtags/l10n/sr.js index 623fdf3bfa4..815e319acc6 100644 --- a/apps/systemtags/l10n/sr.js +++ b/apps/systemtags/l10n/sr.js @@ -2,18 +2,57 @@ OC.L10N.register( "systemtags", { "Tags" : "Ознаке", + "Update" : "Ажурирај", + "Create" : "Направи", + "Select tag…" : "Одабери ознаку…", "Tagged files" : "Означени фајлови", - "<strong>System tags</strong> for a file have been modified" : "<strong>Системске ознаке</strong> за фајл су измењене", - "%1$s assigned system tag %3$s" : "%1$s додели системску ознаку %3$s", - "%1$s created system tag %2$s" : "%1$s направи системску ознаку %2$s", - "%1$s deleted system tag %2$s" : "%1$s обриса системску ознаку %2$s", - "%1$s updated system tag %3$s to %2$s" : "%1$s ажурира системску ознаку %3$s на %2$s", - "%1$s assigned system tag %3$s to %2$s" : "%1$s додели системску ознаку %3$s на %2$s", + "Select tags to filter by" : "Одаберите ознаке по којима да се филтрира", + "No tags found" : "Нису нађене ознаке", + "Please select tags to filter by" : "Одаберите ознаке по којима да се филтрира", + "No files found for the selected tags" : "Ниједан фајл није нађен за одабране ознаке", + "Added system tag %1$s" : "Додата системска ознака %1$s", + "Added system tag {systemtag}" : "Додата системска ознака {systemtag}", + "%1$s added system tag %2$s" : "%1$s је додао системску ознаку %2$s", + "{actor} added system tag {systemtag}" : "{actor} је додао системску ознаку {systemtag}", + "Removed system tag %1$s" : "Уклоњена системска ознака %1$s", + "Removed system tag {systemtag}" : "Уклоњена системска ознака {systemtag}", + "%1$s removed system tag %2$s" : "%1$sуклонио системску ознаку %2$s", + "{actor} removed system tag {systemtag}" : "{actor} уклонио системску ознаку {systemtag}", + "You created system tag %1$s" : "Направили сте системску ознаку %1$s", + "You created system tag {systemtag}" : "Направили сте системску ознаку {systemtag}", + "%1$s created system tag %2$s" : "%1$s направио системску ознаку %2$s", + "{actor} created system tag {systemtag}" : "{actor} направио системску ознаку {systemtag}", + "You deleted system tag %1$s" : "Избрисали сте системску ознаку %1$s", + "You deleted system tag {systemtag}" : "Избрисали сте системску ознаку {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s обрисао системску ознаку %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} обрисао системску ознаку {systemtag}", + "You updated system tag %2$s to %1$s" : "Ажурирали сте системску ознаку %2$s на %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ажурирали сте системску ознаку {oldsystemtag} на {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s ажурирао системску ознаку %3$s на %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} ажурирао системску ознаку {oldsystemtag} на {newsystemtag}", + "You added system tag %2$s to %1$s" : "Додали сте системску ознаку %2$s на %1$s", + "You added system tag {systemtag} to {file}" : "Додали сте системску ознаку {systemtag} на {file}", + "%1$s added system tag %3$s to %2$s" : "%1$s додао системску ознаку %3$s на %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} додао системску ознаку {systemtag} на {file}", + "You removed system tag %2$s from %1$s" : "Уклонили сте системску ознаку %2$s са %1$s", + "You removed system tag {systemtag} from {file}" : "Уклонили сте системску ознаку {systemtag} са {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s уклонио системску ознаку %3$s са %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} уклонио системску ознаку {systemtag} са {file}", + "%s (restricted)" : "%s (ограничена)", "%s (invisible)" : "%s (невидљива)", + "<strong>System tags</strong> for a file have been modified" : "<strong>Системске ознаке</strong> за фајл су измењене", + "Collaborative tags" : "Тимске ознаке", + "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника.", + "Select tag …" : "Одаберите ознаку …", + "Name" : "Назив", + "Delete" : "Обриши", + "Public" : "Јавна", + "Restricted" : "Ограничена", + "Invisible" : "Невидљива", + "Reset" : "Ресетуј", "No files in here" : "Овде нема фајлова", "No entries found in this folder" : "Нема ничега у овој фасцикли", - "Name" : "назив", - "Size" : "величина", + "Size" : "Величина", "Modified" : "Измењен" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/systemtags/l10n/sr.json b/apps/systemtags/l10n/sr.json index 2ea8c679e9e..3a90fe870eb 100644 --- a/apps/systemtags/l10n/sr.json +++ b/apps/systemtags/l10n/sr.json @@ -1,17 +1,56 @@ { "translations": { "Tags" : "Ознаке", + "Update" : "Ажурирај", + "Create" : "Направи", + "Select tag…" : "Одабери ознаку…", "Tagged files" : "Означени фајлови", - "<strong>System tags</strong> for a file have been modified" : "<strong>Системске ознаке</strong> за фајл су измењене", - "%1$s assigned system tag %3$s" : "%1$s додели системску ознаку %3$s", - "%1$s created system tag %2$s" : "%1$s направи системску ознаку %2$s", - "%1$s deleted system tag %2$s" : "%1$s обриса системску ознаку %2$s", - "%1$s updated system tag %3$s to %2$s" : "%1$s ажурира системску ознаку %3$s на %2$s", - "%1$s assigned system tag %3$s to %2$s" : "%1$s додели системску ознаку %3$s на %2$s", + "Select tags to filter by" : "Одаберите ознаке по којима да се филтрира", + "No tags found" : "Нису нађене ознаке", + "Please select tags to filter by" : "Одаберите ознаке по којима да се филтрира", + "No files found for the selected tags" : "Ниједан фајл није нађен за одабране ознаке", + "Added system tag %1$s" : "Додата системска ознака %1$s", + "Added system tag {systemtag}" : "Додата системска ознака {systemtag}", + "%1$s added system tag %2$s" : "%1$s је додао системску ознаку %2$s", + "{actor} added system tag {systemtag}" : "{actor} је додао системску ознаку {systemtag}", + "Removed system tag %1$s" : "Уклоњена системска ознака %1$s", + "Removed system tag {systemtag}" : "Уклоњена системска ознака {systemtag}", + "%1$s removed system tag %2$s" : "%1$sуклонио системску ознаку %2$s", + "{actor} removed system tag {systemtag}" : "{actor} уклонио системску ознаку {systemtag}", + "You created system tag %1$s" : "Направили сте системску ознаку %1$s", + "You created system tag {systemtag}" : "Направили сте системску ознаку {systemtag}", + "%1$s created system tag %2$s" : "%1$s направио системску ознаку %2$s", + "{actor} created system tag {systemtag}" : "{actor} направио системску ознаку {systemtag}", + "You deleted system tag %1$s" : "Избрисали сте системску ознаку %1$s", + "You deleted system tag {systemtag}" : "Избрисали сте системску ознаку {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s обрисао системску ознаку %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} обрисао системску ознаку {systemtag}", + "You updated system tag %2$s to %1$s" : "Ажурирали сте системску ознаку %2$s на %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ажурирали сте системску ознаку {oldsystemtag} на {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s ажурирао системску ознаку %3$s на %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} ажурирао системску ознаку {oldsystemtag} на {newsystemtag}", + "You added system tag %2$s to %1$s" : "Додали сте системску ознаку %2$s на %1$s", + "You added system tag {systemtag} to {file}" : "Додали сте системску ознаку {systemtag} на {file}", + "%1$s added system tag %3$s to %2$s" : "%1$s додао системску ознаку %3$s на %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} додао системску ознаку {systemtag} на {file}", + "You removed system tag %2$s from %1$s" : "Уклонили сте системску ознаку %2$s са %1$s", + "You removed system tag {systemtag} from {file}" : "Уклонили сте системску ознаку {systemtag} са {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s уклонио системску ознаку %3$s са %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} уклонио системску ознаку {systemtag} са {file}", + "%s (restricted)" : "%s (ограничена)", "%s (invisible)" : "%s (невидљива)", + "<strong>System tags</strong> for a file have been modified" : "<strong>Системске ознаке</strong> за фајл су измењене", + "Collaborative tags" : "Тимске ознаке", + "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника.", + "Select tag …" : "Одаберите ознаку …", + "Name" : "Назив", + "Delete" : "Обриши", + "Public" : "Јавна", + "Restricted" : "Ограничена", + "Invisible" : "Невидљива", + "Reset" : "Ресетуј", "No files in here" : "Овде нема фајлова", "No entries found in this folder" : "Нема ничега у овој фасцикли", - "Name" : "назив", - "Size" : "величина", + "Size" : "Величина", "Modified" : "Измењен" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/vi.js b/apps/systemtags/l10n/vi.js index 92973a5ba35..3d42ed6fa59 100644 --- a/apps/systemtags/l10n/vi.js +++ b/apps/systemtags/l10n/vi.js @@ -38,8 +38,12 @@ OC.L10N.register( "You removed system tag {systemtag} from {file}" : "Bạn đã xóa nhãn {systemtag} khỏi {file}", "%1$s removed system tag %3$s from %2$s" : "%1$s đã xóa nhãn %3$s khỏi %2$s", "{actor} removed system tag {systemtag} from {file}" : "{actor} đã xóa nhãn {systemtag} khỏi {file}", + "%s (restricted)" : "%s (bị hạn chế)", + "%s (invisible)" : "%s (vô hình)", "<strong>System tags</strong> for a file have been modified" : "<strong>Nhãn</strong> cho một tập tin đã được sửa đổi", "Collaborative tags" : "Thẻ cộng tác", + "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng.", + "Select tag …" : "Lựa chọn thẻ", "Name" : "Tên", "Delete" : "Xóa bỏ", "Public" : "Công khai", diff --git a/apps/systemtags/l10n/vi.json b/apps/systemtags/l10n/vi.json index 33ca7121c71..187aa101071 100644 --- a/apps/systemtags/l10n/vi.json +++ b/apps/systemtags/l10n/vi.json @@ -36,8 +36,12 @@ "You removed system tag {systemtag} from {file}" : "Bạn đã xóa nhãn {systemtag} khỏi {file}", "%1$s removed system tag %3$s from %2$s" : "%1$s đã xóa nhãn %3$s khỏi %2$s", "{actor} removed system tag {systemtag} from {file}" : "{actor} đã xóa nhãn {systemtag} khỏi {file}", + "%s (restricted)" : "%s (bị hạn chế)", + "%s (invisible)" : "%s (vô hình)", "<strong>System tags</strong> for a file have been modified" : "<strong>Nhãn</strong> cho một tập tin đã được sửa đổi", "Collaborative tags" : "Thẻ cộng tác", + "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng.", + "Select tag …" : "Lựa chọn thẻ", "Name" : "Tên", "Delete" : "Xóa bỏ", "Public" : "Công khai", diff --git a/apps/theming/css/settings-admin.css b/apps/theming/css/settings-admin.css index b32ed189ceb..7270ec59b83 100644 --- a/apps/theming/css/settings-admin.css +++ b/apps/theming/css/settings-admin.css @@ -78,6 +78,7 @@ form.uploadButton { #theming_settings_msg { vertical-align: middle; + border-radius: 3px; } #theming-preview-logo { diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js index d9e66284d14..44a799a19b4 100644 --- a/apps/theming/js/settings-admin.js +++ b/apps/theming/js/settings-admin.js @@ -141,6 +141,7 @@ $(document).ready(function () { fail: function (e, response){ OC.msg.finishedError('#theming_settings_msg', response._response.jqXHR.responseJSON.data.message); $('label#uploadlogo').addClass('icon-upload').removeClass('icon-loading-small'); + $('#theming_settings_loading').hide(); } }; var uploadParamsLogin = { @@ -159,6 +160,7 @@ $(document).ready(function () { fail: function (e, response){ $('label#upload-login-background').removeClass('icon-loading-small').addClass('icon-upload'); OC.msg.finishedError('#theming_settings_msg', response._response.jqXHR.responseJSON.data.message); + $('#theming_settings_loading').hide(); } }; diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index 52c12d1f093..86226c364b1 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", + "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe erlaubt, die im HTML-Formular spezifiziert ist", + "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", + "No file was uploaded" : "Es wurde keine Datei hochgeladen", + "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", + "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", + "A PHP extension stopped the file upload." : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt.", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index b9684f0a672..dc88a7be984 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -7,6 +7,14 @@ "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", + "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe erlaubt, die im HTML-Formular spezifiziert ist", + "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", + "No file was uploaded" : "Es wurde keine Datei hochgeladen", + "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", + "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", + "A PHP extension stopped the file upload." : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt.", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js index 8e9ec2fe8d9..88dab08c44a 100644 --- a/apps/theming/l10n/de_DE.js +++ b/apps/theming/l10n/de_DE.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", + "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe erlaubt, die im HTML-Formular spezifiziert ist", + "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", + "No file was uploaded" : "Es wurde keine Datei hochgeladen", + "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", + "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", + "A PHP extension stopped the file upload." : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt.", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json index f4dfa4d6bba..14043ad1fd6 100644 --- a/apps/theming/l10n/de_DE.json +++ b/apps/theming/l10n/de_DE.json @@ -7,6 +7,14 @@ "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", + "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe erlaubt, die im HTML-Formular spezifiziert ist", + "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", + "No file was uploaded" : "Es wurde keine Datei hochgeladen", + "Missing a temporary folder" : "Kein temporärer Ordner vorhanden", + "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", + "A PHP extension stopped the file upload." : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt.", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index ed5ac6af520..634f4a6f8a2 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "L'adresse web donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", + "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été téléversé avec succès", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier téléversé dépasse la valeur MAX_FILE_SIZE spécifiée dans le formulaire HTML", + "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement téléversé", + "No file was uploaded" : "Aucun fichier téléversé", + "Missing a temporary folder" : "Absence de dossier temporaire", + "Failed to write file to disk." : "Erreur d'écriture du fichier sur le disque.", + "A PHP extension stopped the file upload." : "Une extension PHP a arrêté le téléversement du fichier.", "No file uploaded" : "Aucun fichier téléversé", "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index a6d45297e25..aac3b06b6d3 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -7,6 +7,14 @@ "The given web address is too long" : "L'adresse web donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", + "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été téléversé avec succès", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier téléversé dépasse la valeur MAX_FILE_SIZE spécifiée dans le formulaire HTML", + "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement téléversé", + "No file was uploaded" : "Aucun fichier téléversé", + "Missing a temporary folder" : "Absence de dossier temporaire", + "Failed to write file to disk." : "Erreur d'écriture du fichier sur le disque.", + "A PHP extension stopped the file upload." : "Une extension PHP a arrêté le téléversement du fichier.", "No file uploaded" : "Aucun fichier téléversé", "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", diff --git a/apps/theming/l10n/it.js b/apps/theming/l10n/it.js index 06747e43aa7..33e18252f2b 100644 --- a/apps/theming/l10n/it.js +++ b/apps/theming/l10n/it.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "Questo indirizzo web è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", + "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Il file caricato supera la direttiva upload_max_filesize in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", + "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", + "No file was uploaded" : "Non è stato caricato alcun file", + "Missing a temporary folder" : "Manca una cartella temporanea", + "Failed to write file to disk." : "Scrittura su disco non riuscita", + "A PHP extension stopped the file upload." : "Un'estensione PHP ha fermato il caricamento del file.", "No file uploaded" : "Nessun file caricato", "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme" : "Stai già usando un tema personalizzato", diff --git a/apps/theming/l10n/it.json b/apps/theming/l10n/it.json index 54517d5ba47..56c1a122765 100644 --- a/apps/theming/l10n/it.json +++ b/apps/theming/l10n/it.json @@ -7,6 +7,14 @@ "The given web address is too long" : "Questo indirizzo web è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", + "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Il file caricato supera la direttiva upload_max_filesize in php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", + "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", + "No file was uploaded" : "Non è stato caricato alcun file", + "Missing a temporary folder" : "Manca una cartella temporanea", + "Failed to write file to disk." : "Scrittura su disco non riuscita", + "A PHP extension stopped the file upload." : "Un'estensione PHP ha fermato il caricamento del file.", "No file uploaded" : "Nessun file caricato", "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme" : "Stai già usando un tema personalizzato", diff --git a/apps/theming/l10n/nb.js b/apps/theming/l10n/nb.js index 9b286698355..f3ae7b15a97 100644 --- a/apps/theming/l10n/nb.js +++ b/apps/theming/l10n/nb.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "Nettadressen er for lang", "The given slogan is too long" : "Slagordet er for langt", "The given color is invalid" : "Fargen er ugyldig", + "There is no error, the file uploaded with success" : "Det er ingen feil, opplastingen av filen var vellykket", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Filen er større enn grensen satt i upload_max_filesize i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Filen du prøvde å laste opp er større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet", + "The uploaded file was only partially uploaded" : "Filen ble bare delvis lastet opp", + "No file was uploaded" : "Ingen filer ble lastet opp", + "Missing a temporary folder" : "Mangler midlertidig mappe", + "Failed to write file to disk." : "Klarte ikke å skrive til disk.", + "A PHP extension stopped the file upload." : "En PHP-utvidelse stoppet filopplastingen.", "No file uploaded" : "Ingen fil lastet opp", "Unsupported image type" : "Filtypen støttes ikke", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", diff --git a/apps/theming/l10n/nb.json b/apps/theming/l10n/nb.json index 6557edea2b8..841c215d0d9 100644 --- a/apps/theming/l10n/nb.json +++ b/apps/theming/l10n/nb.json @@ -7,6 +7,14 @@ "The given web address is too long" : "Nettadressen er for lang", "The given slogan is too long" : "Slagordet er for langt", "The given color is invalid" : "Fargen er ugyldig", + "There is no error, the file uploaded with success" : "Det er ingen feil, opplastingen av filen var vellykket", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Filen er større enn grensen satt i upload_max_filesize i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Filen du prøvde å laste opp er større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet", + "The uploaded file was only partially uploaded" : "Filen ble bare delvis lastet opp", + "No file was uploaded" : "Ingen filer ble lastet opp", + "Missing a temporary folder" : "Mangler midlertidig mappe", + "Failed to write file to disk." : "Klarte ikke å skrive til disk.", + "A PHP extension stopped the file upload." : "En PHP-utvidelse stoppet filopplastingen.", "No file uploaded" : "Ingen fil lastet opp", "Unsupported image type" : "Filtypen støttes ikke", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", diff --git a/apps/theming/l10n/pl.js b/apps/theming/l10n/pl.js index b0a95f6f984..a623a2bbcbf 100644 --- a/apps/theming/l10n/pl.js +++ b/apps/theming/l10n/pl.js @@ -13,7 +13,7 @@ OC.L10N.register( "Unsupported image type" : "Nieobsługiwany typ zdjęcia", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "Theming" : "Motyw", - "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wpsieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wspieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "Reset to default" : "Przywróć domyślne", "Web address" : "adres internetowy", diff --git a/apps/theming/l10n/pl.json b/apps/theming/l10n/pl.json index 15473a4b39f..241f45ea2e2 100644 --- a/apps/theming/l10n/pl.json +++ b/apps/theming/l10n/pl.json @@ -11,7 +11,7 @@ "Unsupported image type" : "Nieobsługiwany typ zdjęcia", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "Theming" : "Motyw", - "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wpsieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wspieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "Reset to default" : "Przywróć domyślne", "Web address" : "adres internetowy", diff --git a/apps/theming/l10n/pt_BR.js b/apps/theming/l10n/pt_BR.js index 1f05a513bd4..6ea5b601ae9 100644 --- a/apps/theming/l10n/pt_BR.js +++ b/apps/theming/l10n/pt_BR.js @@ -9,6 +9,14 @@ OC.L10N.register( "The given web address is too long" : "O endereço web fornecido é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", + "There is no error, the file uploaded with success" : "Sem erros. Arquivo enviado com sucesso", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O arquivo enviado excede a diretiva MAX_FILE_SIZE especificada no formulário HTML", + "The uploaded file was only partially uploaded" : "O arquivo foi enviado parcialmente", + "No file was uploaded" : "Nenhum arquivo foi enviado", + "Missing a temporary folder" : "Falta uma pasta temporária", + "Failed to write file to disk." : "Falha ao escrever no disco.", + "A PHP extension stopped the file upload." : "Uma extensão PHP parou o envio do arquivo.", "No file uploaded" : "Nenhum arquivo enviado", "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme" : "Você já está usando um tema personalizado", diff --git a/apps/theming/l10n/pt_BR.json b/apps/theming/l10n/pt_BR.json index 41b06d8316f..a1d07f342f0 100644 --- a/apps/theming/l10n/pt_BR.json +++ b/apps/theming/l10n/pt_BR.json @@ -7,6 +7,14 @@ "The given web address is too long" : "O endereço web fornecido é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", + "There is no error, the file uploaded with success" : "Sem erros. Arquivo enviado com sucesso", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O arquivo enviado excede a diretiva MAX_FILE_SIZE especificada no formulário HTML", + "The uploaded file was only partially uploaded" : "O arquivo foi enviado parcialmente", + "No file was uploaded" : "Nenhum arquivo foi enviado", + "Missing a temporary folder" : "Falta uma pasta temporária", + "Failed to write file to disk." : "Falha ao escrever no disco.", + "A PHP extension stopped the file upload." : "Uma extensão PHP parou o envio do arquivo.", "No file uploaded" : "Nenhum arquivo enviado", "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme" : "Você já está usando um tema personalizado", diff --git a/apps/theming/l10n/sr.js b/apps/theming/l10n/sr.js new file mode 100644 index 00000000000..49344ec96ce --- /dev/null +++ b/apps/theming/l10n/sr.js @@ -0,0 +1,39 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Учитавам преглед…", + "Saved" : "Сачувано", + "Admin" : "Администрација", + "a safe home for all your data" : "сигурно место за све Ваше податке", + "The given name is too long" : "Име је предугачко", + "The given web address is too long" : "Адреса је предугачка", + "The given slogan is too long" : "Слоган је предугачак", + "The given color is invalid" : "Задата боја није исправна", + "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 file to disk." : "Не могу да пишем фајл на диск", + "A PHP extension stopped the file upload." : "PHP екстензија је зауставила отпремање фајла.", + "No file uploaded" : "Ниједан фајл није отпремљен", + "Unsupported image type" : "Неподржани тип слике", + "You are already using a custom theme" : "Већ користите прилагођену тему", + "Theming" : "Теме", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Теме Вам омогућавају да лако измените изглед Ваше инстанце и подржаних клијената. Ово ће бити видљиво свим корисницима.", + "Name" : "Име", + "Reset to default" : "Ресетуј на подразумевано", + "Web address" : "Веб адреса", + "Web address https://…" : "Веб адреса https://…", + "Slogan" : "Слоган", + "Color" : "Боја", + "Logo" : "Лого", + "Upload new logo" : "Отпремите нови лого", + "Login image" : "Слика на пријави", + "Upload new login background" : "Отпремите нову позадину на пријави", + "Remove background image" : "Уклони позадину", + "reset to default" : "ресетуј на подразумевано", + "Log in image" : "Слика на пријави" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/theming/l10n/sr.json b/apps/theming/l10n/sr.json new file mode 100644 index 00000000000..db82d478ee7 --- /dev/null +++ b/apps/theming/l10n/sr.json @@ -0,0 +1,37 @@ +{ "translations": { + "Loading preview…" : "Учитавам преглед…", + "Saved" : "Сачувано", + "Admin" : "Администрација", + "a safe home for all your data" : "сигурно место за све Ваше податке", + "The given name is too long" : "Име је предугачко", + "The given web address is too long" : "Адреса је предугачка", + "The given slogan is too long" : "Слоган је предугачак", + "The given color is invalid" : "Задата боја није исправна", + "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 file to disk." : "Не могу да пишем фајл на диск", + "A PHP extension stopped the file upload." : "PHP екстензија је зауставила отпремање фајла.", + "No file uploaded" : "Ниједан фајл није отпремљен", + "Unsupported image type" : "Неподржани тип слике", + "You are already using a custom theme" : "Већ користите прилагођену тему", + "Theming" : "Теме", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Теме Вам омогућавају да лако измените изглед Ваше инстанце и подржаних клијената. Ово ће бити видљиво свим корисницима.", + "Name" : "Име", + "Reset to default" : "Ресетуј на подразумевано", + "Web address" : "Веб адреса", + "Web address https://…" : "Веб адреса https://…", + "Slogan" : "Слоган", + "Color" : "Боја", + "Logo" : "Лого", + "Upload new logo" : "Отпремите нови лого", + "Login image" : "Слика на пријави", + "Upload new login background" : "Отпремите нову позадину на пријави", + "Remove background image" : "Уклони позадину", + "reset to default" : "ресетуј на подразумевано", + "Log in image" : "Слика на пријави" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/vi.js b/apps/theming/l10n/vi.js index 4bc27a36332..de28f75ab6d 100644 --- a/apps/theming/l10n/vi.js +++ b/apps/theming/l10n/vi.js @@ -1,7 +1,10 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Đang nạp để xem trước", "Saved" : "Đã lưu", + "Admin" : "Quản trị hệ thống", + "a safe home for all your data" : "Một ngôi nhà an toàn cho toàn bộ dữ liệu của bạn", "The given name is too long" : "Tên quá dài", "The given web address is too long" : "Địa chỉ web quá dài", "The given slogan is too long" : "Khẩu hiệu quá dài", @@ -9,8 +12,10 @@ OC.L10N.register( "No file uploaded" : "Không có tệp nào được tải lên", "Unsupported image type" : "Loại hình ảnh không được hỗ trợ", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", + "Theming" : "Điều chỉnh giao diện", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Điều chỉnh giao diện cho phép bạn có thể dễ dàng tùy biến bố cục trình bày của hệ thống. Khi thực hiện nó sẽ hiện hữu đối với tất cả người dùng", "Name" : "Tên", - "reset to default" : "đặt lại về mặc định", + "Reset to default" : "Đặt lại về mặc định", "Web address" : "Địa chỉ web", "Web address https://…" : "Địa chỉ web https://...", "Slogan" : "Khẩu hiệu", @@ -19,6 +24,8 @@ OC.L10N.register( "Upload new logo" : "Tải lên logo mới", "Login image" : "Hình ảnh trang đăng nhập", "Upload new login background" : "Tải lên ảnh nền trang đăng nhập mới", + "Remove background image" : "Xóa bỏ ảnh nền", + "reset to default" : "đặt lại về mặc định", "Log in image" : "Ảnh đăng nhập" }, "nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/vi.json b/apps/theming/l10n/vi.json index dac197289d7..10e069b0a61 100644 --- a/apps/theming/l10n/vi.json +++ b/apps/theming/l10n/vi.json @@ -1,5 +1,8 @@ { "translations": { + "Loading preview…" : "Đang nạp để xem trước", "Saved" : "Đã lưu", + "Admin" : "Quản trị hệ thống", + "a safe home for all your data" : "Một ngôi nhà an toàn cho toàn bộ dữ liệu của bạn", "The given name is too long" : "Tên quá dài", "The given web address is too long" : "Địa chỉ web quá dài", "The given slogan is too long" : "Khẩu hiệu quá dài", @@ -7,8 +10,10 @@ "No file uploaded" : "Không có tệp nào được tải lên", "Unsupported image type" : "Loại hình ảnh không được hỗ trợ", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", + "Theming" : "Điều chỉnh giao diện", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Điều chỉnh giao diện cho phép bạn có thể dễ dàng tùy biến bố cục trình bày của hệ thống. Khi thực hiện nó sẽ hiện hữu đối với tất cả người dùng", "Name" : "Tên", - "reset to default" : "đặt lại về mặc định", + "Reset to default" : "Đặt lại về mặc định", "Web address" : "Địa chỉ web", "Web address https://…" : "Địa chỉ web https://...", "Slogan" : "Khẩu hiệu", @@ -17,6 +22,8 @@ "Upload new logo" : "Tải lên logo mới", "Login image" : "Hình ảnh trang đăng nhập", "Upload new login background" : "Tải lên ảnh nền trang đăng nhập mới", + "Remove background image" : "Xóa bỏ ảnh nền", + "reset to default" : "đặt lại về mặc định", "Log in image" : "Ảnh đăng nhập" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index 06c2c430b7f..ccc2634ec14 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -207,12 +207,34 @@ class ThemingController extends Controller { } $newLogo = $this->request->getUploadedFile('uploadlogo'); $newBackgroundLogo = $this->request->getUploadedFile('upload-login-background'); + $error = null; + $phpFileUploadErrors = [ + UPLOAD_ERR_OK => $this->l10n->t('There is no error, the file uploaded with success'), + UPLOAD_ERR_INI_SIZE => $this->l10n->t('The uploaded file exceeds the upload_max_filesize directive in php.ini'), + UPLOAD_ERR_FORM_SIZE => $this->l10n->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'), + UPLOAD_ERR_PARTIAL => $this->l10n->t('The uploaded file was only partially uploaded'), + UPLOAD_ERR_NO_FILE => $this->l10n->t('No file was uploaded'), + UPLOAD_ERR_NO_TMP_DIR => $this->l10n->t('Missing a temporary folder'), + UPLOAD_ERR_CANT_WRITE => $this->l10n->t('Failed to write file to disk.'), + UPLOAD_ERR_EXTENSION => $this->l10n->t('A PHP extension stopped the file upload.'), + ]; if (empty($newLogo) && empty($newBackgroundLogo)) { + $error = $this->l10n->t('No file uploaded'); + } + if (!empty($newLogo) && array_key_exists('error', $newLogo) && $newLogo['error'] !== UPLOAD_ERR_OK) { + $error = $phpFileUploadErrors[$newLogo['error']]; + } + if (!empty($newBackgroundLogo) && array_key_exists('error', $newBackgroundLogo) && $newBackgroundLogo['error'] !== UPLOAD_ERR_OK) { + $error = $phpFileUploadErrors[$newBackgroundLogo['error']]; + } + + if ($error !== null) { return new DataResponse( [ 'data' => [ - 'message' => $this->l10n->t('No file uploaded') - ] + 'message' => $error + ], + 'status' => 'failure', ], Http::STATUS_UNPROCESSABLE_ENTITY ); @@ -227,6 +249,18 @@ class ThemingController extends Controller { if (!empty($newLogo)) { $target = $folder->newFile('logo'); + $supportedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'text/svg']; + if (!in_array($newLogo['type'], $supportedFormats)) { + return new DataResponse( + [ + 'data' => [ + 'message' => $this->l10n->t('Unsupported image type'), + ], + 'status' => 'failure', + ], + Http::STATUS_UNPROCESSABLE_ENTITY + ); + } $target->putContent(file_get_contents($newLogo['tmp_name'], 'r')); $this->themingDefaults->set('logoMime', $newLogo['type']); $name = $newLogo['name']; diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index c03eccb6eef..e964e886e5c 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -131,8 +131,9 @@ class ThemingControllerTest extends TestCase { $this->l10n ->expects($this->once()) ->method('t') - ->with($message) - ->willReturn($message); + ->will($this->returnCallback(function($str) { + return $str; + })); $this->scssCacher ->expects($this->once()) ->method('getCachedSCSS') @@ -183,8 +184,9 @@ class ThemingControllerTest extends TestCase { $this->l10n ->expects($this->once()) ->method('t') - ->with($message) - ->willReturn($message); + ->will($this->returnCallback(function($str) { + return $str; + })); $expected = new DataResponse( [ @@ -215,10 +217,11 @@ class ThemingControllerTest extends TestCase { ->with('upload-login-background') ->willReturn(null); $this->l10n - ->expects($this->once()) + ->expects($this->any()) ->method('t') - ->with('No file uploaded') - ->willReturn('No file uploaded'); + ->will($this->returnCallback(function($str) { + return $str; + })); $expected = new DataResponse( [ @@ -226,6 +229,56 @@ class ThemingControllerTest extends TestCase { [ 'message' => 'No file uploaded', ], + 'status' => 'failure', + ], + Http::STATUS_UNPROCESSABLE_ENTITY + ); + + $this->assertEquals($expected, $this->themingController->updateLogo()); + } + + public function testUpdateLogoInvalidMimeType() { + $this->request + ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) + ->method('getUploadedFile') + ->with('uploadlogo') + ->willReturn([ + 'tmp_name' => 'logo.pdf', + 'type' => 'application/pdf', + 'name' => 'logo.pdf', + 'error' => 0, + ]); + $this->request + ->expects($this->at(2)) + ->method('getUploadedFile') + ->with('upload-login-background') + ->willReturn(null); + $this->l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function($str) { + return $str; + })); + + $folder = $this->createMock(ISimpleFolder::class); + $this->appData + ->expects($this->once()) + ->method('getFolder') + ->with('images') + ->willReturn($folder); + + $expected = new DataResponse( + [ + 'data' => + [ + 'message' => 'Unsupported image type', + ], + 'status' => 'failure' ], Http::STATUS_UNPROCESSABLE_ENTITY ); @@ -258,13 +311,17 @@ class ThemingControllerTest extends TestCase { public function dataUpdateImages() { return [ - [false], - [true] + ['image/jpeg', false], + ['image/jpeg', true], + ['image/gif'], + ['image/png'], + ['image/svg+xml'], + ['text/svg'], ]; } /** @dataProvider dataUpdateImages */ - public function testUpdateLogoNormalLogoUpload($folderExists) { + public function testUpdateLogoNormalLogoUpload($mimeType, $folderExists=true) { $tmpLogo = \OC::$server->getTempManager()->getTemporaryFolder() . '/logo.svg'; $destination = \OC::$server->getTempManager()->getTemporaryFolder(); @@ -280,8 +337,9 @@ class ThemingControllerTest extends TestCase { ->with('uploadlogo') ->willReturn([ 'tmp_name' => $tmpLogo, - 'type' => 'text/svg', + 'type' => $mimeType, 'name' => 'logo.svg', + 'error' => 0, ]); $this->request ->expects($this->at(2)) @@ -289,10 +347,11 @@ class ThemingControllerTest extends TestCase { ->with('upload-login-background') ->willReturn(null); $this->l10n - ->expects($this->once()) + ->expects($this->any()) ->method('t') - ->with('Saved') - ->willReturn('Saved'); + ->will($this->returnCallback(function($str) { + return $str; + })); $file = $this->createMock(ISimpleFile::class); @@ -357,12 +416,14 @@ class ThemingControllerTest extends TestCase { 'tmp_name' => $tmpLogo, 'type' => 'text/svg', 'name' => 'logo.svg', + 'error' => 0, ]); $this->l10n - ->expects($this->once()) + ->expects($this->any()) ->method('t') - ->with('Saved') - ->willReturn('Saved'); + ->will($this->returnCallback(function($str) { + return $str; + })); $file = $this->createMock(ISimpleFile::class); $folder = $this->createMock(ISimpleFolder::class); @@ -425,12 +486,14 @@ class ThemingControllerTest extends TestCase { 'tmp_name' => $tmpLogo, 'type' => 'text/svg', 'name' => 'logo.svg', + 'error' => 0, ]); $this->l10n - ->expects($this->once()) + ->expects($this->any()) ->method('t') - ->with('Unsupported image type') - ->willReturn('Unsupported image type'); + ->will($this->returnCallback(function($str) { + return $str; + })); $folder = $this->createMock(ISimpleFolder::class); $this->appData @@ -452,6 +515,106 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->updateLogo()); } + public function dataPhpUploadErrors() { + return [ + [UPLOAD_ERR_INI_SIZE, 'The uploaded file exceeds the upload_max_filesize directive in php.ini'], + [UPLOAD_ERR_FORM_SIZE, 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'], + [UPLOAD_ERR_PARTIAL, 'The uploaded file was only partially uploaded'], + [UPLOAD_ERR_NO_FILE, 'No file was uploaded'], + [UPLOAD_ERR_NO_TMP_DIR, 'Missing a temporary folder'], + [UPLOAD_ERR_CANT_WRITE, 'Failed to write file to disk.'], + [UPLOAD_ERR_EXTENSION, 'A PHP extension stopped the file upload.'], + ]; + } + + /** + * @dataProvider dataPhpUploadErrors + */ + public function testUpdateLogoLoginScreenUploadWithInvalidImageUpload($error, $expectedErrorMessage) { + $this->request + ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) + ->method('getUploadedFile') + ->with('uploadlogo') + ->willReturn(null); + $this->request + ->expects($this->at(2)) + ->method('getUploadedFile') + ->with('upload-login-background') + ->willReturn([ + 'tmp_name' => '', + 'type' => 'text/svg', + 'name' => 'logo.svg', + 'error' => $error, + ]); + $this->l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function($str) { + return $str; + })); + + $expected = new DataResponse( + [ + 'data' => + [ + 'message' => $expectedErrorMessage, + ], + 'status' => 'failure' + ], + Http::STATUS_UNPROCESSABLE_ENTITY + ); + $this->assertEquals($expected, $this->themingController->updateLogo()); + } + + /** + * @dataProvider dataPhpUploadErrors + */ + public function testUpdateLogoUploadWithInvalidImageUpload($error, $expectedErrorMessage) { + $this->request + ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) + ->method('getUploadedFile') + ->with('uploadlogo') + ->willReturn([ + 'tmp_name' => '', + 'type' => 'text/svg', + 'name' => 'logo.svg', + 'error' => $error, + ]); + $this->request + ->expects($this->at(2)) + ->method('getUploadedFile') + ->with('upload-login-background') + ->willReturn(null); + $this->l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function($str) { + return $str; + })); + + $expected = new DataResponse( + [ + 'data' => + [ + 'message' => $expectedErrorMessage + ], + 'status' => 'failure' + ], + Http::STATUS_UNPROCESSABLE_ENTITY + ); + $this->assertEquals($expected, $this->themingController->updateLogo()); + } + public function testUndo() { $this->l10n ->expects($this->once()) diff --git a/apps/twofactor_backupcodes/appinfo/info.xml b/apps/twofactor_backupcodes/appinfo/info.xml index 0002d0dcf0c..18728a7047a 100644 --- a/apps/twofactor_backupcodes/appinfo/info.xml +++ b/apps/twofactor_backupcodes/appinfo/info.xml @@ -5,7 +5,7 @@ <description>A two-factor auth backup codes provider</description> <licence>agpl</licence> <author>Christoph Wurst</author> - <version>1.2.2</version> + <version>1.2.3</version> <namespace>TwoFactorBackupCodes</namespace> <category>other</category> diff --git a/apps/twofactor_backupcodes/l10n/ca.js b/apps/twofactor_backupcodes/l10n/ca.js new file mode 100644 index 00000000000..6af7f7a8355 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/ca.js @@ -0,0 +1,18 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "Generar codis de la copia de seguretat", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "S'han generat codis de còpia de seguretat. S'han usat {{used}} de {{total}} codis.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Aquests són els codis de seguretat. Deseu-los i / o imprimiu-los ja que no podreu tornar a llegir els codis més tard", + "Save backup codes" : "Guardar els codis de la copia de seguretat", + "Print backup codes" : "Imprimeix codis de còpia de seguretat", + "Regenerate backup codes" : "Regenerar els codis de la copia de seguretat", + "If you regenerate backup codes, you automatically invalidate old codes." : "Si regeneres codis de còpia de seguretat, invalida automàticament els codis antics.", + "An error occurred while generating your backup codes" : "S'ha produït un error en generar els codis de seguretat", + "Nextcloud backup codes" : "Codis de la copia de seguretat de Nextcloud", + "You created two-factor backup codes for your account" : "Heu creat codis de còpia de seguretat de dos factors per al vostre compte", + "Backup code" : "Codi de copia de seguretat", + "Use backup code" : "Utilitza un codi de copia de seguretat", + "Second-factor backup codes" : "Codis secundaris de còpia de seguretat" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/ca.json b/apps/twofactor_backupcodes/l10n/ca.json new file mode 100644 index 00000000000..d1a5645a2ec --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/ca.json @@ -0,0 +1,16 @@ +{ "translations": { + "Generate backup codes" : "Generar codis de la copia de seguretat", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "S'han generat codis de còpia de seguretat. S'han usat {{used}} de {{total}} codis.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Aquests són els codis de seguretat. Deseu-los i / o imprimiu-los ja que no podreu tornar a llegir els codis més tard", + "Save backup codes" : "Guardar els codis de la copia de seguretat", + "Print backup codes" : "Imprimeix codis de còpia de seguretat", + "Regenerate backup codes" : "Regenerar els codis de la copia de seguretat", + "If you regenerate backup codes, you automatically invalidate old codes." : "Si regeneres codis de còpia de seguretat, invalida automàticament els codis antics.", + "An error occurred while generating your backup codes" : "S'ha produït un error en generar els codis de seguretat", + "Nextcloud backup codes" : "Codis de la copia de seguretat de Nextcloud", + "You created two-factor backup codes for your account" : "Heu creat codis de còpia de seguretat de dos factors per al vostre compte", + "Backup code" : "Codi de copia de seguretat", + "Use backup code" : "Utilitza un codi de copia de seguretat", + "Second-factor backup codes" : "Codis secundaris de còpia de seguretat" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/sr.js b/apps/twofactor_backupcodes/l10n/sr.js new file mode 100644 index 00000000000..41a9ff302c6 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/sr.js @@ -0,0 +1,18 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "Генериши резервне кодове", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Резервни кодови су изгенерисани. {{used}} од {{total}} кодова је искоришћено.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Ово су Ваши резервни кодови. Сачувајте их и/или их одштампајте пошто више нећете моћи да их прочитате.", + "Save backup codes" : "Сачувај резервне кодове", + "Print backup codes" : "Одштампај резервне кодове", + "Regenerate backup codes" : "Регенериши резервне кодове", + "If you regenerate backup codes, you automatically invalidate old codes." : "Ако се резервни кодови регенериши, стари аутоматски престају да важе.", + "An error occurred while generating your backup codes" : "Десила се грешка приликом генерисања резервних кодова", + "Nextcloud backup codes" : "Некстклауд резервни кодови", + "You created two-factor backup codes for your account" : "Направили сте двофакторске резервне кодове за Ваш налог", + "Backup code" : "Резервни код", + "Use backup code" : "Искористи резервни код", + "Second-factor backup codes" : "Двофакторски резервни кодови" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/twofactor_backupcodes/l10n/sr.json b/apps/twofactor_backupcodes/l10n/sr.json new file mode 100644 index 00000000000..8b39a42c237 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/sr.json @@ -0,0 +1,16 @@ +{ "translations": { + "Generate backup codes" : "Генериши резервне кодове", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Резервни кодови су изгенерисани. {{used}} од {{total}} кодова је искоришћено.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Ово су Ваши резервни кодови. Сачувајте их и/или их одштампајте пошто више нећете моћи да их прочитате.", + "Save backup codes" : "Сачувај резервне кодове", + "Print backup codes" : "Одштампај резервне кодове", + "Regenerate backup codes" : "Регенериши резервне кодове", + "If you regenerate backup codes, you automatically invalidate old codes." : "Ако се резервни кодови регенериши, стари аутоматски престају да важе.", + "An error occurred while generating your backup codes" : "Десила се грешка приликом генерисања резервних кодова", + "Nextcloud backup codes" : "Некстклауд резервни кодови", + "You created two-factor backup codes for your account" : "Направили сте двофакторске резервне кодове за Ваш налог", + "Backup code" : "Резервни код", + "Use backup code" : "Искористи резервни код", + "Second-factor backup codes" : "Двофакторски резервни кодови" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php new file mode 100644 index 00000000000..8072ebd6810 --- /dev/null +++ b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php @@ -0,0 +1,25 @@ +<?php +namespace OCA\TwoFactorBackupCodes\Migration; + +use Doctrine\DBAL\Schema\Schema; +use OCP\Migration\BigIntMigration; +use OCP\Migration\SimpleMigrationStep; +use OCP\Migration\IOutput; + +/** + * Auto-generated migration step: Please modify to your needs! + */ +class Version1002Date20170926101419 extends BigIntMigration { + + /** + * @return array Returns an array with the following structure + * ['table1' => ['column1', 'column2'], ...] + * @since 13.0.0 + */ + protected function getColumnsByTable() { + return [ + 'twofactor_backupcodes' => ['id'], + ]; + } + +} diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js index 6fe99ddab74..005ee987671 100644 --- a/apps/updatenotification/l10n/ca.js +++ b/apps/updatenotification/l10n/ca.js @@ -19,6 +19,7 @@ OC.L10N.register( "A non-default update server is in use to be checked for updates:" : "S'utilitza un servidor d'actualització no predeterminat per comprovar si hi ha actualitzacions:", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Tingueu en compte que després d'un nou llançament, pot trigar un temps abans que aparegui aquí. Desplegem noves versions distribuïdes amb el temps als nostres usuaris i, de vegades, ometen una versió quan es detecten problemes.", "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json index 5f4bacdf14a..fcd9d277d23 100644 --- a/apps/updatenotification/l10n/ca.json +++ b/apps/updatenotification/l10n/ca.json @@ -17,6 +17,7 @@ "A non-default update server is in use to be checked for updates:" : "S'utilitza un servidor d'actualització no predeterminat per comprovar si hi ha actualitzacions:", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Tingueu en compte que després d'un nou llançament, pot trigar un temps abans que aparegui aquí. Desplegem noves versions distribuïdes amb el temps als nostres usuaris i, de vegades, ometen una versió quan es detecten problemes.", "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js index 6e04a1d9b0b..38e49baf7df 100644 --- a/apps/updatenotification/l10n/cs.js +++ b/apps/updatenotification/l10n/cs.js @@ -13,8 +13,10 @@ OC.L10N.register( "A new version is available: %s" : "Je dostupná nová verze: %s", "Open updater" : "Otevřít aktualizátor", "Download now" : "Stáhnout nyní", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku.", "Your version is up to date." : "Používáte nejnovější verzi.", "Checked on %s" : "Zkontrolováno %s", + "A non-default update server is in use to be checked for updates:" : "Pro kontrolu aktualizací se používá jiný než výchozí server:", "Update channel:" : "Aktualizovat kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Všimněte si, že po vydání nové verze může chvíli trvat, než se zde objeví. Distribuujeme nové verze průběžně rozložené v čase mezi naše uživatele a pokud jsou nalezeny problémy někdy danou verzi přeskočíme.", diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json index f1e97a5992e..eb1fc5f143f 100644 --- a/apps/updatenotification/l10n/cs.json +++ b/apps/updatenotification/l10n/cs.json @@ -11,8 +11,10 @@ "A new version is available: %s" : "Je dostupná nová verze: %s", "Open updater" : "Otevřít aktualizátor", "Download now" : "Stáhnout nyní", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku.", "Your version is up to date." : "Používáte nejnovější verzi.", "Checked on %s" : "Zkontrolováno %s", + "A non-default update server is in use to be checked for updates:" : "Pro kontrolu aktualizací se používá jiný než výchozí server:", "Update channel:" : "Aktualizovat kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Všimněte si, že po vydání nové verze může chvíli trvat, než se zde objeví. Distribuujeme nové verze průběžně rozložené v čase mezi naše uživatele a pokud jsou nalezeny problémy někdy danou verzi přeskočíme.", diff --git a/apps/updatenotification/l10n/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js index d53d4b00c53..dd29887f985 100644 --- a/apps/updatenotification/l10n/lt_LT.js +++ b/apps/updatenotification/l10n/lt_LT.js @@ -16,6 +16,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo.", "Your version is up to date." : "Jūsų versija yra naujausia.", "Checked on %s" : "Tikrinta %s", + "A non-default update server is in use to be checked for updates:" : "Atnaujinimų aptikimui yra naudojamas ne nenumatytasis serveris: ", "Update channel:" : "Atnaujinimo kanalas:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Turėkite omenyje, kad po naujos versijos išleidimo, gali praeiti šiek tiek laiko, kol ji čia taps matoma. Mes išleidžiame naujas versijas paskirstytas pagal laiką savo naudotojams ir, kartais, pastebėjus klaidas, praleidžiame versiją.", diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json index 675dfeba3e8..e652fe57b91 100644 --- a/apps/updatenotification/l10n/lt_LT.json +++ b/apps/updatenotification/l10n/lt_LT.json @@ -14,6 +14,7 @@ "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo.", "Your version is up to date." : "Jūsų versija yra naujausia.", "Checked on %s" : "Tikrinta %s", + "A non-default update server is in use to be checked for updates:" : "Atnaujinimų aptikimui yra naudojamas ne nenumatytasis serveris: ", "Update channel:" : "Atnaujinimo kanalas:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Turėkite omenyje, kad po naujos versijos išleidimo, gali praeiti šiek tiek laiko, kol ji čia taps matoma. Mes išleidžiame naujas versijas paskirstytas pagal laiką savo naudotojams ir, kartais, pastebėjus klaidas, praleidžiame versiją.", diff --git a/apps/updatenotification/l10n/sr.js b/apps/updatenotification/l10n/sr.js index de9cb470268..e47b86840bb 100644 --- a/apps/updatenotification/l10n/sr.js +++ b/apps/updatenotification/l10n/sr.js @@ -1,14 +1,28 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "Обавештења о ажурирању", + "Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање", "{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.", - "Updated channel" : "Канал ажуриран", - "Updater" : "Ажурирање", + "Channel updated" : "Канал ажуриран", + "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", + "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", + "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", + "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", + "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", "A new version is available: %s" : "Доступна је нова верзија: %s", - "Open updater" : "Отвори ажурирање", + "Open updater" : "Отвори програм за ажурирање", + "Download now" : "Скини сада", + "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну.", "Your version is up to date." : "Ваша верзија је ажурна.", "Checked on %s" : "Проверено %s", + "A non-default update server is in use to be checked for updates:" : "Неподразумевани сервер за ажурирање је коришћен да провери нове верзије:", "Update channel:" : "Канал за ажурирање:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "После издавања нове верзије, може да прође неко време пре него што се верзија појави овде. Ми избацујемо нове верзије постепено и можемо некад да прескочимо верзију ако наиђемо на проблеме.", + "Notify members of the following groups about available updates:" : "Обавести чланове следећих група о доступности нових верзија:", + "Only notification for app updates are available." : "Доступна су само обавештења о новим верзијама апликација.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама.", + "The selected update channel does not support updates of the server." : "Означени канал за ажурирање не подржава обавештења о новим верзијама." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/updatenotification/l10n/sr.json b/apps/updatenotification/l10n/sr.json index 90ec0169399..70d2143eec5 100644 --- a/apps/updatenotification/l10n/sr.json +++ b/apps/updatenotification/l10n/sr.json @@ -1,12 +1,26 @@ { "translations": { + "Update notifications" : "Обавештења о ажурирању", + "Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање", "{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.", - "Updated channel" : "Канал ажуриран", - "Updater" : "Ажурирање", + "Channel updated" : "Канал ажуриран", + "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", + "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", + "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", + "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", + "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", "A new version is available: %s" : "Доступна је нова верзија: %s", - "Open updater" : "Отвори ажурирање", + "Open updater" : "Отвори програм за ажурирање", + "Download now" : "Скини сада", + "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну.", "Your version is up to date." : "Ваша верзија је ажурна.", "Checked on %s" : "Проверено %s", + "A non-default update server is in use to be checked for updates:" : "Неподразумевани сервер за ажурирање је коришћен да провери нове верзије:", "Update channel:" : "Канал за ажурирање:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "После издавања нове верзије, може да прође неко време пре него што се верзија појави овде. Ми избацујемо нове верзије постепено и можемо некад да прескочимо верзију ако наиђемо на проблеме.", + "Notify members of the following groups about available updates:" : "Обавести чланове следећих група о доступности нових верзија:", + "Only notification for app updates are available." : "Доступна су само обавештења о новим верзијама апликација.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама.", + "The selected update channel does not support updates of the server." : "Означени канал за ажурирање не подржава обавештења о новим верзијама." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index df08a2acd70..5239e52234a 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -44,9 +44,10 @@ if(count($configPrefixes) > 0) { 'name' => $l->t('LDAP user and group backend'), ]; }); + $userSession = \OC::$server->getUserSession(); $userBackend = new OCA\User_LDAP\User_Proxy( - $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager + $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager, $userSession ); $groupBackend = new OCA\User_LDAP\Group_Proxy($configPrefixes, $ldapWrapper); // register user backend diff --git a/apps/user_ldap/appinfo/register_command.php b/apps/user_ldap/appinfo/register_command.php index 3ae8bdbfc13..bd706e61f22 100644 --- a/apps/user_ldap/appinfo/register_command.php +++ b/apps/user_ldap/appinfo/register_command.php @@ -36,7 +36,8 @@ $uBackend = new User_Proxy( $helper->getServerConfigurationPrefixes(true), new LDAP(), $ocConfig, - \OC::$server->getNotificationManager() + \OC::$server->getNotificationManager(), + \OC::$server->getUserSession() ); $deletedUsersIndex = new DeletedUsersIndex( $ocConfig, $dbConnection, $userMapping diff --git a/apps/user_ldap/l10n/ca.js b/apps/user_ldap/l10n/ca.js index 599128b8901..949f965108b 100644 --- a/apps/user_ldap/l10n/ca.js +++ b/apps/user_ldap/l10n/ca.js @@ -3,40 +3,85 @@ OC.L10N.register( { "Failed to clear the mappings." : "Ha fallat en eliminar els mapatges", "Failed to delete the server configuration" : "Ha fallat en eliminar la configuració del servidor", - "The configuration is valid and the connection could be established!" : "La configuració és vàlida i s'ha pogut establir la comunicació!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuració és vàlida, però ha fallat el Bind. Comproveu les credencials i l'arranjament del servidor.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuració no és vàlida. Per més detalls mireu al registre del sistema.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.", + "Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu la configuració del servidor i les credencials.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.", "No action specified" : "No heu especificat cap acció", "No configuration specified" : "No heu especificat cap configuració", "No data specified" : "No heu especificat cap dada", " Could not set configuration %s" : "No s'ha pogut establir la configuració %s", + "Action does not exist" : "L'acció no existeix", + "LDAP user and group backend" : "Usuari LDAP i grup de suport", + "Renewing …" : "Renovant ...", + "Very weak password" : "Contrasenya massa feble", + "Weak password" : "Contrasenya feble", + "So-so password" : "Contrasenya passable", + "Good password" : "Contrasenya bona", + "Strong password" : "Contrasenya forta", + "The Base DN appears to be wrong" : "El DN de base sembla estar equivocat", + "Testing configuration…" : "Probant configuració...", "Configuration incorrect" : "Configuració incorrecte", "Configuration incomplete" : "Configuració incompleta", "Configuration OK" : "Configuració correcte", "Select groups" : "Selecciona els grups", "Select object classes" : "Seleccioneu les classes dels objectes", + "Please check the credentials, they seem to be wrong." : "Comproveu les credencials, semblen estar equivocades.", + "Please specify the port, it could not be auto-detected." : "Especifiqueu el port, no s'ha pogut detectar automàticament.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, l'amfitrió i el port.", + "Could not detect Base DN, please enter it manually." : "No s'ha pogut detectar Base DN, introduïu-lo manualment.", "{nthServer}. Server" : "{nthServer}. Servidor", + "No object found in the given Base DN. Please revise." : "No s'ha trobat cap objecte a la Base DN donada. Reviseu.", + "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directoris disponibles.", + " entries available within the provided Base DN" : "les entrades disponibles a la Base DN proporcionada", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la configuració de connexió i les credencials.", "Do you really want to delete the current Server Configuration?" : "Voleu eliminar la configuració actual del servidor?", "Confirm Deletion" : "Confirma l'eliminació", + "Mappings cleared successfully!" : "S'han netejat les assignacions amb èxit!", + "Error while clearing the mappings." : "S'ha produït un error en eliminar les assignacions.", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "L'enllaç anònim no està permès. Proporcioneu un DN d'usuari i contrasenya.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Error d'operacions LDAP. L'enllaç anònim no es pot permetre.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "S'ha produït un error en desar. Assegureu-vos que la base de dades està en Operació. Torneu a carregar abans de continuar.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, activareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", + "Mode switch" : "Canvia el mode", "Select attributes" : "Seleccioneu els atributs", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuari no trobat. Comproveu els vostres atributs d'inici de sessió i el vostre nom d'usuari. Filtre eficaç (per copiar i enganxar per a la validació de la línia de comandaments):<br/>", + "User found and settings verified." : "S'ha trobat l'usuari i s'ha verificat la configuració.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Penseu a reduir la vostra cerca, ja que ha inclòs molts usuaris, només el primer dels quals podrà iniciar sessió.", + "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i la configuració.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtre de cerca no és vàlid, probablement a causa de problemes de sintaxi com el nombre impar de parèntesis oberts i tancats. Reviseu.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "S'ha produït un error de connexió a LDAP / AD, consulteu l'amfitrió, el port i les credencials.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador d'identitat. Es reemplaçarà amb el nom d'usuari quan consulteu LDAP / AD.", + "Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El quadre del grup s'ha desactivat, perquè el servidor LDAP / AD no admet memberOf.", + "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista:", + "Please login with the new password" : "Inicieu sessió amb la nova contrasenya", + "Your password will expire tomorrow." : "La contrasenya caducarà demà.", + "Your password will expire today." : "La contrasenya caducarà avui.", + "LDAP / AD integration" : "Integració LDAP / AD", "_%s group found_::_%s groups found_" : ["S'ha trobat %s grup","S'han trobat %s grups"], "_%s user found_::_%s users found_" : ["S'ha trobat %s usuari","S'han trobat %s usuaris"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", "Invalid Host" : "Ordinador central no vàlid", - "Server" : "Servidor", - "Users" : "Usuaris", - "Groups" : "Grups", "Test Configuration" : "Comprovació de la configuració", "Help" : "Ajuda", "Groups meeting these criteria are available in %s:" : "Els grups que compleixen aquests criteris estan disponibles a %s:", + "Only these object classes:" : "Només aquestes classes d'objectes:", + "Only from these groups:" : "Només d'aquests grups:", + "Search groups" : "Buscar grups", + "Available groups" : "Grups disponibles", + "Selected groups" : "Grups seleccionats", + "Edit LDAP Query" : "Editeu la consulta LDAP", + "LDAP Filter:" : "Filtre LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtre especifica quins grups LDAP haurien de tenir accés a la instància %s.", "Other Attributes:" : "Altres atributs:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Defineix el filtre a aplicar quan s'intenta iniciar la sessió. %%uid reemplaça el nom d'usuari en l'acció d'inici de sessió. Per exemple: \"uid=%%uid\"", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Delete the current configuration" : "Esborra la configuració actual", "Host" : "Equip remot", - "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://", "Port" : "Port", + "Detect Port" : "Detecta port", "User DN" : "DN Usuari", "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." : "La DN de l'usuari client amb la que s'haurà de fer, per exemple uid=agent,dc=exemple,dc=com. Per un accés anònim, deixeu la DN i la contrasenya en blanc.", "Password" : "Contrasenya", @@ -44,11 +89,15 @@ OC.L10N.register( "One Base DN per line" : "Una DN Base per línia", "You can specify Base DN for users and groups in the Advanced tab" : "Podeu especificar DN Base per usuaris i grups a la pestanya Avançat", "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s", + "Saving" : "Desant...", "Back" : "Enrera", "Continue" : "Continua", + "LDAP" : "LDAP", + "Server" : "Servidor", + "Users" : "Usuaris", + "Groups" : "Grups", "Expert" : "Expert", "Advanced" : "Avançat", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Avís:</b> Les aplicacions user_ldap i user_webdavauth són incompatibles. Podeu experimentar comportaments inesperats. Demaneu a l'administrador del sistema que en desactivi una.", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", "Connection Settings" : "Arranjaments de connexió", "Configuration Active" : "Configuració activa", @@ -82,12 +131,10 @@ OC.L10N.register( "Special Attributes" : "Atributs especials", "Quota Field" : "Camp de quota", "Quota Default" : "Quota per defecte", - "in bytes" : "en bytes", "Email Field" : "Camp de correu electrònic", "User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixeu-ho buit pel nom d'usuari (per defecte). Altrament, especifiqueu un atribut LDAP/AD.", "Internal Username" : "Nom d'usuari intern", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Per defecte el nom d'usuari intern es crearà a partir de l'atribut UUID. Això assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només estan permesos els caràcters: [ a-zA-Z0-9_.@- ]. Els altres caràcters es substitueixen pel seu corresponent ASCII o simplement s'ometen. En cas de col·lisió s'incrementa/decrementa en un. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta home d'usuari. És també un port de URLs remotes, per exemple tots els serveis *DAV. Amb aquest arranjament es pot variar el comportament per defecte. Per obtenir un comportament similar al d'abans de ownCloud 5, escriviu el nom d'usuari a mostrar en el camp següent. Deixei-lo en blanc si preferiu el comportament per defecte. Els canvis tindran efecte només en els nous usuaris LDAP mapats (afegits).", "Internal Username Attribute:" : "Atribut nom d'usuari intern:", "Override UUID detection" : "Sobrescriu la detecció UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups de forma indubtable. També el nom d'usuari intern es crearà en base a la UUIS, si no heu especificat res diferent a dalt. Podeu sobreescriure l'arranjament i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", @@ -95,6 +142,9 @@ OC.L10N.register( "UUID Attribute for Groups:" : "Atribut UUID per Grups:", "Username-LDAP User Mapping" : "Mapatge d'usuari Nom d'usuari-LDAP", "Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP", - "Clear Groupname-LDAP Group Mapping" : "Elimina el mapatge de grup Nom de grup-LDAP" + "Clear Groupname-LDAP Group Mapping" : "Elimina el mapatge de grup Nom de grup-LDAP", + "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Avís:</b> Les aplicacions user_ldap i user_webdavauth són incompatibles. Podeu experimentar comportaments inesperats. Demaneu a l'administrador del sistema que en desactivi una.", + "in bytes" : "en bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/ca.json b/apps/user_ldap/l10n/ca.json index 3ea4e5b4ac5..0c36f9aa659 100644 --- a/apps/user_ldap/l10n/ca.json +++ b/apps/user_ldap/l10n/ca.json @@ -1,40 +1,85 @@ { "translations": { "Failed to clear the mappings." : "Ha fallat en eliminar els mapatges", "Failed to delete the server configuration" : "Ha fallat en eliminar la configuració del servidor", - "The configuration is valid and the connection could be established!" : "La configuració és vàlida i s'ha pogut establir la comunicació!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuració és vàlida, però ha fallat el Bind. Comproveu les credencials i l'arranjament del servidor.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuració no és vàlida. Per més detalls mireu al registre del sistema.", + "Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.", + "Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu la configuració del servidor i les credencials.", + "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.", "No action specified" : "No heu especificat cap acció", "No configuration specified" : "No heu especificat cap configuració", "No data specified" : "No heu especificat cap dada", " Could not set configuration %s" : "No s'ha pogut establir la configuració %s", + "Action does not exist" : "L'acció no existeix", + "LDAP user and group backend" : "Usuari LDAP i grup de suport", + "Renewing …" : "Renovant ...", + "Very weak password" : "Contrasenya massa feble", + "Weak password" : "Contrasenya feble", + "So-so password" : "Contrasenya passable", + "Good password" : "Contrasenya bona", + "Strong password" : "Contrasenya forta", + "The Base DN appears to be wrong" : "El DN de base sembla estar equivocat", + "Testing configuration…" : "Probant configuració...", "Configuration incorrect" : "Configuració incorrecte", "Configuration incomplete" : "Configuració incompleta", "Configuration OK" : "Configuració correcte", "Select groups" : "Selecciona els grups", "Select object classes" : "Seleccioneu les classes dels objectes", + "Please check the credentials, they seem to be wrong." : "Comproveu les credencials, semblen estar equivocades.", + "Please specify the port, it could not be auto-detected." : "Especifiqueu el port, no s'ha pogut detectar automàticament.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no es pot detectar automàticament, reviseu les credencials, l'amfitrió i el port.", + "Could not detect Base DN, please enter it manually." : "No s'ha pogut detectar Base DN, introduïu-lo manualment.", "{nthServer}. Server" : "{nthServer}. Servidor", + "No object found in the given Base DN. Please revise." : "No s'ha trobat cap objecte a la Base DN donada. Reviseu.", + "More than 1,000 directory entries available." : "Hi ha més de 1.000 entrades de directoris disponibles.", + " entries available within the provided Base DN" : "les entrades disponibles a la Base DN proporcionada", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Hi ha hagut un error. Comproveu la base DN, així com la configuració de connexió i les credencials.", "Do you really want to delete the current Server Configuration?" : "Voleu eliminar la configuració actual del servidor?", "Confirm Deletion" : "Confirma l'eliminació", + "Mappings cleared successfully!" : "S'han netejat les assignacions amb èxit!", + "Error while clearing the mappings." : "S'ha produït un error en eliminar les assignacions.", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "L'enllaç anònim no està permès. Proporcioneu un DN d'usuari i contrasenya.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Error d'operacions LDAP. L'enllaç anònim no es pot permetre.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "S'ha produït un error en desar. Assegureu-vos que la base de dades està en Operació. Torneu a carregar abans de continuar.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Si canvieu el mode, activareu les consultes LDAP automàtiques. Depenent de la vostra mida LDAP, poden trigar una estona. Voleu canviar el mode?", + "Mode switch" : "Canvia el mode", "Select attributes" : "Seleccioneu els atributs", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Usuari no trobat. Comproveu els vostres atributs d'inici de sessió i el vostre nom d'usuari. Filtre eficaç (per copiar i enganxar per a la validació de la línia de comandaments):<br/>", + "User found and settings verified." : "S'ha trobat l'usuari i s'ha verificat la configuració.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Penseu a reduir la vostra cerca, ja que ha inclòs molts usuaris, només el primer dels quals podrà iniciar sessió.", + "An unspecified error occurred. Please check log and settings." : "S'ha produït un error no especificat. Verifiqueu el registre i la configuració.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtre de cerca no és vàlid, probablement a causa de problemes de sintaxi com el nombre impar de parèntesis oberts i tancats. Reviseu.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "S'ha produït un error de connexió a LDAP / AD, consulteu l'amfitrió, el port i les credencials.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador d'identitat. Es reemplaçarà amb el nom d'usuari quan consulteu LDAP / AD.", + "Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El quadre del grup s'ha desactivat, perquè el servidor LDAP / AD no admet memberOf.", + "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista:", + "Please login with the new password" : "Inicieu sessió amb la nova contrasenya", + "Your password will expire tomorrow." : "La contrasenya caducarà demà.", + "Your password will expire today." : "La contrasenya caducarà avui.", + "LDAP / AD integration" : "Integració LDAP / AD", "_%s group found_::_%s groups found_" : ["S'ha trobat %s grup","S'han trobat %s grups"], "_%s user found_::_%s users found_" : ["S'ha trobat %s usuari","S'han trobat %s usuaris"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", "Invalid Host" : "Ordinador central no vàlid", - "Server" : "Servidor", - "Users" : "Usuaris", - "Groups" : "Grups", "Test Configuration" : "Comprovació de la configuració", "Help" : "Ajuda", "Groups meeting these criteria are available in %s:" : "Els grups que compleixen aquests criteris estan disponibles a %s:", + "Only these object classes:" : "Només aquestes classes d'objectes:", + "Only from these groups:" : "Només d'aquests grups:", + "Search groups" : "Buscar grups", + "Available groups" : "Grups disponibles", + "Selected groups" : "Grups seleccionats", + "Edit LDAP Query" : "Editeu la consulta LDAP", + "LDAP Filter:" : "Filtre LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtre especifica quins grups LDAP haurien de tenir accés a la instància %s.", "Other Attributes:" : "Altres atributs:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Defineix el filtre a aplicar quan s'intenta iniciar la sessió. %%uid reemplaça el nom d'usuari en l'acció d'inici de sessió. Per exemple: \"uid=%%uid\"", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Delete the current configuration" : "Esborra la configuració actual", "Host" : "Equip remot", - "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://", "Port" : "Port", + "Detect Port" : "Detecta port", "User DN" : "DN Usuari", "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." : "La DN de l'usuari client amb la que s'haurà de fer, per exemple uid=agent,dc=exemple,dc=com. Per un accés anònim, deixeu la DN i la contrasenya en blanc.", "Password" : "Contrasenya", @@ -42,11 +87,15 @@ "One Base DN per line" : "Una DN Base per línia", "You can specify Base DN for users and groups in the Advanced tab" : "Podeu especificar DN Base per usuaris i grups a la pestanya Avançat", "The filter specifies which LDAP users shall have access to the %s instance." : "El filtre especifica quins usuaris LDAP haurien de tenir accés a la instància %s", + "Saving" : "Desant...", "Back" : "Enrera", "Continue" : "Continua", + "LDAP" : "LDAP", + "Server" : "Servidor", + "Users" : "Usuaris", + "Groups" : "Grups", "Expert" : "Expert", "Advanced" : "Avançat", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Avís:</b> Les aplicacions user_ldap i user_webdavauth són incompatibles. Podeu experimentar comportaments inesperats. Demaneu a l'administrador del sistema que en desactivi una.", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.", "Connection Settings" : "Arranjaments de connexió", "Configuration Active" : "Configuració activa", @@ -80,12 +129,10 @@ "Special Attributes" : "Atributs especials", "Quota Field" : "Camp de quota", "Quota Default" : "Quota per defecte", - "in bytes" : "en bytes", "Email Field" : "Camp de correu electrònic", "User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixeu-ho buit pel nom d'usuari (per defecte). Altrament, especifiqueu un atribut LDAP/AD.", "Internal Username" : "Nom d'usuari intern", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Per defecte el nom d'usuari intern es crearà a partir de l'atribut UUID. Això assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només estan permesos els caràcters: [ a-zA-Z0-9_.@- ]. Els altres caràcters es substitueixen pel seu corresponent ASCII o simplement s'ometen. En cas de col·lisió s'incrementa/decrementa en un. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta home d'usuari. És també un port de URLs remotes, per exemple tots els serveis *DAV. Amb aquest arranjament es pot variar el comportament per defecte. Per obtenir un comportament similar al d'abans de ownCloud 5, escriviu el nom d'usuari a mostrar en el camp següent. Deixei-lo en blanc si preferiu el comportament per defecte. Els canvis tindran efecte només en els nous usuaris LDAP mapats (afegits).", "Internal Username Attribute:" : "Atribut nom d'usuari intern:", "Override UUID detection" : "Sobrescriu la detecció UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Per defecte, owncloud autodetecta l'atribut UUID. L'atribut UUID s'utilitza per identificar usuaris i grups de forma indubtable. També el nom d'usuari intern es crearà en base a la UUIS, si no heu especificat res diferent a dalt. Podeu sobreescriure l'arranjament i passar l'atribut que desitgeu. Heu d'assegurar-vos que l'atribut que escolliu pot ser recollit tant pels usuaris com pels grups i que és únic. Deixeu-ho en blanc si preferiu el comportament per defecte. els canvis s'aplicaran als usuaris i grups LDAP mapats de nou (afegits).", @@ -93,6 +140,9 @@ "UUID Attribute for Groups:" : "Atribut UUID per Grups:", "Username-LDAP User Mapping" : "Mapatge d'usuari Nom d'usuari-LDAP", "Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP", - "Clear Groupname-LDAP Group Mapping" : "Elimina el mapatge de grup Nom de grup-LDAP" + "Clear Groupname-LDAP Group Mapping" : "Elimina el mapatge de grup Nom de grup-LDAP", + "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Avís:</b> Les aplicacions user_ldap i user_webdavauth són incompatibles. Podeu experimentar comportaments inesperats. Demaneu a l'administrador del sistema que en desactivi una.", + "in bytes" : "en bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index 4c138c58f99..5cbf12105cd 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -79,8 +79,11 @@ OC.L10N.register( "Verify settings and count the groups" : "Ověřit nastavení a spočítat skupiny", "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:", "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:", + "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Dovoluje přihlášení pomocí LDAP / AD uživatelského jména, což je \"uid\" nebo \"sAMAccountName\", což bude detekováno.", "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Povoluje přihlášení pomocí e-mailového atributu. Je povolen \"mail\" a \"mailPrimaryAddress\" allowed.", "Other Attributes:" : "Další atributy:", + "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definuje filtr použitý při pokusu o přihlášení. %%uid je nahrazeno uživatelským jménem z přihlašovací akce. Příklad: \"uid=%%uid\"", "Test Loginname" : "Testovací přihlašovací jméno", "Verify settings" : "Ověřit nastavení", "1. Server" : "1. Server", diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index a935cd25652..8f6ec1deb96 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -77,8 +77,11 @@ "Verify settings and count the groups" : "Ověřit nastavení a spočítat skupiny", "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:", "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:", + "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Dovoluje přihlášení pomocí LDAP / AD uživatelského jména, což je \"uid\" nebo \"sAMAccountName\", což bude detekováno.", "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Povoluje přihlášení pomocí e-mailového atributu. Je povolen \"mail\" a \"mailPrimaryAddress\" allowed.", "Other Attributes:" : "Další atributy:", + "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definuje filtr použitý při pokusu o přihlášení. %%uid je nahrazeno uživatelským jménem z přihlašovací akce. Příklad: \"uid=%%uid\"", "Test Loginname" : "Testovací přihlašovací jméno", "Verify settings" : "Ověřit nastavení", "1. Server" : "1. Server", diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js index fe03f05882f..66bc78a505d 100644 --- a/apps/user_ldap/l10n/da.js +++ b/apps/user_ldap/l10n/da.js @@ -166,6 +166,7 @@ OC.L10N.register( "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillader at LDAP-brugere kan ændre deres adgangskode og tillader Superadministratorer og Gruppeadministratorer, at ændre adgangskoden for deres LDAP-brugere. Dette virker kun, hvis rettigheder for adgangskontrol er konfigureret tilsvarende på LDAP-serveren. Da adgangskoder sendes som klartekst til LDAP-serveren, så skal der anvendes en transportkryptering, samtidig som der bør være konfigureret således, at der sker en hashing af adgangskoder på LDAP-serveren.", "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som klartekst til LDAP)", "Default password policy DN" : "Standard password politik DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard password politik vil blive brugt til at håndtere udløb af password. Virker kun når LDAP password ændringer pr. bruger er aktiveret og understøtter kun OpenLDAP. Efterlad tom for at deaktivere håndtering password udløb.", "Special Attributes" : "Specielle attributter", "Quota Field" : "Kvote Felt", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugerens standardkvota. Alternativt angives en LDAP/AD-attribut.", diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json index 652bd67f1d4..9ede701452a 100644 --- a/apps/user_ldap/l10n/da.json +++ b/apps/user_ldap/l10n/da.json @@ -164,6 +164,7 @@ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillader at LDAP-brugere kan ændre deres adgangskode og tillader Superadministratorer og Gruppeadministratorer, at ændre adgangskoden for deres LDAP-brugere. Dette virker kun, hvis rettigheder for adgangskontrol er konfigureret tilsvarende på LDAP-serveren. Da adgangskoder sendes som klartekst til LDAP-serveren, så skal der anvendes en transportkryptering, samtidig som der bør være konfigureret således, at der sker en hashing af adgangskoder på LDAP-serveren.", "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som klartekst til LDAP)", "Default password policy DN" : "Standard password politik DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard password politik vil blive brugt til at håndtere udløb af password. Virker kun når LDAP password ændringer pr. bruger er aktiveret og understøtter kun OpenLDAP. Efterlad tom for at deaktivere håndtering password udløb.", "Special Attributes" : "Specielle attributter", "Quota Field" : "Kvote Felt", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugerens standardkvota. Alternativt angives en LDAP/AD-attribut.", diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 414a1b71ddc..c430719c4d9 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -31,7 +31,7 @@ OC.L10N.register( "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.", "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.", "{nthServer}. Server" : "{nthServer}. - Server", - "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.", + "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.", " entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte die Base DN sowie die Verbindungs- und Anmeldeeinstellungen überprüfen.", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index ac13427a0ba..79a28f38064 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -29,7 +29,7 @@ "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.", "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.", "{nthServer}. Server" : "{nthServer}. - Server", - "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.", + "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.", " entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte die Base DN sowie die Verbindungs- und Anmeldeeinstellungen überprüfen.", diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index 652badfea86..cfcf62cf414 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -31,7 +31,7 @@ OC.L10N.register( "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfen Sie Anmeldeinformationen, Host und Port.", "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte geben Sie sie manuell ein.", "{nthServer}. Server" : "{nthServer}. - Server", - "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base DN gefunden, bitte überprüfen.", + "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Es sind mehr als 1.000 Verzeichniseinträge verfügbar.", " entries available within the provided Base DN" : "Einträge in der angegebenen Base DN verfügbar", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfen Sie die Base DN wie auch die Verbindungseinstellungen und Anmeldeinformationen.", diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 1e0fbb4cccf..6e7fccb7421 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -29,7 +29,7 @@ "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfen Sie Anmeldeinformationen, Host und Port.", "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte geben Sie sie manuell ein.", "{nthServer}. Server" : "{nthServer}. - Server", - "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base DN gefunden, bitte überprüfen.", + "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Es sind mehr als 1.000 Verzeichniseinträge verfügbar.", " entries available within the provided Base DN" : "Einträge in der angegebenen Base DN verfügbar", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfen Sie die Base DN wie auch die Verbindungseinstellungen und Anmeldeinformationen.", diff --git a/apps/user_ldap/l10n/lt_LT.js b/apps/user_ldap/l10n/lt_LT.js index c8ef3aaea84..fa9bfa8b255 100644 --- a/apps/user_ldap/l10n/lt_LT.js +++ b/apps/user_ldap/l10n/lt_LT.js @@ -150,6 +150,7 @@ OC.L10N.register( "Group Search Attributes" : "Grupės paieškos atributai", "Group-Member association" : "Grupės-Nario sąsaja", "Dynamic Group Member URL" : "Dinaminio grupės nario URL", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP atributas, kuris grupės objektuose turi LDAP ieškos URL, nustatantį kokie objektai priklauso grupei. (Tuščias parametras išjungia dinaminės grupės narystės funkciją.)", "Nested Groups" : "Įdėtinės grupės", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kai įjungta, yra palaikomos grupes turinčios grupės.(Veikia tik, jei grupės nario atributas turi DN.)", "Enable LDAP password changes per user" : "Įjungti LDAP slaptažodžio keitimus kiekvienam naudotojui.", @@ -164,7 +165,9 @@ OC.L10N.register( "Email Field" : "El. pašto laukas", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Naudotojų el. paštą nustatykite pagal jų LDAP atributą. Palikite tuščią jei norite, kad veiktų pagal numatytuosius parametrus.", "User Home Folder Naming Rule" : "Naudotojo namų aplanko pavadinimo taisyklė", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Palikite tuščią naudotojo vardui (numatytoji reikšmė). Kitu atveju, nurodykite LDAP/AD atributą.", "Internal Username" : "Vidinis naudotojo vardas", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Pagal nutylėjimą vidinis naudotojo vardas bus sukurtas iš UUID atributo. Tai užtikrina naudotojo vardo unikalumą ir kad nereikia konvertuoti simbolių. Vidinis naudotojo vardas turi apribojimą, leidžiantį tik šiuos simbolius: [a-zA-Z0-9 _. @ -]. Kiti simboliai pakeičiami ASCII atitikmenimis arba tiesiog praleidžiami. Sutapimų konflikto atveju yra pridedamas/padidinamas skaičius. Vidinis naudotojo vardas naudojamas yra naudojamas identifikuoti naudotoją viduje. Tai kartu yra numatytasis vartotojo aplanko pavadinimas. Taip pat tai nuotolinių URL dalis, pavyzdžiui, visoms *DAV paslaugoms. Naudojant šį nustatymą, numatytoji elgsena gali būti panaikinta. Palikite tuščią, jei norite kad galiotų numatytąjį reikšmė. Pakeitimai įtakoja tik naujai priskirtiems (pridedamiems) LDAP vartotojams.", "Internal Username Attribute:" : "Vidinis naudotojo vardo atributas:", "Override UUID detection" : "Perrašyti UUID aptikimą", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "naudotojo vardasnaudotojo vardasPagal nutylėjimą, UUID atributas yra automatiškai aptinkamas. UUID atributas yra naudojamas identifikuoti LDAP vartotojus ir grupes. Taigi, vidinis naudotojo vardas bus sukurtas remiantis UUID, jei nenurodyta kitaip. Jūs galite pakeisti nustatymus ir perduoti pasirinktus atributus. Turite įsitikinti, kad jūsų pasirinktas atributas gali būti rastas tiek prie vartotojų, tiek prie grupių, ir yra unikalus. Jei norite, kad veiktų pagal numatytuosius parametrus, palikite tuščią. Pakeitimai turės įtakos tik naujai susietiems (pridedamiems) LDAP naudotojams ir grupėms.", diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json index 3376dcb7986..5167464235e 100644 --- a/apps/user_ldap/l10n/lt_LT.json +++ b/apps/user_ldap/l10n/lt_LT.json @@ -148,6 +148,7 @@ "Group Search Attributes" : "Grupės paieškos atributai", "Group-Member association" : "Grupės-Nario sąsaja", "Dynamic Group Member URL" : "Dinaminio grupės nario URL", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP atributas, kuris grupės objektuose turi LDAP ieškos URL, nustatantį kokie objektai priklauso grupei. (Tuščias parametras išjungia dinaminės grupės narystės funkciją.)", "Nested Groups" : "Įdėtinės grupės", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kai įjungta, yra palaikomos grupes turinčios grupės.(Veikia tik, jei grupės nario atributas turi DN.)", "Enable LDAP password changes per user" : "Įjungti LDAP slaptažodžio keitimus kiekvienam naudotojui.", @@ -162,7 +163,9 @@ "Email Field" : "El. pašto laukas", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Naudotojų el. paštą nustatykite pagal jų LDAP atributą. Palikite tuščią jei norite, kad veiktų pagal numatytuosius parametrus.", "User Home Folder Naming Rule" : "Naudotojo namų aplanko pavadinimo taisyklė", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Palikite tuščią naudotojo vardui (numatytoji reikšmė). Kitu atveju, nurodykite LDAP/AD atributą.", "Internal Username" : "Vidinis naudotojo vardas", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Pagal nutylėjimą vidinis naudotojo vardas bus sukurtas iš UUID atributo. Tai užtikrina naudotojo vardo unikalumą ir kad nereikia konvertuoti simbolių. Vidinis naudotojo vardas turi apribojimą, leidžiantį tik šiuos simbolius: [a-zA-Z0-9 _. @ -]. Kiti simboliai pakeičiami ASCII atitikmenimis arba tiesiog praleidžiami. Sutapimų konflikto atveju yra pridedamas/padidinamas skaičius. Vidinis naudotojo vardas naudojamas yra naudojamas identifikuoti naudotoją viduje. Tai kartu yra numatytasis vartotojo aplanko pavadinimas. Taip pat tai nuotolinių URL dalis, pavyzdžiui, visoms *DAV paslaugoms. Naudojant šį nustatymą, numatytoji elgsena gali būti panaikinta. Palikite tuščią, jei norite kad galiotų numatytąjį reikšmė. Pakeitimai įtakoja tik naujai priskirtiems (pridedamiems) LDAP vartotojams.", "Internal Username Attribute:" : "Vidinis naudotojo vardo atributas:", "Override UUID detection" : "Perrašyti UUID aptikimą", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "naudotojo vardasnaudotojo vardasPagal nutylėjimą, UUID atributas yra automatiškai aptinkamas. UUID atributas yra naudojamas identifikuoti LDAP vartotojus ir grupes. Taigi, vidinis naudotojo vardas bus sukurtas remiantis UUID, jei nenurodyta kitaip. Jūs galite pakeisti nustatymus ir perduoti pasirinktus atributus. Turite įsitikinti, kad jūsų pasirinktas atributas gali būti rastas tiek prie vartotojų, tiek prie grupių, ir yra unikalus. Jei norite, kad veiktų pagal numatytuosius parametrus, palikite tuščią. Pakeitimai turės įtakos tik naujai susietiems (pridedamiems) LDAP naudotojams ir grupėms.", diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 4232701a65b..09c7931d6e9 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -139,8 +139,8 @@ OC.L10N.register( "Only connect to the replica server." : "Koble til bare Replika-tjeneren.", "Turn off SSL certificate validation." : "Slå av SSL-sertifikat validering", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Ikke anbefalt, bruk kun for testing! Hvis tilkobling bare virker med dette valget, importer LDAP-tjenerens SSL-sertifikat i %s-tjeneren din.", - "Cache Time-To-Live" : "Levetid i mellomlager", - "in seconds. A change empties the cache." : "i sekunder. En endring tømmer bufferen.", + "Cache Time-To-Live" : "Levetid i hurtiglager", + "in seconds. A change empties the cache." : "i sekunder. En endring tømmer hurtiglageret.", "Directory Settings" : "Innstillinger for katalog", "User Display Name Field" : "Felt med brukerens visningsnavn", "The LDAP attribute to use to generate the user's display name." : "LDAP-attributten som skal brukes til å generere brukerens visningsnavn.", @@ -184,7 +184,7 @@ OC.L10N.register( "UUID Attribute for Users:" : "UUID-attributt for brukere:", "UUID Attribute for Groups:" : "UUID-attributt for grupper:", "Username-LDAP User Mapping" : "Tilknytning av brukernavn til LDAP-bruker", - "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an 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." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", + "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an 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." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg hurtiglagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. oppsett, det påvirker alle LDAP-oppsett! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", "Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker", "Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe", "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder %uid mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index 2b6ec9f4a80..f4f314fb523 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -137,8 +137,8 @@ "Only connect to the replica server." : "Koble til bare Replika-tjeneren.", "Turn off SSL certificate validation." : "Slå av SSL-sertifikat validering", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Ikke anbefalt, bruk kun for testing! Hvis tilkobling bare virker med dette valget, importer LDAP-tjenerens SSL-sertifikat i %s-tjeneren din.", - "Cache Time-To-Live" : "Levetid i mellomlager", - "in seconds. A change empties the cache." : "i sekunder. En endring tømmer bufferen.", + "Cache Time-To-Live" : "Levetid i hurtiglager", + "in seconds. A change empties the cache." : "i sekunder. En endring tømmer hurtiglageret.", "Directory Settings" : "Innstillinger for katalog", "User Display Name Field" : "Felt med brukerens visningsnavn", "The LDAP attribute to use to generate the user's display name." : "LDAP-attributten som skal brukes til å generere brukerens visningsnavn.", @@ -182,7 +182,7 @@ "UUID Attribute for Users:" : "UUID-attributt for brukere:", "UUID Attribute for Groups:" : "UUID-attributt for grupper:", "Username-LDAP User Mapping" : "Tilknytning av brukernavn til LDAP-bruker", - "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an 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." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", + "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an 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." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg hurtiglagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. oppsett, det påvirker alle LDAP-oppsett! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", "Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker", "Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe", "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder %uid mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js index baf33ae64dd..1f47189d31d 100644 --- a/apps/user_ldap/l10n/sr.js +++ b/apps/user_ldap/l10n/sr.js @@ -2,17 +2,25 @@ OC.L10N.register( "user_ldap", { "Failed to clear the mappings." : "Неуспело чишћење мапирања.", - "Failed to delete the server configuration" : "Неуспело брисање поставе сервера", - "The configuration is invalid: anonymous bind is not allowed." : "Неисправна подешавања. Анонимна веза није дозвољена.", - "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." : "Конфигурација је важећа, али Bind није успео. Проверите подешавања сервера и акредитиве.", - "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурација је неисправна. Погледајте у дневнику записа за додатне детаље.", + "Failed to delete the server configuration" : "Неуспело брисање конфигурације сервера", + "Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.", + "Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.", + "Invalid configuration. 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", "Action does not exist" : "Радња не постоји", + "LDAP user and group backend" : "Позадински мотор за LDAP корисника и групу", + "Renewing …" : "Обнављам …", + "Very weak password" : "Веома слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Осредња лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", "The Base DN appears to be wrong" : "Базни ДН је изгледа погрешан", + "Testing configuration…" : "Тестирам конфигурацију…", "Configuration incorrect" : "Конфигурација је неисправна", "Configuration incomplete" : "Конфигурација није комплетна", "Configuration OK" : "Конфигурација је у реду", @@ -32,24 +40,32 @@ OC.L10N.register( "Mappings cleared successfully!" : "Мапирања успешно очишћена!", "Error while clearing the mappings." : "Грешка при чишћењу мапирања.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Анонимно везивање није дозвољено. Дајте кориснички ДН и лозинку.", - "LDAP Operations error. Anonymous bind might not be allowed." : "Грешка ЛДАП радње. Анонимна веза можда није дозвољена.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Грешка LDAP радње. Анонимна веза можда није дозвољена.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Упис није успео. Проверите да је база у функцији. Поново учитајте пре настављања.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Пребацивање режима укључиће аутоматске ЛДАП упите. Зависно од ЛДАП величине то може потрајати. Заиста желите да промените режим?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Пребацивање режима укључиће аутоматске LDAP упите. Зависно од LDAP величине то може потрајати. Заиста желите да промените режим?", "Mode switch" : "Промена режима", "Select attributes" : "Изаберите атрибуте", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Корисник није нађен. Проверите пријавне атрибуте и корисничко име. Важећи филтер (за копирај-налепи за оверу командне линије): <br/>", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Корисник није нађен. Проверите атрибуте пријаве и корисничко име. Ефективни филтер (да копирате и налепите за верификацију у конзоли):<br/>", "User found and settings verified." : "Корисник нађен и поставке проверене.", - "An unspecified error occurred. Please check the settings and the log." : "Десила се неодређана грешка. Проверите поставке и записник.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Размислите и да смањите претрагу, пошто обухвата много корисника, од којих ће само први моћи да се пријави.", + "An unspecified error occurred. Please check log and settings." : "Десила се непозната грешка. Погледајте дневник и подешавања.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Филтер претраге је неисправан, вероватно због синтаксе попут неједнаког броја отворених и затворених заграда. Проверите.", - "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке ЛДАП / АД везе. Проверите домаћина, порт и акредитиве.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке LDAP / AD везе. Проверите домаћина, порт и акредитиве.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" резервисано поље недостаје. Биће замењено са корисничким именом када се ради упит над LDAP / AD-ом.", "Please provide a login name to test against" : "Наведите пријавно име за тест са", - "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Поље групе је искључено јер ЛДАП / АД сервер не подржава припадност групи.", - "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","нађено %s група"], - "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","нађено %s корисника"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Немогу да откријем особину приказивања корисниковог имена. Наведите је у напредним поставкама LDAP-a", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Поље групе је искључено јер LDAP / AD сервер не подржава припадност групи.", + "Password change rejected. Hint: " : "Промена лозинке није прихваћена. Смерница:", + "Please login with the new password" : "Пријавите се са новом лозинком", + "Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.", + "Your password will expire today." : "Ваша лозинка ће истећи данас.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ваша лозинка ће истећи за %n дан.","Ваша лозинка ће истећи за %n дана.","Ваша лозинка ће истећи за %n дана."], + "LDAP / AD integration" : "LDAP / AD интеграција", + "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","Нађено %s група"], + "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","Нађено %s корисника"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не могу да пронађем атрибут имена за приказ корисника. Молимо сами га наведите у LDAP напредним подешавањима.", "Could not find the desired feature" : "Не могу да пронађем жељену особину", "Invalid Host" : "Неисправан домаћин", - "Test Configuration" : "Испробај поставу", + "Test Configuration" : "Испробај поставку", "Help" : "Помоћ", "Groups meeting these criteria are available in %s:" : "Групе које испуњавају ове критеријуме су доступне у %s:", "Only these object classes:" : "Само ове класе објеката:", @@ -57,40 +73,54 @@ OC.L10N.register( "Search groups" : "Претражи групе", "Available groups" : "Доступне групе", "Selected groups" : "Изабране групе", - "Edit LDAP Query" : "Уреди ЛДАП упит", - "LDAP Filter:" : "ЛДАП филтер:", + "Edit LDAP Query" : "Уреди LDAP упит", + "LDAP Filter:" : "LDAP филтер:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Филтер прецизира које ће LDAP групе требају имати приступ %s случају.", + "Verify settings and count the groups" : "Верификуј поставке и преброј групе", "When logging in, %s will find the user based on the following attributes:" : "При пријављивању, %s ће пронаћи корисника на основу следећих атрибута:", - "LDAP / AD Username:" : "ЛДАП / АД корисничко име:", - "LDAP / AD Email Address:" : "ЛДАП / АД е-адреса:", - "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Дозволи пријаву уз атрибут е-поште. Mail и mailPrimaryAddress биће дозвољени.", - "Other Attributes:" : "Остали параметри:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Одређује филтер који ће се применити при покушају пријављивања. %%uid замењује корисничко име при пријављивању. Пример: \"uid=%%uid\"", + "LDAP / AD Username:" : "LDAP / AD корисничко име:", + "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Дозволи пријављивање преко LDAP / AD корисничког имена, које је или \"uid\" или \"sAMAccountName\" и биће детектовано.", + "LDAP / AD Email Address:" : "LDAP / AD адреса е-поште:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Дозволи пријављивање преко атрибута адресе е-поште. \"mail\" и \"mailPrimaryAddress\" су дозвољени.", + "Other Attributes:" : "Остали атрибути:", + "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Дефинише филтер који ће се применити, када се покуша пријава. \"%%uid\" замењује корисничко име у пријави. Example: \"uid=%%uid\"", "Test Loginname" : "Испробај име за пријаву", "Verify settings" : "Провери поставке", "1. Server" : "1. сервер", "%s. Server:" : "%s. Сервер:", + "Add a new configuration" : "Додај нову поставку", "Copy current configuration into new directory binding" : "Копирај тренутну поставу у везивање новог директоријума", "Delete the current configuration" : "Обриши тренутне поставке", "Host" : "Домаћин", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Можете да изоставите протокол, осим ако не захтевате SSL. Ако је потребан, почните са ldaps://", "Port" : "Порт", "Detect Port" : "Откриј порт", "User DN" : "Корисников DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN корисника клијента са којим треба да се успостави веза, нпр. uid=agent,dc=example,dc=com. За анониман приступ, оставите поља DN и лозинка празним.", "Password" : "Лозинка", "For anonymous access, leave DN and Password empty." : "За анониман приступ, оставите поља DN и лозинка празним.", - "One Base DN per line" : "Једна Base DN по линији", + "One Base DN per line" : "Један Base DN по линији", "You can specify Base DN for users and groups in the Advanced tab" : "Можете навести Base DN за кориснике и групе у картици Напредно", - "Detect Base DN" : "Откриј базни ДН", - "Test Base DN" : "Тестирај базни ДН", + "Detect Base DN" : "Откриј Base DN", + "Test Base DN" : "Тестирај Base DN", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Избегава аутоматске LDAP захтеве. Боље за веће поставке, али тражи мало више познавања LDAP-а.", "Manually enter LDAP filters (recommended for large directories)" : "Унесите ручно LDAP филтере (препоручено за велике директоријуме)", + "Listing and searching for users is constrained by these criteria:" : "Излиставање и претраживање корисника је ограничено следећим условима:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Најчешће класе објеката за кориснике су organizationalPerson, person, user и inetOrgPerson. Ако нисте сигурни шта да изаберете, питајте администратора именика.", "The filter specifies which LDAP users shall have access to the %s instance." : "Филтер одређује који ЛДАП корисници ће имати приступ на %s.", "Verify settings and count users" : "Провери поставке и преброј кориснике", "Saving" : "Снимам", "Back" : "Назад", "Continue" : "Настави", + "Please renew your password." : "Молимо обновите Вашу лозинку.", + "An internal error occurred." : "Догодила се интерна грешка.", + "Please try again or contact your administrator." : "Покушајте поново или контактирајте администратора.", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Renew password" : "Обнови лозинку", + "Wrong password. Reset it?" : "Погрешна лозинка. Желите ли да је ресетујете?", + "Wrong password." : "Лоша лозинка.", + "Cancel" : "Одустани", "LDAP" : "LDAP", "Server" : "Сервер", "Users" : "Корисници", @@ -98,22 +128,24 @@ OC.L10N.register( "Groups" : "Групе", "Expert" : "Стручњак", "Advanced" : "Напредно", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> ПХП ЛДАП модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> PHP LDAP модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.", "Connection Settings" : "Поставке везе", "Configuration Active" : "Конфигурација активна", "When unchecked, this configuration will be skipped." : "Када није штриклирано, ова конфигурација ће бити прескочена.", "Backup (Replica) Host" : "Домаћин Резервне копије (Реплике)", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Наведите опционог домаћина за резервне копије. Он мора бити реплика главног ЛДАП/АД сервера.", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Наведите опционог домаћина за резервне копије. Он мора бити реплика главног LDAP/AD сервера.", "Backup (Replica) Port" : "Порт Резервне копије (Реплике)", "Disable Main Server" : "Онемогући главни сервер", "Only connect to the replica server." : "Повезано само на сервер за копирање.", - "Turn off SSL certificate validation." : "Искључите потврду ССЛ сертификата.", + "Turn off SSL certificate validation." : "Искључите потврду SSL сертификата.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Није препоручено, користите само за тестирање! Ако веза ради само са овом опцијом, увезите SSL сертификате LDAP сервера на ваш %s сервер.", "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 display name." : "LDAP особина за стварање имена за приказ корисника.", + "The LDAP attribute to use to generate the user's display name." : "LDAP атрибут за стварање имена за приказ корисника.", + "2nd User Display Name Field" : "2. поље за приказ имена корисника", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Опционо. LDAP атрибут који се додаје на име у заградама. Коначно име за приказ ће бити нешто попут »Петар Петровић (pera@example.org)«.", "Base User Tree" : "Основно стабло корисника", "One User Base DN per line" : "Један Корисников јединствени назив DN по линији", "User Search Attributes" : "Параметри претраге корисника", @@ -124,17 +156,28 @@ OC.L10N.register( "One Group Base DN per line" : "Један Групни јединствени назив DN по линији", "Group Search Attributes" : "Параметри претраге група", "Group-Member association" : "Придруживање чланова у групу", + "Dynamic Group Member URL" : "Динамична адреса члана групе", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP атрибут који на групном објекту садржи адресу LDAP претраге којом се одређује да ли објекат припада групи. (празно подешавање искључује могућност динамичких припадности групама.) ", "Nested Groups" : "Угнеждене групе", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Када је укључено, подржане су групе унутар групе. (Ради само ако особина члана групе садржи DN-ове.)", "Paging chunksize" : "Величина делића странице", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Величина делића се користи за страничење ЛДАП претрага које могу вратити гомилу резултата попут набрајања корисника или група. (постављање на 0 у таквим ситуацијама искључује приказ претраге по страницама)", + "Enable LDAP password changes per user" : "Укључи промену LDAP лозинке по кориснику", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Дозволи LDAP корисницима да мењају своју лозинку и дозволи супер администраторима и администраторима група да мењају лозинке њихових LDAP корисника. Ради само када је контрола права приступа подешена према LDAP серверу. Пошто се лозинке шаљу као обичан тест ка LDAP серверу, мора се користити протокол са шифровањем, као и укључивање хеширања на LDAP серверу.", + "(New password is sent as plain text to LDAP)" : "(нова лозинка се шаље као обичан текст на LDAP)", + "Default password policy DN" : "Подразумевана политика промене DN лозинки", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Подразумевана политика промене лозинки ће се користити када лозинка истиче. Може се користити само када се укључи промена лозинке по кориснику и подржава је само OpenLDAP. Оставите празно да искључите шта се дешава када лозинка истиче.", "Special Attributes" : "Посебни параметри", "Quota Field" : "Поље квоте", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Оставите празно за подразумевану квоту корисника. У супротном, ставите LDAP/AD атрибут.", "Quota Default" : "Подразумевана квота", - "Email Field" : "Поље е-поште", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Редефинише подразумевану квоту за LDAP кориснике који немају постављену квоту у Quota пољу.", + "Email Field" : "Поље адресе е-поште", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Поставља адресу е-поште корисника из LDAP атрибута. Оставите празно за подразумевано понашање.", "User Home Folder Naming Rule" : "Правило именовања корисничке фасцикле", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставите празно за корисничко име (подразумевано). У супротном, наведите особину LDAP/AD.", "Internal Username" : "Интерно корисничко име:", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Подразумевано се интерно корисничко име креира од UUID атрибута. Тиме се гарантује да се корисничко име јединствено и да карактери не морају да се конвертују. Интерно корисничко име има ограничења да су дозвољени само следећи карактери: [ a-zA-Z0-9_.@- ]. Остали карактери ће или бити замењени ASCII еквивалентима или ће бити прескочени. Ако се деси поклапање са постојећим корисничким именом, додаће се број на крај имена. Интерно корисничко име се користи да идентификује корисника интерно. Такође се користи и као подразумевано име за име корисничку фасцикле, а и део је удаљених адреса, нпр. свих *DAV сервиса. Уз помоћ овог подешавања, може да се промени подразумевано понашање. Оставите га празним за подразумевано понашање. Промене ће се тицати само новомапираних (додатих) LDAP корисника.", "Internal Username Attribute:" : "Интерни параметри корисничког имена:", "Override UUID detection" : "Прескочи UUID откривање", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Подразумевано, атрибут UUID се аутоматски детектује. Атрибут UUID се користи за сигурну идентификацију LDAP корисника и група. Такође, локално корисничко име ће бити креирано на основу UUID-a, ако није другачије назначено. Можете заобићи поставке и проследити други атрибут по вашем избору. Морате бити сигурни да је изабрани атрибут јединствен и да га корисници и групе могу преносити. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.", @@ -146,7 +189,6 @@ OC.L10N.register( "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група", "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Недостаје %uid местодржач. Биће замењен са пријавним именом при ЛДАП / АД упиту.", "Verify settings and count groups" : "Провери поставке и преброј групе", - "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Дозволи пријаву уз ЛДАП / АД корисичко име које је или uid или samaccountname и биће откривено.", "Add a new and blank configuration" : "Додај нову празну поставу", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Можете да изоставите протокол, осим ако захтевате ССЛ. У том случају почните са ldaps://", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Упозорење:</b> Апликације user_ldap и user_webdavauth нису компатибилне. Можете имати проблема. Питајте систем администратора да искључи једну од њих.", diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json index a9ad3314d7a..c3787ce0909 100644 --- a/apps/user_ldap/l10n/sr.json +++ b/apps/user_ldap/l10n/sr.json @@ -1,16 +1,24 @@ { "translations": { "Failed to clear the mappings." : "Неуспело чишћење мапирања.", - "Failed to delete the server configuration" : "Неуспело брисање поставе сервера", - "The configuration is invalid: anonymous bind is not allowed." : "Неисправна подешавања. Анонимна веза није дозвољена.", - "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." : "Конфигурација је важећа, али Bind није успео. Проверите подешавања сервера и акредитиве.", - "The configuration is invalid. Please have a look at the logs for further details." : "Конфигурација је неисправна. Погледајте у дневнику записа за додатне детаље.", + "Failed to delete the server configuration" : "Неуспело брисање конфигурације сервера", + "Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.", + "Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.", + "Invalid configuration. 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", "Action does not exist" : "Радња не постоји", + "LDAP user and group backend" : "Позадински мотор за LDAP корисника и групу", + "Renewing …" : "Обнављам …", + "Very weak password" : "Веома слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Осредња лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", "The Base DN appears to be wrong" : "Базни ДН је изгледа погрешан", + "Testing configuration…" : "Тестирам конфигурацију…", "Configuration incorrect" : "Конфигурација је неисправна", "Configuration incomplete" : "Конфигурација није комплетна", "Configuration OK" : "Конфигурација је у реду", @@ -30,24 +38,32 @@ "Mappings cleared successfully!" : "Мапирања успешно очишћена!", "Error while clearing the mappings." : "Грешка при чишћењу мапирања.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Анонимно везивање није дозвољено. Дајте кориснички ДН и лозинку.", - "LDAP Operations error. Anonymous bind might not be allowed." : "Грешка ЛДАП радње. Анонимна веза можда није дозвољена.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Грешка LDAP радње. Анонимна веза можда није дозвољена.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Упис није успео. Проверите да је база у функцији. Поново учитајте пре настављања.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Пребацивање режима укључиће аутоматске ЛДАП упите. Зависно од ЛДАП величине то може потрајати. Заиста желите да промените режим?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Пребацивање режима укључиће аутоматске LDAP упите. Зависно од LDAP величине то може потрајати. Заиста желите да промените режим?", "Mode switch" : "Промена режима", "Select attributes" : "Изаберите атрибуте", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Корисник није нађен. Проверите пријавне атрибуте и корисничко име. Важећи филтер (за копирај-налепи за оверу командне линије): <br/>", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Корисник није нађен. Проверите атрибуте пријаве и корисничко име. Ефективни филтер (да копирате и налепите за верификацију у конзоли):<br/>", "User found and settings verified." : "Корисник нађен и поставке проверене.", - "An unspecified error occurred. Please check the settings and the log." : "Десила се неодређана грешка. Проверите поставке и записник.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Размислите и да смањите претрагу, пошто обухвата много корисника, од којих ће само први моћи да се пријави.", + "An unspecified error occurred. Please check log and settings." : "Десила се непозната грешка. Погледајте дневник и подешавања.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Филтер претраге је неисправан, вероватно због синтаксе попут неједнаког броја отворених и затворених заграда. Проверите.", - "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке ЛДАП / АД везе. Проверите домаћина, порт и акредитиве.", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Дошло је до грешке LDAP / AD везе. Проверите домаћина, порт и акредитиве.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" резервисано поље недостаје. Биће замењено са корисничким именом када се ради упит над LDAP / AD-ом.", "Please provide a login name to test against" : "Наведите пријавно име за тест са", - "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Поље групе је искључено јер ЛДАП / АД сервер не подржава припадност групи.", - "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","нађено %s група"], - "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","нађено %s корисника"], - "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Немогу да откријем особину приказивања корисниковог имена. Наведите је у напредним поставкама LDAP-a", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Поље групе је искључено јер LDAP / AD сервер не подржава припадност групи.", + "Password change rejected. Hint: " : "Промена лозинке није прихваћена. Смерница:", + "Please login with the new password" : "Пријавите се са новом лозинком", + "Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.", + "Your password will expire today." : "Ваша лозинка ће истећи данас.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ваша лозинка ће истећи за %n дан.","Ваша лозинка ће истећи за %n дана.","Ваша лозинка ће истећи за %n дана."], + "LDAP / AD integration" : "LDAP / AD интеграција", + "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","Нађено %s група"], + "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","Нађено %s корисника"], + "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не могу да пронађем атрибут имена за приказ корисника. Молимо сами га наведите у LDAP напредним подешавањима.", "Could not find the desired feature" : "Не могу да пронађем жељену особину", "Invalid Host" : "Неисправан домаћин", - "Test Configuration" : "Испробај поставу", + "Test Configuration" : "Испробај поставку", "Help" : "Помоћ", "Groups meeting these criteria are available in %s:" : "Групе које испуњавају ове критеријуме су доступне у %s:", "Only these object classes:" : "Само ове класе објеката:", @@ -55,40 +71,54 @@ "Search groups" : "Претражи групе", "Available groups" : "Доступне групе", "Selected groups" : "Изабране групе", - "Edit LDAP Query" : "Уреди ЛДАП упит", - "LDAP Filter:" : "ЛДАП филтер:", + "Edit LDAP Query" : "Уреди LDAP упит", + "LDAP Filter:" : "LDAP филтер:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Филтер прецизира које ће LDAP групе требају имати приступ %s случају.", + "Verify settings and count the groups" : "Верификуј поставке и преброј групе", "When logging in, %s will find the user based on the following attributes:" : "При пријављивању, %s ће пронаћи корисника на основу следећих атрибута:", - "LDAP / AD Username:" : "ЛДАП / АД корисничко име:", - "LDAP / AD Email Address:" : "ЛДАП / АД е-адреса:", - "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Дозволи пријаву уз атрибут е-поште. Mail и mailPrimaryAddress биће дозвољени.", - "Other Attributes:" : "Остали параметри:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Одређује филтер који ће се применити при покушају пријављивања. %%uid замењује корисничко име при пријављивању. Пример: \"uid=%%uid\"", + "LDAP / AD Username:" : "LDAP / AD корисничко име:", + "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Дозволи пријављивање преко LDAP / AD корисничког имена, које је или \"uid\" или \"sAMAccountName\" и биће детектовано.", + "LDAP / AD Email Address:" : "LDAP / AD адреса е-поште:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Дозволи пријављивање преко атрибута адресе е-поште. \"mail\" и \"mailPrimaryAddress\" су дозвољени.", + "Other Attributes:" : "Остали атрибути:", + "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Дефинише филтер који ће се применити, када се покуша пријава. \"%%uid\" замењује корисничко име у пријави. Example: \"uid=%%uid\"", "Test Loginname" : "Испробај име за пријаву", "Verify settings" : "Провери поставке", "1. Server" : "1. сервер", "%s. Server:" : "%s. Сервер:", + "Add a new configuration" : "Додај нову поставку", "Copy current configuration into new directory binding" : "Копирај тренутну поставу у везивање новог директоријума", "Delete the current configuration" : "Обриши тренутне поставке", "Host" : "Домаћин", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Можете да изоставите протокол, осим ако не захтевате SSL. Ако је потребан, почните са ldaps://", "Port" : "Порт", "Detect Port" : "Откриј порт", "User DN" : "Корисников DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN корисника клијента са којим треба да се успостави веза, нпр. uid=agent,dc=example,dc=com. За анониман приступ, оставите поља DN и лозинка празним.", "Password" : "Лозинка", "For anonymous access, leave DN and Password empty." : "За анониман приступ, оставите поља DN и лозинка празним.", - "One Base DN per line" : "Једна Base DN по линији", + "One Base DN per line" : "Један Base DN по линији", "You can specify Base DN for users and groups in the Advanced tab" : "Можете навести Base DN за кориснике и групе у картици Напредно", - "Detect Base DN" : "Откриј базни ДН", - "Test Base DN" : "Тестирај базни ДН", + "Detect Base DN" : "Откриј Base DN", + "Test Base DN" : "Тестирај Base DN", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Избегава аутоматске LDAP захтеве. Боље за веће поставке, али тражи мало више познавања LDAP-а.", "Manually enter LDAP filters (recommended for large directories)" : "Унесите ручно LDAP филтере (препоручено за велике директоријуме)", + "Listing and searching for users is constrained by these criteria:" : "Излиставање и претраживање корисника је ограничено следећим условима:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Најчешће класе објеката за кориснике су organizationalPerson, person, user и inetOrgPerson. Ако нисте сигурни шта да изаберете, питајте администратора именика.", "The filter specifies which LDAP users shall have access to the %s instance." : "Филтер одређује који ЛДАП корисници ће имати приступ на %s.", "Verify settings and count users" : "Провери поставке и преброј кориснике", "Saving" : "Снимам", "Back" : "Назад", "Continue" : "Настави", + "Please renew your password." : "Молимо обновите Вашу лозинку.", + "An internal error occurred." : "Догодила се интерна грешка.", + "Please try again or contact your administrator." : "Покушајте поново или контактирајте администратора.", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Renew password" : "Обнови лозинку", + "Wrong password. Reset it?" : "Погрешна лозинка. Желите ли да је ресетујете?", + "Wrong password." : "Лоша лозинка.", + "Cancel" : "Одустани", "LDAP" : "LDAP", "Server" : "Сервер", "Users" : "Корисници", @@ -96,22 +126,24 @@ "Groups" : "Групе", "Expert" : "Стручњак", "Advanced" : "Напредно", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> ПХП ЛДАП модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> PHP LDAP модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.", "Connection Settings" : "Поставке везе", "Configuration Active" : "Конфигурација активна", "When unchecked, this configuration will be skipped." : "Када није штриклирано, ова конфигурација ће бити прескочена.", "Backup (Replica) Host" : "Домаћин Резервне копије (Реплике)", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Наведите опционог домаћина за резервне копије. Он мора бити реплика главног ЛДАП/АД сервера.", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Наведите опционог домаћина за резервне копије. Он мора бити реплика главног LDAP/AD сервера.", "Backup (Replica) Port" : "Порт Резервне копије (Реплике)", "Disable Main Server" : "Онемогући главни сервер", "Only connect to the replica server." : "Повезано само на сервер за копирање.", - "Turn off SSL certificate validation." : "Искључите потврду ССЛ сертификата.", + "Turn off SSL certificate validation." : "Искључите потврду SSL сертификата.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Није препоручено, користите само за тестирање! Ако веза ради само са овом опцијом, увезите SSL сертификате LDAP сервера на ваш %s сервер.", "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 display name." : "LDAP особина за стварање имена за приказ корисника.", + "The LDAP attribute to use to generate the user's display name." : "LDAP атрибут за стварање имена за приказ корисника.", + "2nd User Display Name Field" : "2. поље за приказ имена корисника", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Опционо. LDAP атрибут који се додаје на име у заградама. Коначно име за приказ ће бити нешто попут »Петар Петровић (pera@example.org)«.", "Base User Tree" : "Основно стабло корисника", "One User Base DN per line" : "Један Корисников јединствени назив DN по линији", "User Search Attributes" : "Параметри претраге корисника", @@ -122,17 +154,28 @@ "One Group Base DN per line" : "Један Групни јединствени назив DN по линији", "Group Search Attributes" : "Параметри претраге група", "Group-Member association" : "Придруживање чланова у групу", + "Dynamic Group Member URL" : "Динамична адреса члана групе", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP атрибут који на групном објекту садржи адресу LDAP претраге којом се одређује да ли објекат припада групи. (празно подешавање искључује могућност динамичких припадности групама.) ", "Nested Groups" : "Угнеждене групе", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Када је укључено, подржане су групе унутар групе. (Ради само ако особина члана групе садржи DN-ове.)", "Paging chunksize" : "Величина делића странице", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Величина делића се користи за страничење ЛДАП претрага које могу вратити гомилу резултата попут набрајања корисника или група. (постављање на 0 у таквим ситуацијама искључује приказ претраге по страницама)", + "Enable LDAP password changes per user" : "Укључи промену LDAP лозинке по кориснику", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Дозволи LDAP корисницима да мењају своју лозинку и дозволи супер администраторима и администраторима група да мењају лозинке њихових LDAP корисника. Ради само када је контрола права приступа подешена према LDAP серверу. Пошто се лозинке шаљу као обичан тест ка LDAP серверу, мора се користити протокол са шифровањем, као и укључивање хеширања на LDAP серверу.", + "(New password is sent as plain text to LDAP)" : "(нова лозинка се шаље као обичан текст на LDAP)", + "Default password policy DN" : "Подразумевана политика промене DN лозинки", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Подразумевана политика промене лозинки ће се користити када лозинка истиче. Може се користити само када се укључи промена лозинке по кориснику и подржава је само OpenLDAP. Оставите празно да искључите шта се дешава када лозинка истиче.", "Special Attributes" : "Посебни параметри", "Quota Field" : "Поље квоте", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Оставите празно за подразумевану квоту корисника. У супротном, ставите LDAP/AD атрибут.", "Quota Default" : "Подразумевана квота", - "Email Field" : "Поље е-поште", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Редефинише подразумевану квоту за LDAP кориснике који немају постављену квоту у Quota пољу.", + "Email Field" : "Поље адресе е-поште", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Поставља адресу е-поште корисника из LDAP атрибута. Оставите празно за подразумевано понашање.", "User Home Folder Naming Rule" : "Правило именовања корисничке фасцикле", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставите празно за корисничко име (подразумевано). У супротном, наведите особину LDAP/AD.", "Internal Username" : "Интерно корисничко име:", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Подразумевано се интерно корисничко име креира од UUID атрибута. Тиме се гарантује да се корисничко име јединствено и да карактери не морају да се конвертују. Интерно корисничко име има ограничења да су дозвољени само следећи карактери: [ a-zA-Z0-9_.@- ]. Остали карактери ће или бити замењени ASCII еквивалентима или ће бити прескочени. Ако се деси поклапање са постојећим корисничким именом, додаће се број на крај имена. Интерно корисничко име се користи да идентификује корисника интерно. Такође се користи и као подразумевано име за име корисничку фасцикле, а и део је удаљених адреса, нпр. свих *DAV сервиса. Уз помоћ овог подешавања, може да се промени подразумевано понашање. Оставите га празним за подразумевано понашање. Промене ће се тицати само новомапираних (додатих) LDAP корисника.", "Internal Username Attribute:" : "Интерни параметри корисничког имена:", "Override UUID detection" : "Прескочи UUID откривање", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Подразумевано, атрибут UUID се аутоматски детектује. Атрибут UUID се користи за сигурну идентификацију LDAP корисника и група. Такође, локално корисничко име ће бити креирано на основу UUID-a, ако није другачије назначено. Можете заобићи поставке и проследити други атрибут по вашем избору. Морате бити сигурни да је изабрани атрибут јединствен и да га корисници и групе могу преносити. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.", @@ -144,7 +187,6 @@ "Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група", "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Недостаје %uid местодржач. Биће замењен са пријавним именом при ЛДАП / АД упиту.", "Verify settings and count groups" : "Провери поставке и преброј групе", - "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Дозволи пријаву уз ЛДАП / АД корисичко име које је или uid или samaccountname и биће откривено.", "Add a new and blank configuration" : "Додај нову празну поставу", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Можете да изоставите протокол, осим ако захтевате ССЛ. У том случају почните са ldaps://", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Упозорење:</b> Апликације user_ldap и user_webdavauth нису компатибилне. Можете имати проблема. Питајте систем администратора да искључи једну од њих.", diff --git a/apps/user_ldap/lib/Command/Search.php b/apps/user_ldap/lib/Command/Search.php index 463ad2eaeb4..d348d5b31c9 100644 --- a/apps/user_ldap/lib/Command/Search.php +++ b/apps/user_ldap/lib/Command/Search.php @@ -120,7 +120,13 @@ class Search extends Command { $limit = null; } } else { - $proxy = new User_Proxy($configPrefixes, $ldapWrapper, $this->ocConfig, \OC::$server->getNotificationManager()); + $proxy = new User_Proxy( + $configPrefixes, + $ldapWrapper, + $this->ocConfig, + \OC::$server->getNotificationManager(), + \OC::$server->getUserSession() + ); $getMethod = 'getDisplayNames'; $printID = true; } diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php index 83b2f05f1d2..891ab7f0a3a 100644 --- a/apps/user_ldap/lib/Helper.php +++ b/apps/user_ldap/lib/Helper.php @@ -294,9 +294,10 @@ class Helper { $ldapWrapper = new LDAP(); $ocConfig = \OC::$server->getConfig(); $notificationManager = \OC::$server->getNotificationManager(); + $userSession = \OC::$server->getUserSession(); $userBackend = new User_Proxy( - $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager + $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager, $userSession ); $uid = $userBackend->loginName2UserName($param['uid'] ); if($uid !== false) { diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php index a4dd4ba32ad..44e8f5469f1 100644 --- a/apps/user_ldap/lib/Jobs/CleanUp.php +++ b/apps/user_ldap/lib/Jobs/CleanUp.php @@ -99,7 +99,8 @@ class CleanUp extends TimedJob { $this->ldapHelper->getServerConfigurationPrefixes(true), new LDAP(), $this->ocConfig, - \OC::$server->getNotificationManager() + \OC::$server->getNotificationManager(), + \OC::$server->getUserSession() ); } diff --git a/apps/user_ldap/lib/Migration/UUIDFixGroup.php b/apps/user_ldap/lib/Migration/UUIDFixGroup.php index 6aacb37257e..9ea406efadf 100644 --- a/apps/user_ldap/lib/Migration/UUIDFixGroup.php +++ b/apps/user_ldap/lib/Migration/UUIDFixGroup.php @@ -33,6 +33,6 @@ class UUIDFixGroup extends UUIDFix { public function __construct(GroupMapping $mapper, LDAP $ldap, IConfig $config, Helper $helper) { $this->mapper = $mapper; $this->proxy = new User_Proxy($helper->getServerConfigurationPrefixes(true), $ldap, $config, - \OC::$server->getNotificationManager()); + \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); } } diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php index 6c438391380..0a9a1cfe4c2 100644 --- a/apps/user_ldap/lib/User_LDAP.php +++ b/apps/user_ldap/lib/User_LDAP.php @@ -42,6 +42,7 @@ use OCA\User_LDAP\User\OfflineUser; use OCA\User_LDAP\User\User; use OCP\IConfig; use OCP\IUser; +use OCP\IUserSession; use OCP\Notification\IManager as INotificationManager; use OCP\Util; @@ -59,24 +60,21 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn * @param Access $access * @param \OCP\IConfig $ocConfig * @param \OCP\Notification\IManager $notificationManager + * @param IUserSession $userSession */ - public function __construct(Access $access, IConfig $ocConfig, INotificationManager $notificationManager) { + public function __construct(Access $access, IConfig $ocConfig, INotificationManager $notificationManager, IUserSession $userSession) { parent::__construct($access); $this->ocConfig = $ocConfig; $this->notificationManager = $notificationManager; - $this->registerHooks(); + $this->registerHooks($userSession); } - protected function registerHooks() { - Util::connectHook('OC_User','pre_deleteUser', $this, 'preDeleteUser'); - Util::connectHook('OC_User','post_deleteUser', $this, 'postDeleteUser'); + protected function registerHooks(IUserSession $userSession) { + $userSession->listen('\OC\User', 'preDelete', [$this, 'preDeleteUser']); + $userSession->listen('\OC\User', 'postDelete', [$this, 'postDeleteUser']); } - public function preDeleteUser(array $param) { - $user = $param[0]; - if(!$user instanceof IUser) { - throw new \RuntimeException('IUser expected'); - } + public function preDeleteUser(IUser $user) { $this->currentUserInDeletionProcess = $user->getUID(); } @@ -376,8 +374,6 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn \OC::$server->getLogger()->info('Cleaning up after user ' . $uid, array('app' => 'user_ldap')); - //Get Home Directory out of user preferences so we can return it later, - //necessary for removing directories as done by OC_User. $this->access->getUserMapper()->unmap($uid); $this->access->userManager->invalidate($uid); return true; @@ -406,7 +402,9 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn // early return path if it is a deleted user $user = $this->access->userManager->get($uid); if($user instanceof OfflineUser) { - if($this->currentUserInDeletionProcess === $user->getUID()) { + if($this->currentUserInDeletionProcess !== null + && $this->currentUserInDeletionProcess === $user->getOCName() + ) { return $user->getHomePath(); } else { throw new NoUserException($uid . ' is not a valid user anymore'); diff --git a/apps/user_ldap/lib/User_Proxy.php b/apps/user_ldap/lib/User_Proxy.php index d1784ad7c14..a25eb1bc621 100644 --- a/apps/user_ldap/lib/User_Proxy.php +++ b/apps/user_ldap/lib/User_Proxy.php @@ -31,6 +31,7 @@ namespace OCA\User_LDAP; use OCA\User_LDAP\User\User; use OCP\IConfig; +use OCP\IUserSession; use OCP\Notification\IManager as INotificationManager; class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface, IUserLDAP { @@ -39,14 +40,19 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface, /** * Constructor + * * @param array $serverConfigPrefixes array containing the config Prefixes + * @param ILDAPWrapper $ldap + * @param IConfig $ocConfig + * @param INotificationManager $notificationManager + * @param IUserSession $userSession */ public function __construct(array $serverConfigPrefixes, ILDAPWrapper $ldap, IConfig $ocConfig, - INotificationManager $notificationManager) { + INotificationManager $notificationManager, IUserSession $userSession) { parent::__construct($ldap); foreach($serverConfigPrefixes as $configPrefix) { $this->backends[$configPrefix] = - new User_LDAP($this->getAccess($configPrefix), $ocConfig, $notificationManager); + new User_LDAP($this->getAccess($configPrefix), $ocConfig, $notificationManager, $userSession); if(is_null($this->refBackend)) { $this->refBackend = &$this->backends[$configPrefix]; } diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php index 9891a4f719d..84e1e6b458a 100644 --- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php +++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php @@ -144,11 +144,17 @@ abstract class AbstractIntegrationTest { foreach($methods as $method) { if(strpos($method, 'case') === 0) { print("running $method " . PHP_EOL); - if(!$this->$method()) { - print(PHP_EOL . '>>> !!! Test ' . $method . ' FAILED !!! <<<' . PHP_EOL . PHP_EOL); + try { + if(!$this->$method()) { + print(PHP_EOL . '>>> !!! Test ' . $method . ' FAILED !!! <<<' . PHP_EOL . PHP_EOL); + exit(1); + } + $atLeastOneCaseRan = true; + } catch(\Exception $e) { + print(PHP_EOL . '>>> !!! Test ' . $method . ' RAISED AN EXCEPTION !!! <<<' . PHP_EOL); + print($e->getMessage() . PHP_EOL . PHP_EOL); exit(1); } - $atLeastOneCaseRan = true; } } if($atLeastOneCaseRan) { diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php index be35556111f..bd8e4bdd7a2 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php @@ -49,7 +49,7 @@ class IntegrationTestAttributeDetection extends AbstractIntegrationTest { $groupMapper->clear(); $this->access->setGroupMapper($groupMapper); - $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); $userManager = \OC::$server->getUserManager(); $userManager->clearBackends(); $userManager->registerBackend($userBackend); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php index 5dda79c2ec0..95bfb99b65b 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php @@ -47,7 +47,7 @@ class IntegrationTestFetchUsersByLoginName extends AbstractIntegrationTest { $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection()); $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); } /** diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php index 35d8524fd88..3c8cf22bb5b 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php @@ -47,7 +47,7 @@ class IntegrationTestPaging extends AbstractIntegrationTest { require(__DIR__ . '/../setup-scripts/createExplicitUsers.php'); parent::init(); - $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); } public function initConnection() { diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php index 9226c56ee89..765cee00f91 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php @@ -51,7 +51,7 @@ class IntegrationTestUserHome extends AbstractIntegrationTest { $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection()); $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); } /** diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php index 1710f519158..8c9e215edaa 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php @@ -50,7 +50,7 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest { $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection()); $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); \OC_User::useBackend($userBackend); } diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php index 7d45ee69fbc..ce81b9a26d6 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php @@ -46,7 +46,7 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest { $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); \OC_User::useBackend($userBackend); } @@ -76,16 +76,18 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest { $dn = 'uid=alice,ou=Users,' . $this->base; $this->prepareUser($dn, $username); - $user = \OC::$server->getUserManager()->get($username); - if($user === null) { - return false; - } - $this->deleteUserFromLDAP($dn); $job = new CleanUp(); $job->run([]); + // user instance must not be requested from global user manager, before + // it is deleted from the LDAP server. The instance will be returned + // from cache and may false-positively confirm the correctness. + $user = \OC::$server->getUserManager()->get($username); + if($user === null) { + return false; + } $user->delete(); return null === \OC::$server->getUserManager()->get($username); diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php index 886b0b46f0e..1f5d16567f7 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php @@ -43,7 +43,7 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest { $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection()); $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager()); + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); \OC_User::useBackend($userBackend); } diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index f74a57e25eb..44bc55b4148 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -29,6 +29,7 @@ namespace OCA\User_LDAP\Tests; +use OC\User\Session; use OCA\User_LDAP\Access; use OCA\User_LDAP\Connection; use OCA\User_LDAP\FilesystemHelper; @@ -46,6 +47,7 @@ use OCP\IAvatarManager; use OCP\IConfig; use OCP\IDBConnection; use OCP\Image; +use OCP\IUser; use OCP\IUserManager; use Test\TestCase; use OCP\Notification\IManager as INotificationManager; @@ -205,7 +207,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = $backend->checkPassword('roland', 'dt19'); @@ -216,7 +218,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = $backend->checkPassword('roland', 'wrong'); @@ -227,7 +229,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = $backend->checkPassword('mallory', 'evil'); @@ -242,7 +244,7 @@ class User_LDAPTest extends TestCase { ->method('username2dn') ->will($this->returnValue(false)); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = $backend->checkPassword('roland', 'dt19'); @@ -252,7 +254,7 @@ class User_LDAPTest extends TestCase { public function testCheckPasswordPublicAPI() { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::checkPassword('roland', 'dt19'); @@ -262,7 +264,7 @@ class User_LDAPTest extends TestCase { public function testCheckPasswordPublicAPIWrongPassword() { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::checkPassword('roland', 'wrong'); @@ -272,7 +274,7 @@ class User_LDAPTest extends TestCase { public function testCheckPasswordPublicAPIWrongUser() { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::checkPassword('mallory', 'evil'); @@ -281,7 +283,7 @@ class User_LDAPTest extends TestCase { public function testDeleteUserCancel() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->deleteUser('notme'); $this->assertFalse($result); } @@ -307,9 +309,18 @@ class User_LDAPTest extends TestCase { $this->offlineUser->expects($this->once()) ->method('getHomePath') ->willReturn($home); + $this->offlineUser->expects($this->once()) + ->method('getOCName') + ->willReturn($uid); - $backend = new UserLDAP($access, $this->configMock, $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->configMock, $this->createMock(INotificationManager::class), $this->createMock(Session::class)); + + $user = $this->createMock(IUser::class); + $user->expects($this->once()) + ->method('getUID') + ->willReturn($uid); + $backend->preDeleteUser($user); $result = $backend->deleteUser($uid); $this->assertTrue($result); $this->assertSame($backend->getHome($uid), $home); @@ -370,7 +381,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersNoParam() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->getUsers(); $this->assertEquals(3, count($result)); @@ -379,7 +390,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersLimitOffset() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->getUsers('', 1, 2); $this->assertEquals(1, count($result)); @@ -388,7 +399,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersLimitOffset2() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->getUsers('', 2, 1); $this->assertEquals(2, count($result)); @@ -397,7 +408,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersSearchWithResult() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->getUsers('yo'); $this->assertEquals(2, count($result)); @@ -406,7 +417,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersSearchEmptyResult() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->getUsers('nix'); $this->assertEquals(0, count($result)); @@ -415,7 +426,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersViaAPINoParam() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::getUsers(); @@ -425,7 +436,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersViaAPILimitOffset() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::getUsers('', 1, 2); @@ -435,7 +446,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersViaAPILimitOffset2() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::getUsers('', 2, 1); @@ -445,7 +456,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersViaAPISearchWithResult() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::getUsers('yo'); @@ -455,7 +466,7 @@ class User_LDAPTest extends TestCase { public function testGetUsersViaAPISearchEmptyResult() { $access = $this->getAccessMock(); $this->prepareAccessForGetUsers($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $result = \OCP\User::getUsers('nix'); @@ -464,7 +475,7 @@ class User_LDAPTest extends TestCase { public function testUserExists() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->expects($this->any()) @@ -486,7 +497,7 @@ class User_LDAPTest extends TestCase { */ public function testUserExistsForDeleted() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->expects($this->any()) @@ -504,7 +515,7 @@ class User_LDAPTest extends TestCase { public function testUserExistsForNeverExisting() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->expects($this->any()) @@ -523,7 +534,7 @@ class User_LDAPTest extends TestCase { public function testUserExistsPublicAPI() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); \OC_User::useBackend($backend); @@ -546,7 +557,7 @@ class User_LDAPTest extends TestCase { */ public function testUserExistsPublicAPIForDeleted() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); \OC_User::useBackend($backend); @@ -565,7 +576,7 @@ class User_LDAPTest extends TestCase { public function testUserExistsPublicAPIForNeverExisting() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); \OC_User::useBackend($backend); @@ -585,7 +596,7 @@ class User_LDAPTest extends TestCase { public function testDeleteUserExisting() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); //we do not support deleting existing users at all $result = $backend->deleteUser('gunslinger'); @@ -596,7 +607,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $config = $this->createMock(IConfig::class); $noti = $this->createMock(INotificationManager::class); - $backend = new UserLDAP($access, $config, $noti); + $backend = new UserLDAP($access, $config, $noti, $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -632,7 +643,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $config = $this->createMock(IConfig::class); $noti = $this->createMock(INotificationManager::class); - $backend = new UserLDAP($access, $config, $noti); + $backend = new UserLDAP($access, $config, $noti, $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $dataDir = \OC::$server->getConfig()->getSystemValue( @@ -675,7 +686,7 @@ class User_LDAPTest extends TestCase { */ public function testGetHomeNoPath() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -708,7 +719,7 @@ class User_LDAPTest extends TestCase { $uid = 'newyorker'; $access = $this->getAccessMock(); - $backend = new UserLDAP($access, $this->configMock, $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->configMock, $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -736,9 +747,6 @@ class User_LDAPTest extends TestCase { $this->offlineUser->expects($this->never()) ->method('getHomePath'); - $this->offlineUser->expects($this->once()) - ->method('getUID') - ->willReturn($uid); $backend->getHome($uid); } @@ -784,7 +792,7 @@ class User_LDAPTest extends TestCase { public function testGetDisplayName() { $access = $this->getAccessMock(); $this->prepareAccessForGetDisplayName($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -825,7 +833,7 @@ class User_LDAPTest extends TestCase { } })); $this->prepareAccessForGetDisplayName($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -855,7 +863,7 @@ class User_LDAPTest extends TestCase { ->method('countUsers') ->will($this->returnValue(5)); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->countUsers(); $this->assertEquals(5, $result); @@ -868,7 +876,7 @@ class User_LDAPTest extends TestCase { ->method('countUsers') ->will($this->returnValue(false)); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $result = $backend->countUsers(); $this->assertFalse($result); @@ -901,7 +909,7 @@ class User_LDAPTest extends TestCase { ->method('writeToCache') ->with($this->equalTo('loginName2UserName-'.$loginName), $this->equalTo($username)); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $name = $backend->loginName2UserName($loginName); $this->assertSame($username, $name); @@ -930,7 +938,7 @@ class User_LDAPTest extends TestCase { ->method('writeToCache') ->with($this->equalTo('loginName2UserName-'.$loginName), false); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $name = $backend->loginName2UserName($loginName); $this->assertSame(false, $name); @@ -977,7 +985,7 @@ class User_LDAPTest extends TestCase { ->method('getUserValue') ->willReturn(1); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); $name = $backend->loginName2UserName($loginName); $this->assertSame(false, $name); @@ -1058,7 +1066,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForSetPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $this->assertTrue(\OC_User::setPassword('roland', 'dt')); @@ -1068,7 +1076,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForSetPassword($access); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $this->assertTrue(\OC_User::setPassword('roland', 'dt12234$')); @@ -1078,7 +1086,7 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForSetPassword($access, false); - $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class)); + $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class)); \OC_User::useBackend($backend); $this->assertFalse(\OC_User::setPassword('roland', 'dt12234$')); @@ -1098,10 +1106,12 @@ class User_LDAPTest extends TestCase { ->willReturn(null); $config = $this->createMock(IConfig::class); $noti = $this->createMock(INotificationManager::class); + $userSession = $this->createMock(Session::class); $ldap = new User_LDAP( $access, $config, - $noti + $noti, + $userSession ); $ldap->setPassword('NotExistingUser', 'Password'); } @@ -1121,10 +1131,12 @@ class User_LDAPTest extends TestCase { ->willReturn($user); $config = $this->createMock(IConfig::class); $noti = $this->createMock(INotificationManager::class); + $userSession = $this->createMock(Session::class); $ldap = new User_LDAP( $access, $config, - $noti + $noti, + $userSession ); $this->assertFalse($ldap->setPassword('NotExistingUser', 'Password')); } diff --git a/apps/user_ldap/tests/User_ProxyTest.php b/apps/user_ldap/tests/User_ProxyTest.php index df021a6de3d..68b1e4428ca 100644 --- a/apps/user_ldap/tests/User_ProxyTest.php +++ b/apps/user_ldap/tests/User_ProxyTest.php @@ -24,6 +24,7 @@ namespace OCA\User_LDAP\Tests; use OCA\User_LDAP\ILDAPWrapper; use OCA\User_LDAP\User_Proxy; use OCP\IConfig; +use OCP\IUserSession; use OCP\Notification\IManager as INotificationManager; use Test\TestCase; @@ -32,8 +33,10 @@ class User_ProxyTest extends TestCase { private $ldapWrapper; /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var INotificationManager|\PHPUnit_Framework_MockObject_MockObject */ private $notificationManager; + /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + private $userSession; /** @var User_Proxy|\PHPUnit_Framework_MockObject_MockObject */ private $proxy; @@ -43,12 +46,14 @@ class User_ProxyTest extends TestCase { $this->ldapWrapper = $this->createMock(ILDAPWrapper::class); $this->config = $this->createMock(IConfig::class); $this->notificationManager = $this->createMock(INotificationManager::class); + $this->userSession = $this->createMock(IUserSession::class); $this->proxy = $this->getMockBuilder(User_Proxy::class) ->setConstructorArgs([ [], $this->ldapWrapper, $this->config, $this->notificationManager, + $this->userSession, ]) ->setMethods(['handleRequest']) ->getMock(); diff --git a/apps/workflowengine/l10n/nb.js b/apps/workflowengine/l10n/nb.js index e38ba681b1c..b3b622b6abf 100644 --- a/apps/workflowengine/l10n/nb.js +++ b/apps/workflowengine/l10n/nb.js @@ -14,7 +14,7 @@ OC.L10N.register( "less or equals" : "mindre eller lik", "greater or equals" : "større eller lik", "greater" : "større", - "File system tag" : "Filsystem merkelapp", + "File system tag" : "Filsystem-merkelapp", "is tagged with" : "er merket med", "is not tagged with" : "er ikke merket med", "Select tag…" : "Velg merkelapp…", diff --git a/apps/workflowengine/l10n/nb.json b/apps/workflowengine/l10n/nb.json index 11ed4de2277..5a6702fe2ff 100644 --- a/apps/workflowengine/l10n/nb.json +++ b/apps/workflowengine/l10n/nb.json @@ -12,7 +12,7 @@ "less or equals" : "mindre eller lik", "greater or equals" : "større eller lik", "greater" : "større", - "File system tag" : "Filsystem merkelapp", + "File system tag" : "Filsystem-merkelapp", "is tagged with" : "er merket med", "is not tagged with" : "er ikke merket med", "Select tag…" : "Velg merkelapp…", diff --git a/apps/workflowengine/l10n/sr.js b/apps/workflowengine/l10n/sr.js new file mode 100644 index 00000000000..2a0c0118e16 --- /dev/null +++ b/apps/workflowengine/l10n/sr.js @@ -0,0 +1,73 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "Снимљено", + "Saving failed:" : "Снимање није успело:", + "File MIME type" : "MIME тип фајла", + "is" : "је", + "is not" : "није", + "matches" : "се поклапа са", + "does not match" : "се не поклапа са", + "Example: {placeholder}" : "Пример: {placeholder}", + "File size (upload)" : "Величина фајла (отпремање)", + "less" : "је мања од", + "less or equals" : "мања или једнака од", + "greater or equals" : "већа или једнака од", + "greater" : "већа од", + "File system tag" : "Системска ознака фајла", + "is tagged with" : "је означен са", + "is not tagged with" : "није означен са", + "Select tag…" : "Одаберите ознаку…", + "Request remote address" : "Захтевај удаљену адресу", + "matches IPv4" : "поклапа се са IPv4 адресом", + "does not match IPv4" : "не поклапа се са IPv4 адресом", + "matches IPv6" : "поклапа се са IPv6 адресом", + "does not match IPv6" : "не поклапа се са IPv6 адресом", + "Request time" : "Време захтева", + "between" : "између", + "not between" : "није између", + "Start" : "Почетак", + "End" : "Крај", + "Select timezone…" : "Одаберите временску зону…", + "Request URL" : "Адреса захтева", + "Predefined URLs" : "Предефинисане адресе", + "Files WebDAV" : "WebDAV фајлови", + "Request user agent" : "Кориснички агент захтева", + "Sync clients" : "Синхронизовани клијенти", + "Android client" : "Андроид клијент", + "iOS client" : "iOS клијент", + "Desktop client" : "Десктоп клијент", + "User group membership" : "Припадност групи", + "is member of" : "је члан групе", + "is not member of" : "није члан групе", + "The given operator is invalid" : "Дати оператор није исправан", + "The given regular expression is invalid" : "Дати регуларни израз није исправан", + "The given file size is invalid" : "Дата величина фајла није исправна", + "The given tag id is invalid" : "Дати ИД ознаке није исправан", + "The given IP range is invalid" : "Дати опсег ИП адреса није исправан", + "The given IP range is not valid for IPv4" : "Дати опсег ИП адреса није исправан за IPv4", + "The given IP range is not valid for IPv6" : "Дати опсег ИП адреса није исправан за IPv6", + "The given time span is invalid" : "Дати временски оквир није исправан", + "The given start time is invalid" : "Дато време почетка није исправно", + "The given end time is invalid" : "Дато време краја није исправно", + "The given group does not exist" : "Дата група не постоји", + "Check %s is invalid or does not exist" : "Проверите да ли је %s неисправно или не постоји", + "Operation #%s does not exist" : "Операција #%s не постоји", + "Operation %s does not exist" : "Операција %s не постоји", + "Operation %s is invalid" : "Операција %s није исправна", + "Check %s does not exist" : "Проверите да ли %s постоји", + "Check %s is invalid" : "Проверите да ли је %s исправно", + "Check #%s does not exist" : "Проверите да ли #%s постоји", + "Workflow" : "Процес рада", + "Open documentation" : "Отвори документацију", + "Add rule group" : "Додај групу правила", + "Short rule description" : "Кратки опис правила", + "Add rule" : "Додај правило", + "Reset" : "Ресетуј", + "Save" : "Сачувај", + "Saving…" : "Чувам…", + "Loading…" : "Учитавање…", + "Successfully saved" : "Успешно сачувано", + "File mime type" : "MIME тип фајла" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/workflowengine/l10n/sr.json b/apps/workflowengine/l10n/sr.json new file mode 100644 index 00000000000..ea34207a608 --- /dev/null +++ b/apps/workflowengine/l10n/sr.json @@ -0,0 +1,71 @@ +{ "translations": { + "Saved" : "Снимљено", + "Saving failed:" : "Снимање није успело:", + "File MIME type" : "MIME тип фајла", + "is" : "је", + "is not" : "није", + "matches" : "се поклапа са", + "does not match" : "се не поклапа са", + "Example: {placeholder}" : "Пример: {placeholder}", + "File size (upload)" : "Величина фајла (отпремање)", + "less" : "је мања од", + "less or equals" : "мања или једнака од", + "greater or equals" : "већа или једнака од", + "greater" : "већа од", + "File system tag" : "Системска ознака фајла", + "is tagged with" : "је означен са", + "is not tagged with" : "није означен са", + "Select tag…" : "Одаберите ознаку…", + "Request remote address" : "Захтевај удаљену адресу", + "matches IPv4" : "поклапа се са IPv4 адресом", + "does not match IPv4" : "не поклапа се са IPv4 адресом", + "matches IPv6" : "поклапа се са IPv6 адресом", + "does not match IPv6" : "не поклапа се са IPv6 адресом", + "Request time" : "Време захтева", + "between" : "између", + "not between" : "није између", + "Start" : "Почетак", + "End" : "Крај", + "Select timezone…" : "Одаберите временску зону…", + "Request URL" : "Адреса захтева", + "Predefined URLs" : "Предефинисане адресе", + "Files WebDAV" : "WebDAV фајлови", + "Request user agent" : "Кориснички агент захтева", + "Sync clients" : "Синхронизовани клијенти", + "Android client" : "Андроид клијент", + "iOS client" : "iOS клијент", + "Desktop client" : "Десктоп клијент", + "User group membership" : "Припадност групи", + "is member of" : "је члан групе", + "is not member of" : "није члан групе", + "The given operator is invalid" : "Дати оператор није исправан", + "The given regular expression is invalid" : "Дати регуларни израз није исправан", + "The given file size is invalid" : "Дата величина фајла није исправна", + "The given tag id is invalid" : "Дати ИД ознаке није исправан", + "The given IP range is invalid" : "Дати опсег ИП адреса није исправан", + "The given IP range is not valid for IPv4" : "Дати опсег ИП адреса није исправан за IPv4", + "The given IP range is not valid for IPv6" : "Дати опсег ИП адреса није исправан за IPv6", + "The given time span is invalid" : "Дати временски оквир није исправан", + "The given start time is invalid" : "Дато време почетка није исправно", + "The given end time is invalid" : "Дато време краја није исправно", + "The given group does not exist" : "Дата група не постоји", + "Check %s is invalid or does not exist" : "Проверите да ли је %s неисправно или не постоји", + "Operation #%s does not exist" : "Операција #%s не постоји", + "Operation %s does not exist" : "Операција %s не постоји", + "Operation %s is invalid" : "Операција %s није исправна", + "Check %s does not exist" : "Проверите да ли %s постоји", + "Check %s is invalid" : "Проверите да ли је %s исправно", + "Check #%s does not exist" : "Проверите да ли #%s постоји", + "Workflow" : "Процес рада", + "Open documentation" : "Отвори документацију", + "Add rule group" : "Додај групу правила", + "Short rule description" : "Кратки опис правила", + "Add rule" : "Додај правило", + "Reset" : "Ресетуј", + "Save" : "Сачувај", + "Saving…" : "Чувам…", + "Loading…" : "Учитавање…", + "Successfully saved" : "Успешно сачувано", + "File mime type" : "MIME тип фајла" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file |