aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/comments/l10n/pl.js24
-rw-r--r--apps/comments/l10n/pl.json24
-rw-r--r--apps/comments/l10n/zh_CN.js8
-rw-r--r--apps/comments/l10n/zh_CN.json8
-rw-r--r--apps/dav/lib/CardDAV/CardDavBackend.php27
-rw-r--r--apps/dav/lib/HookManager.php2
-rw-r--r--apps/dav/tests/unit/CardDAV/CardDavBackendTest.php2
-rw-r--r--apps/dav/tests/unit/DAV/HookManagerTest.php2
-rw-r--r--apps/federatedfilesharing/l10n/sq.js3
-rw-r--r--apps/federatedfilesharing/l10n/sq.json3
-rw-r--r--apps/federatedfilesharing/lib/Notifier.php2
-rw-r--r--apps/federation/l10n/ja.js6
-rw-r--r--apps/federation/l10n/ja.json6
-rw-r--r--apps/files/css/files.css4
-rw-r--r--apps/files/js/search.js4
-rw-r--r--apps/files/l10n/ia.js6
-rw-r--r--apps/files/l10n/ia.json6
-rw-r--r--apps/files/l10n/lv.js5
-rw-r--r--apps/files/l10n/lv.json5
-rw-r--r--apps/files/lib/AppInfo/Application.php1
-rw-r--r--apps/files/lib/Controller/ViewController.php6
-rw-r--r--apps/files/tests/Controller/ViewControllerTest.php6
-rw-r--r--apps/files_external/l10n/pl.js11
-rw-r--r--apps/files_external/l10n/pl.json11
-rw-r--r--apps/files_external/lib/Command/Notify.php11
-rw-r--r--apps/files_sharing/l10n/zh_CN.js2
-rw-r--r--apps/files_sharing/l10n/zh_CN.json2
-rw-r--r--apps/files_trashbin/l10n/ia.js2
-rw-r--r--apps/files_trashbin/l10n/ia.json2
-rw-r--r--apps/sharebymail/l10n/de_DE.js2
-rw-r--r--apps/sharebymail/l10n/de_DE.json2
-rw-r--r--apps/sharebymail/l10n/id.js24
-rw-r--r--apps/sharebymail/l10n/id.json22
-rw-r--r--apps/systemtags/l10n/pl.js66
-rw-r--r--apps/systemtags/l10n/pl.json66
-rw-r--r--apps/twofactor_backupcodes/js/settingsview.js20
-rw-r--r--apps/updatenotification/l10n/ia.js2
-rw-r--r--apps/updatenotification/l10n/ia.json2
-rw-r--r--apps/updatenotification/l10n/id.js9
-rw-r--r--apps/updatenotification/l10n/id.json9
-rw-r--r--apps/user_ldap/appinfo/info.xml8
-rw-r--r--apps/user_ldap/l10n/ast.js4
-rw-r--r--apps/user_ldap/l10n/ast.json4
-rw-r--r--apps/user_ldap/l10n/cs_CZ.js4
-rw-r--r--apps/user_ldap/l10n/cs_CZ.json4
-rw-r--r--apps/user_ldap/l10n/de.js4
-rw-r--r--apps/user_ldap/l10n/de.json4
-rw-r--r--apps/user_ldap/l10n/de_DE.js4
-rw-r--r--apps/user_ldap/l10n/de_DE.json4
-rw-r--r--apps/user_ldap/l10n/en_GB.js4
-rw-r--r--apps/user_ldap/l10n/en_GB.json4
-rw-r--r--apps/user_ldap/l10n/es.js4
-rw-r--r--apps/user_ldap/l10n/es.json4
-rw-r--r--apps/user_ldap/l10n/fr.js4
-rw-r--r--apps/user_ldap/l10n/fr.json4
-rw-r--r--apps/user_ldap/l10n/he.js4
-rw-r--r--apps/user_ldap/l10n/he.json4
-rw-r--r--apps/user_ldap/l10n/id.js4
-rw-r--r--apps/user_ldap/l10n/id.json4
-rw-r--r--apps/user_ldap/l10n/it.js4
-rw-r--r--apps/user_ldap/l10n/it.json4
-rw-r--r--apps/user_ldap/l10n/ja.js4
-rw-r--r--apps/user_ldap/l10n/ja.json4
-rw-r--r--apps/user_ldap/l10n/nb_NO.js4
-rw-r--r--apps/user_ldap/l10n/nb_NO.json4
-rw-r--r--apps/user_ldap/l10n/nl.js4
-rw-r--r--apps/user_ldap/l10n/nl.json4
-rw-r--r--apps/user_ldap/l10n/pl.js20
-rw-r--r--apps/user_ldap/l10n/pl.json20
-rw-r--r--apps/user_ldap/l10n/pt_BR.js4
-rw-r--r--apps/user_ldap/l10n/pt_BR.json4
-rw-r--r--apps/user_ldap/l10n/pt_PT.js4
-rw-r--r--apps/user_ldap/l10n/pt_PT.json4
-rw-r--r--apps/user_ldap/l10n/ru.js4
-rw-r--r--apps/user_ldap/l10n/ru.json4
-rw-r--r--apps/user_ldap/l10n/sl.js4
-rw-r--r--apps/user_ldap/l10n/sl.json4
-rw-r--r--apps/user_ldap/l10n/sq.js4
-rw-r--r--apps/user_ldap/l10n/sq.json4
-rw-r--r--apps/user_ldap/l10n/tr.js4
-rw-r--r--apps/user_ldap/l10n/tr.json4
-rw-r--r--apps/user_ldap/l10n/zh_CN.js4
-rw-r--r--apps/user_ldap/l10n/zh_CN.json4
-rw-r--r--apps/user_ldap/lib/Access.php2
-rw-r--r--apps/user_ldap/lib/Connection.php4
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php8
-rw-r--r--apps/user_ldap/lib/Group_Proxy.php9
-rw-r--r--apps/user_ldap/lib/Mapping/AbstractMapping.php19
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFix.php60
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixGroup.php37
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixInsert.php101
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixUser.php37
-rw-r--r--apps/user_ldap/lib/Proxy.php6
-rw-r--r--apps/user_ldap/templates/part.wizard-userfilter.php2
-rwxr-xr-xapps/user_ldap/tests/.htaccess2
-rw-r--r--apps/user_ldap/tests/Integration/AbstractIntegrationTest.php12
-rw-r--r--apps/user_ldap/tests/Integration/FakeManager.php38
-rw-r--r--apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php86
-rw-r--r--apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php3
-rw-r--r--apps/user_ldap/tests/Mapping/AbstractMappingTest.php22
-rw-r--r--apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php197
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixGroupTest.php50
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixInsertTest.php195
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixUserTest.php46
-rw-r--r--apps/workflowengine/l10n/zh_CN.js2
-rw-r--r--apps/workflowengine/l10n/zh_CN.json2
-rw-r--r--build/.htaccess2
-rw-r--r--config/.htaccess2
-rw-r--r--core/Controller/LoginController.php7
-rw-r--r--core/css/apps.scss5
-rw-r--r--core/css/guest.css109
-rw-r--r--core/css/icons.scss16
-rw-r--r--core/img/actions/screen-off-white.svg10
-rw-r--r--core/img/actions/screen-off.svg4
-rw-r--r--core/img/actions/screen-white.svg10
-rw-r--r--core/img/actions/screen.svg4
-rw-r--r--core/l10n/da.js14
-rw-r--r--core/l10n/da.json14
-rw-r--r--core/l10n/eu.js373
-rw-r--r--core/l10n/eu.json371
-rw-r--r--core/l10n/id.js1
-rw-r--r--core/l10n/id.json1
-rw-r--r--core/l10n/lv.js5
-rw-r--r--core/l10n/lv.json5
-rw-r--r--core/l10n/pl.js5
-rw-r--r--core/l10n/pl.json5
-rw-r--r--core/search/css/results.css1
-rw-r--r--lib/l10n/eu.js185
-rw-r--r--lib/l10n/eu.json183
-rw-r--r--lib/l10n/sk_SK.js8
-rw-r--r--lib/l10n/sk_SK.json8
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php5
-rw-r--r--lib/private/Federation/CloudIdManager.php1
-rw-r--r--lib/private/Files/Cache/Scanner.php4
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheJail.php6
-rw-r--r--lib/private/Files/Storage/DAV.php14
-rw-r--r--lib/private/Files/Storage/Wrapper/Jail.php2
-rw-r--r--lib/private/Files/Storage/Wrapper/PermissionsMask.php9
-rw-r--r--lib/private/Setup.php2
-rw-r--r--lib/private/User/Session.php9
-rw-r--r--lib/private/legacy/helper.php34
-rw-r--r--lib/private/legacy/image.php16
-rw-r--r--lib/private/legacy/user.php13
-rw-r--r--lib/public/IServerContainer.php2
-rw-r--r--resources/codesigning/root.crl26
-rw-r--r--settings/Controller/UsersController.php57
-rw-r--r--settings/js/users/users.js2
-rw-r--r--settings/l10n/de.js2
-rw-r--r--settings/l10n/de.json2
-rw-r--r--settings/l10n/de_DE.js22
-rw-r--r--settings/l10n/de_DE.json22
-rw-r--r--settings/l10n/el.js1
-rw-r--r--settings/l10n/el.json1
-rw-r--r--settings/l10n/es.js2
-rw-r--r--settings/l10n/es.json2
-rw-r--r--settings/l10n/eu.js38
-rw-r--r--settings/l10n/eu.json38
-rw-r--r--settings/l10n/fr.js2
-rw-r--r--settings/l10n/fr.json2
-rw-r--r--settings/l10n/ia.js54
-rw-r--r--settings/l10n/ia.json54
-rw-r--r--settings/l10n/lv.js6
-rw-r--r--settings/l10n/lv.json6
-rw-r--r--settings/l10n/nl.js2
-rw-r--r--settings/l10n/nl.json2
-rw-r--r--settings/l10n/pl.js45
-rw-r--r--settings/l10n/pl.json45
-rw-r--r--settings/l10n/pt_BR.js2
-rw-r--r--settings/l10n/pt_BR.json2
-rw-r--r--settings/l10n/ru.js2
-rw-r--r--settings/l10n/ru.json2
-rw-r--r--settings/templates/users/main.php3
-rw-r--r--tests/Settings/Controller/UsersControllerTest.php168
173 files changed, 3233 insertions, 417 deletions
diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js
index b30b02fa182..2aa06ec36ae 100644
--- a/apps/comments/l10n/pl.js
+++ b/apps/comments/l10n/pl.js
@@ -13,27 +13,27 @@ OC.L10N.register(
"More comments …" : "Więcej komentarzy ...",
"Save" : "Zapisz",
"Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.",
+ "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
"_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś",
- "%1$s commented" : "%1$s skomentował",
- "{author} commented" : "{author} skomentował",
- "You commented on %1$s" : "Skomentowałeś w %1$s",
- "You commented on {file}" : "Skomentowałeś w {file}",
- "%1$s commented on %2$s" : "%1$s skomentował %2$s",
- "{author} commented on {file}" : "{author} skomentował w {file}‭",
+ "You commented" : "Skomentowałeś/-aś",
+ "%1$s commented" : "%1$s skomentował/-a",
+ "{author} commented" : "{author} skomentował/-a",
+ "You commented on %1$s" : "Skomentowałeś/-aś w %1$s",
+ "You commented on {file}" : "Skomentowałeś/-aś w {file}",
+ "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s",
+ "{author} commented on {file}" : "{author} skomentował/-a w {file}‭",
"<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
"A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał o Tobie w komentarzu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał o Tobie w komentarzu “{file}”",
- "Type in a new comment..." : "Wprowadź nowy komentarz...",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”",
+ "Type in a new comment..." : "Napisz nowy komentarz...",
"No other comments available" : "Nie ma więcej komentarzy",
"More comments..." : "Więcej komentarzy...",
"{count} unread comments" : "{count} nieprzeczytanych komentarzy",
- "You commented on %2$s" : "Skomentowałeś %2$s"
+ "You commented on %2$s" : "Skomentowałeś/-aś %2$s"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json
index 7eaeb155e47..14d429f57d5 100644
--- a/apps/comments/l10n/pl.json
+++ b/apps/comments/l10n/pl.json
@@ -11,27 +11,27 @@
"More comments …" : "Więcej komentarzy ...",
"Save" : "Zapisz",
"Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.",
+ "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
"Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
"_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś",
- "%1$s commented" : "%1$s skomentował",
- "{author} commented" : "{author} skomentował",
- "You commented on %1$s" : "Skomentowałeś w %1$s",
- "You commented on {file}" : "Skomentowałeś w {file}",
- "%1$s commented on %2$s" : "%1$s skomentował %2$s",
- "{author} commented on {file}" : "{author} skomentował w {file}‭",
+ "You commented" : "Skomentowałeś/-aś",
+ "%1$s commented" : "%1$s skomentował/-a",
+ "{author} commented" : "{author} skomentował/-a",
+ "You commented on %1$s" : "Skomentowałeś/-aś w %1$s",
+ "You commented on {file}" : "Skomentowałeś/-aś w {file}",
+ "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s",
+ "{author} commented on {file}" : "{author} skomentował/-a w {file}‭",
"<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
"A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał o Tobie w komentarzu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał o Tobie w komentarzu “{file}”",
- "Type in a new comment..." : "Wprowadź nowy komentarz...",
+ "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”",
+ "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”",
+ "Type in a new comment..." : "Napisz nowy komentarz...",
"No other comments available" : "Nie ma więcej komentarzy",
"More comments..." : "Więcej komentarzy...",
"{count} unread comments" : "{count} nieprzeczytanych komentarzy",
- "You commented on %2$s" : "Skomentowałeś %2$s"
+ "You commented on %2$s" : "Skomentowałeś/-aś %2$s"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_CN.js b/apps/comments/l10n/zh_CN.js
index 9a459c92b6e..336636e2bf1 100644
--- a/apps/comments/l10n/zh_CN.js
+++ b/apps/comments/l10n/zh_CN.js
@@ -16,16 +16,16 @@ OC.L10N.register(
"Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
"Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
"Error occurred while posting comment" : "发布评论出错",
- "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
+ "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
"Comment" : "评论",
"You commented" : "您的评论",
"%1$s commented" : "%1$s 已评论",
- "{author} commented" : "{author} 评论了",
- "You commented on %1$s" : "您在 %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>",
+ "<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” 的评论中提到了您",
diff --git a/apps/comments/l10n/zh_CN.json b/apps/comments/l10n/zh_CN.json
index be867c5b856..676ec612d8e 100644
--- a/apps/comments/l10n/zh_CN.json
+++ b/apps/comments/l10n/zh_CN.json
@@ -14,16 +14,16 @@
"Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
"Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
"Error occurred while posting comment" : "发布评论出错",
- "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
+ "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
"Comment" : "评论",
"You commented" : "您的评论",
"%1$s commented" : "%1$s 已评论",
- "{author} commented" : "{author} 评论了",
- "You commented on %1$s" : "您在 %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>",
+ "<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” 的评论中提到了您",
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index a320984c1fe..a6d057452e6 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -195,6 +195,33 @@ class CardDavBackend implements BackendInterface, SyncSupport {
return array_values($addressBooks);
}
+ public function getUsersOwnAddressBooks($principalUri) {
+ $principalUriOriginal = $principalUri;
+ $principalUri = $this->convertPrincipal($principalUri, true);
+ $query = $this->db->getQueryBuilder();
+ $query->select(['id', 'uri', 'displayname', 'principaluri', 'description', 'synctoken'])
+ ->from('addressbooks')
+ ->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri)));
+
+ $addressBooks = [];
+
+ $result = $query->execute();
+ while($row = $result->fetch()) {
+ $addressBooks[$row['id']] = [
+ 'id' => $row['id'],
+ 'uri' => $row['uri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], false),
+ '{DAV:}displayname' => $row['displayname'],
+ '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'],
+ '{http://calendarserver.org/ns/}getctag' => $row['synctoken'],
+ '{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
+ ];
+ }
+ $result->closeCursor();
+
+ return array_values($addressBooks);
+ }
+
private function getUserDisplayName($uid) {
if (!isset($this->userDisplayNames[$uid])) {
$user = $this->userManager->get($uid);
diff --git a/apps/dav/lib/HookManager.php b/apps/dav/lib/HookManager.php
index 26f3895a459..8148df2d37b 100644
--- a/apps/dav/lib/HookManager.php
+++ b/apps/dav/lib/HookManager.php
@@ -96,7 +96,7 @@ class HookManager {
$uid = $params['uid'];
$this->usersToDelete[$uid] = $this->userManager->get($uid);
$this->calendarsToDelete = $this->calDav->getUsersOwnCalendars('principals/users/' . $uid);
- $this->addressBooksToDelete = $this->cardDav->getAddressBooksForUser('principals/users/' . $uid);
+ $this->addressBooksToDelete = $this->cardDav->getUsersOwnAddressBooks('principals/users/' . $uid);
}
public function postDeleteUser($params) {
diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
index f4c321fa6d0..a4445217469 100644
--- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
@@ -273,7 +273,7 @@ class CardDavBackendTest extends TestCase {
// create a new address book
$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
- $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
+ $books = $this->backend->getUsersOwnAddressBooks(self::UNIT_TEST_USER);
$this->assertEquals(1, count($books));
$bookId = $books[0]['id'];
diff --git a/apps/dav/tests/unit/DAV/HookManagerTest.php b/apps/dav/tests/unit/DAV/HookManagerTest.php
index 9579ce1c6d3..375bda9f3c2 100644
--- a/apps/dav/tests/unit/DAV/HookManagerTest.php
+++ b/apps/dav/tests/unit/DAV/HookManagerTest.php
@@ -195,7 +195,7 @@ class HookManagerTest extends TestCase {
$card = $this->getMockBuilder(CardDavBackend::class)
->disableOriginalConstructor()
->getMock();
- $card->expects($this->once())->method('getAddressBooksForUser')->willReturn([
+ $card->expects($this->once())->method('getUsersOwnAddressBooks')->willReturn([
['id' => 'personal']
]);
$card->expects($this->once())->method('deleteAddressBook');
diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js
index 2bbf90d42c0..edf1362df9d 100644
--- a/apps/federatedfilesharing/l10n/sq.js
+++ b/apps/federatedfilesharing/l10n/sq.js
@@ -13,6 +13,9 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
"Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
+ "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
"Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin",
"Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë",
"Storage not valid" : "memorja nuk është e vlefshme",
diff --git a/apps/federatedfilesharing/l10n/sq.json b/apps/federatedfilesharing/l10n/sq.json
index d1828c95eef..4747db18be1 100644
--- a/apps/federatedfilesharing/l10n/sq.json
+++ b/apps/federatedfilesharing/l10n/sq.json
@@ -11,6 +11,9 @@
"Press Ctrl-C to copy." : "Shtypni Ctrl-C për të kopjuar",
"Invalid Federated Cloud ID" : "ID Federated Cloud e pavlefshme",
"Server to server sharing is not enabled on this server" : "Shpërndarja server në server nuk është e mundësuar në këtë server",
+ "Couldn't establish a federated share." : "Nuk mund të vendosni një shpërndarje të federuar",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Nuk mund të vendoset një shpërndarje e federuar, ndoshta fjalëkalimi ishte gabim.",
+ "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Kërkesa për shpërndarje te federuar ishte e suksesshme, ju do të merrni një ftesë. Kontrolloni njoftimet tuaja.",
"Not allowed to create a federated share with the owner." : "Nuk lejohet te krijoni një shpërndarje të federuar me zotëruesin",
"Invalid or untrusted SSL certificate" : "Çertifikatë SSL e pavlefshme ose e dyshimtë",
"Storage not valid" : "memorja nuk është e vlefshme",
diff --git a/apps/federatedfilesharing/lib/Notifier.php b/apps/federatedfilesharing/lib/Notifier.php
index faf79480b7e..2b7c9f78a75 100644
--- a/apps/federatedfilesharing/lib/Notifier.php
+++ b/apps/federatedfilesharing/lib/Notifier.php
@@ -25,7 +25,6 @@ namespace OCA\FederatedFileSharing;
use OC\HintException;
-use OC\Share\Helper;
use OCP\Contacts\IManager;
use OCP\Federation\ICloudId;
use OCP\Federation\ICloudIdManager;
@@ -63,6 +62,7 @@ class Notifier implements INotifier {
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
+ * @throws \InvalidArgumentException
*/
public function prepare(INotification $notification, $languageCode) {
if ($notification->getApp() !== 'files_sharing') {
diff --git a/apps/federation/l10n/ja.js b/apps/federation/l10n/ja.js
index 88b82a32c43..74939d210b0 100644
--- a/apps/federation/l10n/ja.js
+++ b/apps/federation/l10n/ja.js
@@ -2,14 +2,14 @@ OC.L10N.register(
"federation",
{
"Added to the list of trusted servers" : "信頼済サーバーとしてリストに登録済",
- "Server is already in the list of trusted servers." : "信頼済サイトとして既に登録されています。",
+ "Server is already in the list of trusted servers." : "信頼済サーバーとして既に登録されています。",
"No server to federate with found" : "Nextcloud 連携サーバーはありません。",
"Could not add server" : "サーバーを追加できませんでした",
"Federation" : "連携",
- "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." : "ownCloud 連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
+ "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." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
"Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました",
"Trusted servers" : "信頼済サーバー",
- "+ Add trusted server" : "+ 信頼するサーバーに追加",
+ "+ Add trusted server" : "+ 信頼済サーバーに追加",
"Trusted server" : "信頼済サーバー",
"Add" : "追加",
"Trusted Servers" : "信頼済サーバー",
diff --git a/apps/federation/l10n/ja.json b/apps/federation/l10n/ja.json
index ff7b0faedd3..4fbffc8d573 100644
--- a/apps/federation/l10n/ja.json
+++ b/apps/federation/l10n/ja.json
@@ -1,13 +1,13 @@
{ "translations": {
"Added to the list of trusted servers" : "信頼済サーバーとしてリストに登録済",
- "Server is already in the list of trusted servers." : "信頼済サイトとして既に登録されています。",
+ "Server is already in the list of trusted servers." : "信頼済サーバーとして既に登録されています。",
"No server to federate with found" : "Nextcloud 連携サーバーはありません。",
"Could not add server" : "サーバーを追加できませんでした",
"Federation" : "連携",
- "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." : "ownCloud 連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
+ "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." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。",
"Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました",
"Trusted servers" : "信頼済サーバー",
- "+ Add trusted server" : "+ 信頼するサーバーに追加",
+ "+ Add trusted server" : "+ 信頼済サーバーに追加",
"Trusted server" : "信頼済サーバー",
"Add" : "追加",
"Trusted Servers" : "信頼済サーバー",
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 05b8e58cbe4..54ed05385fa 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -759,10 +759,6 @@ table.dragshadow td.size {
opacity: 0;
}
-#fileList .popovermenu a.action img {
- padding: initial;
-}
-
html.ie8 #controls .button.new {
padding-right: 0;
}
diff --git a/apps/files/js/search.js b/apps/files/js/search.js
index fa79d695165..140a66e346d 100644
--- a/apps/files/js/search.js
+++ b/apps/files/js/search.js
@@ -63,7 +63,7 @@
show size and last modified date on the right */
this.updateLegacyMimetype(result);
- var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1));
+ var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1, result.path.lastIndexOf("/")));
$row.find('td.info div.name').after($pathDiv).text(result.name);
$row.find('td.result a').attr('href', result.link);
@@ -80,7 +80,7 @@
show size and last modified date on the right */
this.updateLegacyMimetype(result);
- var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1));
+ var $pathDiv = $('<div class="path"></div>').text(result.path.substr(1, result.path.lastIndexOf("/")));
$row.find('td.info div.name').after($pathDiv).text(result.name);
$row.find('td.result a').attr('href', result.link);
diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js
index 9a6e177aba9..3e7f9ecc8a5 100644
--- a/apps/files/l10n/ia.js
+++ b/apps/files/l10n/ia.js
@@ -30,7 +30,7 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Impossibile cargar informationes pro file \"{file}\"",
"Files" : "Files",
"Details" : "Detalios",
- "Select" : "Seliger",
+ "Select" : "Selectionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossibile determinar data",
"This operation is forbidden" : "Iste operation es prohibite",
@@ -39,7 +39,7 @@ OC.L10N.register(
"Could not move \"{file}\"" : "Impossibile displaciar \"{file}\"",
"{newName} already exists" : "{newName} ja existe",
"Could not rename \"{fileName}\", it does not exist any more" : "Impossibile renominar \"{fileName}\": illo non existe plus",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Le nomine \"{targetName}\" es ja usate in le dossier \"{dir}\". Per favor, selige un nomine differente.",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Le nomine \"{targetName}\" es ja usate in le dossier \"{dir}\". Per favor, selectiona un nomine differente.",
"Could not rename \"{fileName}\"" : "Impossibile renominar \"{fileName}\"",
"Could not create file \"{file}\"" : "Impossibile crear file \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Impossibile crear file \"{file}\" proque illo ja existe",
@@ -117,7 +117,7 @@ OC.L10N.register(
"No files in here" : "Nulle files ci",
"Upload some content or sync with your devices!" : "Incarga alcun contento o synchronisa con tu apparatos!",
"No entries found in this folder" : "Nulle entratas trovate in iste dossier",
- "Select all" : "Seliger toto",
+ "Select all" : "Selectionar toto",
"Upload too large" : "Incarga troppo grande",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Le files que tu tenta incargar excede le dimension maxime pro incarga de files in iste servitor.",
"No favorites" : "Nulle favoritos",
diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json
index 515cfb51f13..1fb2b87b83d 100644
--- a/apps/files/l10n/ia.json
+++ b/apps/files/l10n/ia.json
@@ -28,7 +28,7 @@
"Could not load info for file \"{file}\"" : "Impossibile cargar informationes pro file \"{file}\"",
"Files" : "Files",
"Details" : "Detalios",
- "Select" : "Seliger",
+ "Select" : "Selectionar",
"Pending" : "Pendente",
"Unable to determine date" : "Impossibile determinar data",
"This operation is forbidden" : "Iste operation es prohibite",
@@ -37,7 +37,7 @@
"Could not move \"{file}\"" : "Impossibile displaciar \"{file}\"",
"{newName} already exists" : "{newName} ja existe",
"Could not rename \"{fileName}\", it does not exist any more" : "Impossibile renominar \"{fileName}\": illo non existe plus",
- "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Le nomine \"{targetName}\" es ja usate in le dossier \"{dir}\". Per favor, selige un nomine differente.",
+ "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Le nomine \"{targetName}\" es ja usate in le dossier \"{dir}\". Per favor, selectiona un nomine differente.",
"Could not rename \"{fileName}\"" : "Impossibile renominar \"{fileName}\"",
"Could not create file \"{file}\"" : "Impossibile crear file \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Impossibile crear file \"{file}\" proque illo ja existe",
@@ -115,7 +115,7 @@
"No files in here" : "Nulle files ci",
"Upload some content or sync with your devices!" : "Incarga alcun contento o synchronisa con tu apparatos!",
"No entries found in this folder" : "Nulle entratas trovate in iste dossier",
- "Select all" : "Seliger toto",
+ "Select all" : "Selectionar toto",
"Upload too large" : "Incarga troppo grande",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Le files que tu tenta incargar excede le dimension maxime pro incarga de files in iste servitor.",
"No favorites" : "Nulle favoritos",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index c19df9fb5f3..6a595a94239 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -174,6 +174,9 @@ OC.L10N.register(
"%2$s restored %1$s" : "%2$s atjaunoja %1$s",
"Changed by %2$s" : "Izmainīja %2$s",
"Deleted by %2$s" : "Dzēsa %2$s",
- "Restored by %2$s" : "Atjaunoja %2$s"
+ "Restored by %2$s" : "Atjaunoja %2$s",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} stundas atlicis","{hours}:{minutes}:{seconds} stundas atlicis","{hours}:{minutes}:{seconds} stundas atlikušas"],
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minūtes atlikušas","{minutes}:{seconds} minūtes atlikušas","{minutes}:{seconds} minūtes atlikušas"],
+ "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekundes atlikušas","{seconds} sekundes atlikušas","{seconds} sekundes atlikušas"]
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 7e27a04d4c7..8c1a244c30e 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -172,6 +172,9 @@
"%2$s restored %1$s" : "%2$s atjaunoja %1$s",
"Changed by %2$s" : "Izmainīja %2$s",
"Deleted by %2$s" : "Dzēsa %2$s",
- "Restored by %2$s" : "Atjaunoja %2$s"
+ "Restored by %2$s" : "Atjaunoja %2$s",
+ "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} stundas atlicis","{hours}:{minutes}:{seconds} stundas atlicis","{hours}:{minutes}:{seconds} stundas atlikušas"],
+ "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minūtes atlikušas","{minutes}:{seconds} minūtes atlikušas","{minutes}:{seconds} minūtes atlikušas"],
+ "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekundes atlikušas","{seconds} sekundes atlikušas","{seconds} sekundes atlikušas"]
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php
index 4e5ec03eecf..43c977655c3 100644
--- a/apps/files/lib/AppInfo/Application.php
+++ b/apps/files/lib/AppInfo/Application.php
@@ -57,7 +57,6 @@ class Application extends App {
$c->query('AppName'),
$c->query('Request'),
$server->getURLGenerator(),
- $server->getNavigationManager(),
$c->query('L10N'),
$server->getConfig(),
$server->getEventDispatcher(),
diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php
index 6f74fec861f..788840ff1cc 100644
--- a/apps/files/lib/Controller/ViewController.php
+++ b/apps/files/lib/Controller/ViewController.php
@@ -55,8 +55,6 @@ class ViewController extends Controller {
protected $request;
/** @var IURLGenerator */
protected $urlGenerator;
- /** @var INavigationManager */
- protected $navigationManager;
/** @var IL10N */
protected $l10n;
/** @var IConfig */
@@ -74,7 +72,6 @@ class ViewController extends Controller {
* @param string $appName
* @param IRequest $request
* @param IURLGenerator $urlGenerator
- * @param INavigationManager $navigationManager
* @param IL10N $l10n
* @param IConfig $config
* @param EventDispatcherInterface $eventDispatcherInterface
@@ -85,7 +82,6 @@ class ViewController extends Controller {
public function __construct($appName,
IRequest $request,
IURLGenerator $urlGenerator,
- INavigationManager $navigationManager,
IL10N $l10n,
IConfig $config,
EventDispatcherInterface $eventDispatcherInterface,
@@ -97,7 +93,6 @@ class ViewController extends Controller {
$this->appName = $appName;
$this->request = $request;
$this->urlGenerator = $urlGenerator;
- $this->navigationManager = $navigationManager;
$this->l10n = $l10n;
$this->config = $config;
$this->eventDispatcher = $eventDispatcherInterface;
@@ -244,7 +239,6 @@ class ViewController extends Controller {
$params['fileNotFound'] = $fileNotFound ? 1 : 0;
$params['appNavigation'] = $nav;
$params['appContents'] = $contentItems;
- $this->navigationManager->setActiveEntry('files_index');
$response = new TemplateResponse(
$this->appName,
diff --git a/apps/files/tests/Controller/ViewControllerTest.php b/apps/files/tests/Controller/ViewControllerTest.php
index 25445567ea9..1d8c2956551 100644
--- a/apps/files/tests/Controller/ViewControllerTest.php
+++ b/apps/files/tests/Controller/ViewControllerTest.php
@@ -33,8 +33,6 @@ use OCP\Template;
use Test\TestCase;
use OCP\IRequest;
use OCP\IURLGenerator;
-use OCP\AppFramework\Http\RedirectResponse;
-use OCP\INavigationManager;
use OCP\IL10N;
use OCP\IConfig;
use OCP\IUserSession;
@@ -51,8 +49,6 @@ class ViewControllerTest extends TestCase {
private $request;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
private $urlGenerator;
- /** @var INavigationManager */
- private $navigationManager;
/** @var IL10N */
private $l10n;
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
@@ -74,7 +70,6 @@ class ViewControllerTest extends TestCase {
parent::setUp();
$this->request = $this->getMockBuilder('\OCP\IRequest')->getMock();
$this->urlGenerator = $this->getMockBuilder('\OCP\IURLGenerator')->getMock();
- $this->navigationManager = $this->getMockBuilder('\OCP\INavigationManager')->getMock();
$this->l10n = $this->getMockBuilder('\OCP\IL10N')->getMock();
$this->config = $this->getMockBuilder('\OCP\IConfig')->getMock();
$this->eventDispatcher = $this->getMockBuilder('\Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock();
@@ -93,7 +88,6 @@ class ViewControllerTest extends TestCase {
'files',
$this->request,
$this->urlGenerator,
- $this->navigationManager,
$this->l10n,
$this->config,
$this->eventDispatcher,
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index a4b295cb603..eaebf87fb2b 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -45,8 +45,11 @@ OC.L10N.register(
"Invalid storage backend \"%s\"" : "Nieprawidłowy magazyn zaplecza \"%s\"",
"Not permitted to use backend \"%s\"" : "Nie można używać powrotu \"%s\"",
"Not permitted to use authentication mechanism \"%s\"" : "Nie można używać mechanizmu uwierzytelnienia \"%s\"",
+ "Unsatisfied backend parameters" : "Niepoprawne parametry backendu",
+ "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia",
"Insufficient data: %s" : "Niewystarczające dane: %s",
"%s" : "%s",
+ "Storage with id \"%i\" is not user editable" : "Magazyn o id \"%i\" nie jest edytowalny dla użytkowników",
"Access key" : "Klucz dostępu",
"Secret key" : "Sekretny klucz",
"Builtin" : "Wbudowane",
@@ -59,10 +62,14 @@ OC.L10N.register(
"Client secret" : "Hasło klienta",
"OpenStack" : "OpenStack",
"Tenant name" : "Nazwa dzierżawcy",
+ "Identity endpoint URL" : "Adres końcówki identyfikującej",
"Rackspace" : "Rackspace",
"API key" : "Klucz API",
"Global credentials" : "Globalne poświadczenia",
+ "Log-in credentials, save in database" : "Poświadczenia logowania, zapisz w bazie danych",
"Username and password" : "Nazwa użytkownika i hasło",
+ "Log-in credentials, save in session" : "Poświadczenia logowania, zapisz w sesji",
+ "User entered, store in database" : "Użytkownik wpisał, zapisz w bazie danych",
"RSA public key" : "Klucz publiczny RSA",
"Public key" : "Klucz publiczny",
"Amazon S3" : "Amazon S3",
@@ -94,7 +101,11 @@ OC.L10N.register(
"Username as share" : "Użytkownik jako zasób",
"OpenStack Object Storage" : "Magazyn obiektów OpenStack",
"Service name" : "Nazwa serwisu",
+ "Request timeout (seconds)" : "Limit czasu żądania (sekundy)",
"External storages" : "Zewnętrzne zasoby dyskowe",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Obsługa cURL w PHP jest wyłączona lub nie jest zainstalowana. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby ją zainstalował.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Obsługa FTP w PHP jest wyłączona lub nie jest zainstalowana. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby ją zainstalował.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nie jest zainstalowane. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby dokonał instalacji.",
"No external storage configured" : "Nie skonfigurowano żadnego zewnętrznego nośnika",
"You can add external storages in the personal settings" : "W ustawieniach osobistych możesz dodać zewnętrzne magazyny przechowywania",
"Name" : "Nazwa",
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 190f418a5d8..e5034805d0b 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -43,8 +43,11 @@
"Invalid storage backend \"%s\"" : "Nieprawidłowy magazyn zaplecza \"%s\"",
"Not permitted to use backend \"%s\"" : "Nie można używać powrotu \"%s\"",
"Not permitted to use authentication mechanism \"%s\"" : "Nie można używać mechanizmu uwierzytelnienia \"%s\"",
+ "Unsatisfied backend parameters" : "Niepoprawne parametry backendu",
+ "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia",
"Insufficient data: %s" : "Niewystarczające dane: %s",
"%s" : "%s",
+ "Storage with id \"%i\" is not user editable" : "Magazyn o id \"%i\" nie jest edytowalny dla użytkowników",
"Access key" : "Klucz dostępu",
"Secret key" : "Sekretny klucz",
"Builtin" : "Wbudowane",
@@ -57,10 +60,14 @@
"Client secret" : "Hasło klienta",
"OpenStack" : "OpenStack",
"Tenant name" : "Nazwa dzierżawcy",
+ "Identity endpoint URL" : "Adres końcówki identyfikującej",
"Rackspace" : "Rackspace",
"API key" : "Klucz API",
"Global credentials" : "Globalne poświadczenia",
+ "Log-in credentials, save in database" : "Poświadczenia logowania, zapisz w bazie danych",
"Username and password" : "Nazwa użytkownika i hasło",
+ "Log-in credentials, save in session" : "Poświadczenia logowania, zapisz w sesji",
+ "User entered, store in database" : "Użytkownik wpisał, zapisz w bazie danych",
"RSA public key" : "Klucz publiczny RSA",
"Public key" : "Klucz publiczny",
"Amazon S3" : "Amazon S3",
@@ -92,7 +99,11 @@
"Username as share" : "Użytkownik jako zasób",
"OpenStack Object Storage" : "Magazyn obiektów OpenStack",
"Service name" : "Nazwa serwisu",
+ "Request timeout (seconds)" : "Limit czasu żądania (sekundy)",
"External storages" : "Zewnętrzne zasoby dyskowe",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Obsługa cURL w PHP jest wyłączona lub nie jest zainstalowana. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby ją zainstalował.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Obsługa FTP w PHP jest wyłączona lub nie jest zainstalowana. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby ją zainstalował.",
+ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nie jest zainstalowane. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby dokonał instalacji.",
"No external storage configured" : "Nie skonfigurowano żadnego zewnętrznego nośnika",
"You can add external storages in the personal settings" : "W ustawieniach osobistych możesz dodać zewnętrzne magazyny przechowywania",
"Name" : "Nazwa",
diff --git a/apps/files_external/lib/Command/Notify.php b/apps/files_external/lib/Command/Notify.php
index a55b16a45c4..6bb56373d33 100644
--- a/apps/files_external/lib/Command/Notify.php
+++ b/apps/files_external/lib/Command/Notify.php
@@ -184,19 +184,24 @@ class Notify extends Base {
$storage->file_put_contents('/.nc_test_file.txt', 'test content');
$storage->mkdir('/.nc_test_folder');
$storage->file_put_contents('/.nc_test_folder/subfile.txt', 'test content');
+
+ usleep(100 * 1000); //time for all changes to be processed
+ $changes = $notifyHandler->getChanges();
+
$storage->unlink('/.nc_test_file.txt');
$storage->unlink('/.nc_test_folder/subfile.txt');
$storage->rmdir('/.nc_test_folder');
+
usleep(100 * 1000); //time for all changes to be processed
+ $notifyHandler->getChanges(); // flush
$foundRootChange = false;
$foundSubfolderChange = false;
- $changes = $notifyHandler->getChanges();
foreach ($changes as $change) {
- if ($change->getPath() === '/.nc_test_file.txt') {
+ if ($change->getPath() === '/.nc_test_file.txt' || $change->getPath() === '.nc_test_file.txt') {
$foundRootChange = true;
- } else if ($change->getPath() === '/.nc_test_folder/subfile.txt') {
+ } else if ($change->getPath() === '/.nc_test_folder/subfile.txt' || $change->getPath() === '.nc_test_folder/subfile.txt') {
$foundSubfolderChange = true;
}
}
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index 2dcf3d54abe..41fd4fd043f 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -26,6 +26,7 @@ OC.L10N.register(
"Shared with group {group}" : "分享到群组 {group}",
"Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
"{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "You removed group {group} from {file}" : "已移除组 {group} 从 {file}",
"Shared as public link" : "共享为公开链接",
"Removed public link" : "移除公开链接",
"Public link expired" : "公开链接已过期",
@@ -37,6 +38,7 @@ OC.L10N.register(
"Shared with {user}" : "与 {user} 分享",
"Removed share for {user}" : "移除给 {user} 的共享",
"Shared by {actor}" : "由 {actor} 共享",
+ "{actor} removed share" : "{actor} 移除共享",
"{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
"A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
"A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index 095c332c2ed..43679194092 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -24,6 +24,7 @@
"Shared with group {group}" : "分享到群组 {group}",
"Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
"{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "You removed group {group} from {file}" : "已移除组 {group} 从 {file}",
"Shared as public link" : "共享为公开链接",
"Removed public link" : "移除公开链接",
"Public link expired" : "公开链接已过期",
@@ -35,6 +36,7 @@
"Shared with {user}" : "与 {user} 分享",
"Removed share for {user}" : "移除给 {user} 的共享",
"Shared by {actor}" : "由 {actor} 共享",
+ "{actor} removed share" : "{actor} 移除共享",
"{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
"A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ",
"A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。",
diff --git a/apps/files_trashbin/l10n/ia.js b/apps/files_trashbin/l10n/ia.js
index 624cb635dae..804989e3918 100644
--- a/apps/files_trashbin/l10n/ia.js
+++ b/apps/files_trashbin/l10n/ia.js
@@ -14,7 +14,7 @@ OC.L10N.register(
"No deleted files" : "Nulle files delite",
"You will be able to recover deleted files from here" : "Tu potera recuperar files delite desde ci",
"No entries found in this folder" : "Nulle entratas trovate in iste dossier",
- "Select all" : "Seliger toto",
+ "Select all" : "Selectionar toto",
"Name" : "Nomine",
"Deleted" : "Delite"
},
diff --git a/apps/files_trashbin/l10n/ia.json b/apps/files_trashbin/l10n/ia.json
index b3e7af84df0..51e4f4e4b89 100644
--- a/apps/files_trashbin/l10n/ia.json
+++ b/apps/files_trashbin/l10n/ia.json
@@ -12,7 +12,7 @@
"No deleted files" : "Nulle files delite",
"You will be able to recover deleted files from here" : "Tu potera recuperar files delite desde ci",
"No entries found in this folder" : "Nulle entratas trovate in iste dossier",
- "Select all" : "Seliger toto",
+ "Select all" : "Selectionar toto",
"Name" : "Nomine",
"Deleted" : "Delite"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/sharebymail/l10n/de_DE.js b/apps/sharebymail/l10n/de_DE.js
index 68ec421c7e7..683bc539a23 100644
--- a/apps/sharebymail/l10n/de_DE.js
+++ b/apps/sharebymail/l10n/de_DE.js
@@ -16,7 +16,7 @@ OC.L10N.register(
"Failed to create the E-mail" : "Erstellen der E-Mail fehlgeschlagen",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« im Auftrag von %s mit Ihnen geteilt.\n\n%s\n",
- "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« mit Dir geteilt.\n\n%s\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« mit Ihnen geteilt.\n\n%s\n",
"Cheers!" : "Noch einen schönen Tag!",
"Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hallo,<br><br>%s hat <a href=\"%s\">%s</a> im Auftrag von %s mit Ihnen geteilt.<br><br>",
"Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hallo,<br><br>%s hat <a href=\"%s\">%s</a> mit Ihnen geteilt.<br><br>"
diff --git a/apps/sharebymail/l10n/de_DE.json b/apps/sharebymail/l10n/de_DE.json
index 744813ac39c..9150dee8188 100644
--- a/apps/sharebymail/l10n/de_DE.json
+++ b/apps/sharebymail/l10n/de_DE.json
@@ -14,7 +14,7 @@
"Failed to create the E-mail" : "Erstellen der E-Mail fehlgeschlagen",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« im Auftrag von %s mit Ihnen geteilt.\n\n%s\n",
- "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« mit Dir geteilt.\n\n%s\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo,\n\n%s hat »%s« mit Ihnen geteilt.\n\n%s\n",
"Cheers!" : "Noch einen schönen Tag!",
"Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hallo,<br><br>%s hat <a href=\"%s\">%s</a> im Auftrag von %s mit Ihnen geteilt.<br><br>",
"Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hallo,<br><br>%s hat <a href=\"%s\">%s</a> mit Ihnen geteilt.<br><br>"
diff --git a/apps/sharebymail/l10n/id.js b/apps/sharebymail/l10n/id.js
new file mode 100644
index 00000000000..60e6a7eb561
--- /dev/null
+++ b/apps/sharebymail/l10n/id.js
@@ -0,0 +1,24 @@
+OC.L10N.register(
+ "sharebymail",
+ {
+ "Shared with %1$s" : "Berbagi dengan %1$s",
+ "Shared with {email}" : "Berbagi dengan {email}",
+ "Shared with %1$s by %2$s" : "Berbagi dengan %1$s oleh %2$s",
+ "Shared with {email} by {actor}" : "Berbagi dengan {email} oleh {actor}",
+ "You shared %1$s with %2$s by mail" : "Anda membagikan %1$s dengan %2$s lewat surel",
+ "You shared {file} with {email} by mail" : "Anda membagikan {file} dengan {email} lewat surel",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s membagikan %1$s dengan %2$s lewat surel",
+ "{actor} shared {file} with {email} by mail" : "{actor} membagikan {file} dengan {email} lewat surel",
+ "Sharing %s failed, this item is already shared with %s" : "Berbagi %s gagal, item ini telah dibagikan dengan %s",
+ "Failed to send share by E-mail" : "Gagal untuk mengirim berbagi lewat surel",
+ "%s shared »%s« with you" : "%s membagikan »%s« dengan anda",
+ "%s shared »%s« with you on behalf of %s" : "%s membagikan »%s« dengan anda atas nama %s",
+ "Failed to create the E-mail" : "Gagal untuk membuat surel",
+ "Could not find share" : "Tidak menemukan berbagi",
+ "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hai bro,\n\n%s membagikan »%s« dengan anda atas nama %s.\n\n%s\n\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hai bro,\n\n%s membagikan »%s« dengan anda.\n\n%s\n\n",
+ "Cheers!" : "Senyum!",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hai bro,<br><br>%s membagikan <a href=\"%s\">%s</a> dengan anda atas nama %s.<br><br>",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hai bro,<br><br>%s membagikan <a href=\"%s\">%s</a> dengan anda.<br><br>"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/sharebymail/l10n/id.json b/apps/sharebymail/l10n/id.json
new file mode 100644
index 00000000000..97e987101cb
--- /dev/null
+++ b/apps/sharebymail/l10n/id.json
@@ -0,0 +1,22 @@
+{ "translations": {
+ "Shared with %1$s" : "Berbagi dengan %1$s",
+ "Shared with {email}" : "Berbagi dengan {email}",
+ "Shared with %1$s by %2$s" : "Berbagi dengan %1$s oleh %2$s",
+ "Shared with {email} by {actor}" : "Berbagi dengan {email} oleh {actor}",
+ "You shared %1$s with %2$s by mail" : "Anda membagikan %1$s dengan %2$s lewat surel",
+ "You shared {file} with {email} by mail" : "Anda membagikan {file} dengan {email} lewat surel",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s membagikan %1$s dengan %2$s lewat surel",
+ "{actor} shared {file} with {email} by mail" : "{actor} membagikan {file} dengan {email} lewat surel",
+ "Sharing %s failed, this item is already shared with %s" : "Berbagi %s gagal, item ini telah dibagikan dengan %s",
+ "Failed to send share by E-mail" : "Gagal untuk mengirim berbagi lewat surel",
+ "%s shared »%s« with you" : "%s membagikan »%s« dengan anda",
+ "%s shared »%s« with you on behalf of %s" : "%s membagikan »%s« dengan anda atas nama %s",
+ "Failed to create the E-mail" : "Gagal untuk membuat surel",
+ "Could not find share" : "Tidak menemukan berbagi",
+ "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hai bro,\n\n%s membagikan »%s« dengan anda atas nama %s.\n\n%s\n\n",
+ "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hai bro,\n\n%s membagikan »%s« dengan anda.\n\n%s\n\n",
+ "Cheers!" : "Senyum!",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hai bro,<br><br>%s membagikan <a href=\"%s\">%s</a> dengan anda atas nama %s.<br><br>",
+ "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hai bro,<br><br>%s membagikan <a href=\"%s\">%s</a> dengan anda.<br><br>"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js
index fca05665ec8..c4aef7de7e5 100644
--- a/apps/systemtags/l10n/pl.js
+++ b/apps/systemtags/l10n/pl.js
@@ -2,24 +2,66 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Etykiety",
+ "Update" : "Uaktualnij",
+ "Create" : "Utwórz",
+ "Select tag…" : "Wybierz etykietę...",
"Tagged files" : "Otagowane pliki",
"Select tags to filter by" : "Wybierz tagi do filtru",
+ "No tags found" : "Nie znaleziono etykiet",
"Please select tags to filter by" : "Proszę wybrać tagi do filtrów",
"No files found for the selected tags" : "Nie znaleziono plików dla wybranych etykiet",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System etykiet</strong> dla pliku został zmieniony",
- "%1$s assigned system tag %3$s" : "%1$s przypisywalny system etykiet%3$s",
- "%1$s unassigned system tag %3$s" : "%1$s nieprzypisany system etykiet%3$s",
- "%1$s created system tag %2$s" : "%1$s stworzony system etykiet%2$s",
- "%1$s deleted system tag %2$s" : "%1$s usunięty system etykiet%2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizowany system etykiet%3$s do %2$s",
- "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisywalny system etykiet%3$s do %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s nieprzypisany system etykiet %3$s z %2$s",
- "%s (restricted)" : "%s (ograniczone)",
+ "Added system tag %1$s" : "Dodano etykietę systemową %1$s",
+ "Added system tag {systemtag}" : "Dodano etykietę systemową {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s dodał/-a etykietę systemową %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} dodał/-a etykietę systemową {systemtag}",
+ "Removed system tag %1$s" : "Usunięto etykietę systemową %1$s",
+ "Removed system tag {systemtag}" : "Usunięto etykietą systemową",
+ "%1$s removed system tag %2$s" : "%1$s usunął/-ęła etykietę systemową %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} usunął/-ęła etykietę systemową {systemtag}",
+ "You created system tag %1$s" : "Utworzyłeś/-aś etykietę systemową %1$s",
+ "You created system tag {systemtag}" : "Utworzyłeś/-aś etykietę systemową {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s utworzył/-a etykiete systemową %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} utworzył/-a etykietę systemową {systemtag}",
+ "You deleted system tag %1$s" : "Skasowałeś/-aś etykietę systemową %1$s",
+ "You deleted system tag {systemtag}" : "Usunąłeś-/ał etykietę systemową {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s usunął/-ęła etykietę systemą %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} usunął/-ęła etykietę systemową {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Zaktualizowałeś/-aś etykietę systemową %2$s do %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Zaktualizowałeś/-aś etykietę systemową {oldsystemtag} do {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizował/-a etykietę systemową %3$s do %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} zaktualizował/-a etykietę systemową {oldsystemtag} do {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Dodałeś/-aś etykietę systemową %2$s do %1$s",
+ "You added system tag {systemtag} to {file}" : "Dodałeś/-aś etykietę systemową {systemtag} do {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s dodał/-a etykiete systemową %3$s do %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} dodał/-a etykiete systemową {systemtag} do {file}",
+ "You removed system tag %2$s from %1$s" : "Usunąłeś/-ęłaś etykiete systemową %2$s z %1$s",
+ "You removed system tag {systemtag} from {file}" : "Usunąłeś/-ęłaś etykietę systemową {systemtag} z {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s usunął/-ęła etykietę systemową %3$s z %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} usunął/-ęła etykietę systemową {systemtag} z {file}",
+ "%s (restricted)" : "%s (ograniczony)",
"%s (invisible)" : "%s (niewidoczny)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Etykieta systemowa</strong> dla pliku została zmieniona",
+ "Collaborative tags" : "Wspólne etykiety",
+ "Name" : "Nazwa",
+ "Delete" : "Usuń",
+ "Public" : "Publiczne",
+ "Restricted" : "Ograniczone",
+ "Invisible" : "Niewidoczne",
+ "Reset" : "Reset",
"No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
- "Name" : "Nazwa",
"Size" : "Rozmiar",
- "Modified" : "Modyfikacja"
+ "Modified" : "Modyfikacja",
+ "You assigned system tag %3$s" : "Przypisałeś/-aś etykietę systemową %3$s",
+ "%1$s assigned system tag %3$s" : "%1$s przypisał/-a etykietę systemową %3$s",
+ "You unassigned system tag %3$s" : "Usunąłeś/-ałaś przypisanie etykiety systemowej %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s usunął/-ęła przypisanie etykiety systemowej %3$s",
+ "You created system tag %2$s" : "Utworzyłeś/-aś etykiete systemową %2$s",
+ "You deleted system tag %2$s" : "Usunąłeś/-ęłaś etykietę systemową %2$s",
+ "You updated system tag %3$s to %2$s" : "Zaktualizowałeś/-aś etykietę systemową %3$s do %2$s",
+ "You assigned system tag %3$s to %2$s" : "Przypisałeś/-aś etykietę systemową %3$s do %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisał/-a etykietę systemową %3$s do %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Usunałeś/-aś przypisanie etykiety systemowej %3$s z %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s usunął/-ęła przypisanie etykiety systemowej %3$s z %2$s"
},
-"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json
index 97ae0230be4..57f92b241bb 100644
--- a/apps/systemtags/l10n/pl.json
+++ b/apps/systemtags/l10n/pl.json
@@ -1,23 +1,65 @@
{ "translations": {
"Tags" : "Etykiety",
+ "Update" : "Uaktualnij",
+ "Create" : "Utwórz",
+ "Select tag…" : "Wybierz etykietę...",
"Tagged files" : "Otagowane pliki",
"Select tags to filter by" : "Wybierz tagi do filtru",
+ "No tags found" : "Nie znaleziono etykiet",
"Please select tags to filter by" : "Proszę wybrać tagi do filtrów",
"No files found for the selected tags" : "Nie znaleziono plików dla wybranych etykiet",
- "<strong>System tags</strong> for a file have been modified" : "<strong>System etykiet</strong> dla pliku został zmieniony",
- "%1$s assigned system tag %3$s" : "%1$s przypisywalny system etykiet%3$s",
- "%1$s unassigned system tag %3$s" : "%1$s nieprzypisany system etykiet%3$s",
- "%1$s created system tag %2$s" : "%1$s stworzony system etykiet%2$s",
- "%1$s deleted system tag %2$s" : "%1$s usunięty system etykiet%2$s",
- "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizowany system etykiet%3$s do %2$s",
- "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisywalny system etykiet%3$s do %2$s",
- "%1$s unassigned system tag %3$s from %2$s" : "%1$s nieprzypisany system etykiet %3$s z %2$s",
- "%s (restricted)" : "%s (ograniczone)",
+ "Added system tag %1$s" : "Dodano etykietę systemową %1$s",
+ "Added system tag {systemtag}" : "Dodano etykietę systemową {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s dodał/-a etykietę systemową %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} dodał/-a etykietę systemową {systemtag}",
+ "Removed system tag %1$s" : "Usunięto etykietę systemową %1$s",
+ "Removed system tag {systemtag}" : "Usunięto etykietą systemową",
+ "%1$s removed system tag %2$s" : "%1$s usunął/-ęła etykietę systemową %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} usunął/-ęła etykietę systemową {systemtag}",
+ "You created system tag %1$s" : "Utworzyłeś/-aś etykietę systemową %1$s",
+ "You created system tag {systemtag}" : "Utworzyłeś/-aś etykietę systemową {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s utworzył/-a etykiete systemową %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} utworzył/-a etykietę systemową {systemtag}",
+ "You deleted system tag %1$s" : "Skasowałeś/-aś etykietę systemową %1$s",
+ "You deleted system tag {systemtag}" : "Usunąłeś-/ał etykietę systemową {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s usunął/-ęła etykietę systemą %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} usunął/-ęła etykietę systemową {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Zaktualizowałeś/-aś etykietę systemową %2$s do %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Zaktualizowałeś/-aś etykietę systemową {oldsystemtag} do {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizował/-a etykietę systemową %3$s do %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} zaktualizował/-a etykietę systemową {oldsystemtag} do {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Dodałeś/-aś etykietę systemową %2$s do %1$s",
+ "You added system tag {systemtag} to {file}" : "Dodałeś/-aś etykietę systemową {systemtag} do {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s dodał/-a etykiete systemową %3$s do %2$s",
+ "{actor} added system tag {systemtag} to {file}" : "{actor} dodał/-a etykiete systemową {systemtag} do {file}",
+ "You removed system tag %2$s from %1$s" : "Usunąłeś/-ęłaś etykiete systemową %2$s z %1$s",
+ "You removed system tag {systemtag} from {file}" : "Usunąłeś/-ęłaś etykietę systemową {systemtag} z {file}",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s usunął/-ęła etykietę systemową %3$s z %2$s",
+ "{actor} removed system tag {systemtag} from {file}" : "{actor} usunął/-ęła etykietę systemową {systemtag} z {file}",
+ "%s (restricted)" : "%s (ograniczony)",
"%s (invisible)" : "%s (niewidoczny)",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>Etykieta systemowa</strong> dla pliku została zmieniona",
+ "Collaborative tags" : "Wspólne etykiety",
+ "Name" : "Nazwa",
+ "Delete" : "Usuń",
+ "Public" : "Publiczne",
+ "Restricted" : "Ograniczone",
+ "Invisible" : "Niewidoczne",
+ "Reset" : "Reset",
"No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
- "Name" : "Nazwa",
"Size" : "Rozmiar",
- "Modified" : "Modyfikacja"
-},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+ "Modified" : "Modyfikacja",
+ "You assigned system tag %3$s" : "Przypisałeś/-aś etykietę systemową %3$s",
+ "%1$s assigned system tag %3$s" : "%1$s przypisał/-a etykietę systemową %3$s",
+ "You unassigned system tag %3$s" : "Usunąłeś/-ałaś przypisanie etykiety systemowej %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s usunął/-ęła przypisanie etykiety systemowej %3$s",
+ "You created system tag %2$s" : "Utworzyłeś/-aś etykiete systemową %2$s",
+ "You deleted system tag %2$s" : "Usunąłeś/-ęłaś etykietę systemową %2$s",
+ "You updated system tag %3$s to %2$s" : "Zaktualizowałeś/-aś etykietę systemową %3$s do %2$s",
+ "You assigned system tag %3$s to %2$s" : "Przypisałeś/-aś etykietę systemową %3$s do %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisał/-a etykietę systemową %3$s do %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Usunałeś/-aś przypisanie etykiety systemowej %3$s z %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s usunął/-ęła przypisanie etykiety systemowej %3$s z %2$s"
+},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/js/settingsview.js b/apps/twofactor_backupcodes/js/settingsview.js
index 76396023120..753644fb210 100644
--- a/apps/twofactor_backupcodes/js/settingsview.js
+++ b/apps/twofactor_backupcodes/js/settingsview.js
@@ -59,16 +59,16 @@
total: this._total,
used: this._used,
codes: this._codes,
- download: this._getDownloadDataHref()
+ download: this._getDownloadData()
}));
},
- _getDownloadDataHref: function () {
+ _getDownloadData: function () {
if (!this._codes) {
return '';
}
- return 'data:text/plain,' + encodeURIComponent(_.reduce(this._codes, function (prev, code) {
- return prev + code + "\r\n";
- }, ''));
+ return _.reduce(this._codes, function (prev, code) {
+ return prev + code + "<br>";
+ }, '');
},
_load: function () {
this._loading = true;
@@ -113,10 +113,12 @@
});
},
_onPrintBackupCodes: function () {
- var url = this._getDownloadDataHref();
- window.open(url, t('twofactor_backupcodes', 'Nextcloud backup codes'));
- window.print();
- window.close();
+ var data = this._getDownloadData();
+ var newTab = window.open('', t('twofactor_backupcodes', 'Nextcloud backup codes'));
+ newTab.document.write('<h1>' + t('twofactor_backupcodes', 'Nextcloud backup codes') + '</h1>');
+ newTab.document.write(data);
+ newTab.print();
+ newTab.close();
}
});
diff --git a/apps/updatenotification/l10n/ia.js b/apps/updatenotification/l10n/ia.js
index 39d2a27431b..4c013870fd2 100644
--- a/apps/updatenotification/l10n/ia.js
+++ b/apps/updatenotification/l10n/ia.js
@@ -17,7 +17,7 @@ OC.L10N.register(
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Tu sempre pote actualisar a un version plus nove o a un canal experimental. Ma tu non potera jammais retrogradar a un canal plus stabile.",
"Notify members of the following groups about available updates:" : "Notifica membros del gruppos sequente super actualisationes disponibile:",
"Only notification for app updates are available." : "Notification es disponibile solmente pro actualisationes de applicationes.",
- "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de actualisation seligite torna obsolete le notificationes dedicate al servitor.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de actualisation selectionate face le notificationes dedicate al servitor esser obsolete.",
"The selected update channel does not support updates of the server." : "Le canal de actualisation seligite non supporta actualisationes del servitor.",
"You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Tu es executante PHP %s. Pro permitter te a actualisar a Nextcloud 11 e a versiones major, tu debe executar al minus PHP 5.6. Quando tu actualisar tu version de PHP tu potera reciper notificationes de actualisation a iste versiones plus recente."
},
diff --git a/apps/updatenotification/l10n/ia.json b/apps/updatenotification/l10n/ia.json
index 65acbbc1674..2f4e0a815c4 100644
--- a/apps/updatenotification/l10n/ia.json
+++ b/apps/updatenotification/l10n/ia.json
@@ -15,7 +15,7 @@
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Tu sempre pote actualisar a un version plus nove o a un canal experimental. Ma tu non potera jammais retrogradar a un canal plus stabile.",
"Notify members of the following groups about available updates:" : "Notifica membros del gruppos sequente super actualisationes disponibile:",
"Only notification for app updates are available." : "Notification es disponibile solmente pro actualisationes de applicationes.",
- "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de actualisation seligite torna obsolete le notificationes dedicate al servitor.",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de actualisation selectionate face le notificationes dedicate al servitor esser obsolete.",
"The selected update channel does not support updates of the server." : "Le canal de actualisation seligite non supporta actualisationes del servitor.",
"You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Tu es executante PHP %s. Pro permitter te a actualisar a Nextcloud 11 e a versiones major, tu debe executar al minus PHP 5.6. Quando tu actualisar tu version de PHP tu potera reciper notificationes de actualisation a iste versiones plus recente."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/updatenotification/l10n/id.js b/apps/updatenotification/l10n/id.js
index 554c4578dd7..b14837886bd 100644
--- a/apps/updatenotification/l10n/id.js
+++ b/apps/updatenotification/l10n/id.js
@@ -2,10 +2,15 @@ OC.L10N.register(
"updatenotification",
{
"Update notifications" : "Perbarui pemberitahuan",
+ "Could not start updater, please try the manual update" : "Tidak dapat menjalankan updater, harap coba perbarui manual",
"{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.",
- "Nextcloud core" : "Nextcloud core",
+ "Channel updated" : "Kanal diperbarui",
+ "Update to %1$s is available." : "Pembaruan untuk %1$s tersedia.",
"Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.",
+ "Update for {app} to version %s is available." : "Pembaruan untuk {app} ke versi %s tersedia.",
"A new version is available: %s" : "Versi baru tersedia: %s",
+ "Open updater" : "Buka updater",
+ "Download now" : "Unduh sekarang",
"Your version is up to date." : "Versi Anda saat ini adalah yang terbaru.",
"Checked on %s" : "Dicek pada %s",
"Update channel:" : "Saluran update:",
@@ -14,6 +19,6 @@ OC.L10N.register(
"Only notification for app updates are available." : "Hanya pemberitahuan untuk pembaruan aplikasi tersedia.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Kanal pembaruan yang terpilih membuat pemberitahuan terdedikasi untuk server usang.",
"The selected update channel does not support updates of the server." : "Kanal pembaruan yang terpilih tidak mendukung pembaruan server.",
- "Updater" : "Pengupdate"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Anda menggunakan PHP %s. Untuk dapat meningkatkan ke Nextcloud 11 dan lebih tinggi anda butuh setidaknya PHP 5.6. Ketika versi PHP telah ditingkatkan anda dapat menerima notifikasi pembaruan untuk versi lebih baru."
},
"nplurals=1; plural=0;");
diff --git a/apps/updatenotification/l10n/id.json b/apps/updatenotification/l10n/id.json
index a76a0a85fd4..2d532f5bcd0 100644
--- a/apps/updatenotification/l10n/id.json
+++ b/apps/updatenotification/l10n/id.json
@@ -1,9 +1,14 @@
{ "translations": {
"Update notifications" : "Perbarui pemberitahuan",
+ "Could not start updater, please try the manual update" : "Tidak dapat menjalankan updater, harap coba perbarui manual",
"{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.",
- "Nextcloud core" : "Nextcloud core",
+ "Channel updated" : "Kanal diperbarui",
+ "Update to %1$s is available." : "Pembaruan untuk %1$s tersedia.",
"Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.",
+ "Update for {app} to version %s is available." : "Pembaruan untuk {app} ke versi %s tersedia.",
"A new version is available: %s" : "Versi baru tersedia: %s",
+ "Open updater" : "Buka updater",
+ "Download now" : "Unduh sekarang",
"Your version is up to date." : "Versi Anda saat ini adalah yang terbaru.",
"Checked on %s" : "Dicek pada %s",
"Update channel:" : "Saluran update:",
@@ -12,6 +17,6 @@
"Only notification for app updates are available." : "Hanya pemberitahuan untuk pembaruan aplikasi tersedia.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Kanal pembaruan yang terpilih membuat pemberitahuan terdedikasi untuk server usang.",
"The selected update channel does not support updates of the server." : "Kanal pembaruan yang terpilih tidak mendukung pembaruan server.",
- "Updater" : "Pengupdate"
+ "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "Anda menggunakan PHP %s. Untuk dapat meningkatkan ke Nextcloud 11 dan lebih tinggi anda butuh setidaknya PHP 5.6. Ketika versi PHP telah ditingkatkan anda dapat menerima notifikasi pembaruan untuk versi lebih baru."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 7535790fa57..9794db30e2b 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -9,7 +9,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
</description>
<licence>AGPL</licence>
<author>Dominik Schmidt and Arthur Schiwon</author>
- <version>1.2.0</version>
+ <version>1.2.1</version>
<types>
<authentication/>
</types>
@@ -32,4 +32,10 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
<admin>OCA\User_LDAP\Settings\Admin</admin>
<admin-section>OCA\User_LDAP\Settings\Section</admin-section>
</settings>
+
+ <repair-steps>
+ <post-migration>
+ <step>OCA\User_LDAP\Migration\UUIDFixInsert</step>
+ </post-migration>
+ </repair-steps>
</info>
diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js
index 2f3d17d1101..2acd0b3db4d 100644
--- a/apps/user_ldap/l10n/ast.js
+++ b/apps/user_ldap/l10n/ast.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Test Base DN" : "Probar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automátiques de LDAP. Meyor pa grandes configuraciones, pero rique mayor conocimientu de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Inxerta manualmente los filtros de LDAP (recomendáu pa direutorios llargos)",
- "%s access is limited to users meeting these criteria:" : "%s accesos llendaos a los usuarios que cumplan estos criterios:",
"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." : "Les clases d'oxetos más comunes pa los usuarios d'Internet son organizationalPerson, persona, usuariu y inetOrgPerson . Si nun ta seguro de qué clase d'oxetu escoyer, por favor consulte al so alministrador de directorios.",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtru especifica qué usuarios LDAP puen tener accesu a %s.",
"Verify settings and count users" : "Comprobar la configuración y usuarios de recuentu",
@@ -157,6 +156,7 @@ OC.L10N.register(
"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." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ",
"Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.",
+ "%s access is limited to users meeting these criteria:" : "%s accesos llendaos a los usuarios que cumplan estos criterios:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json
index 8d00dbad5cf..1a9228d2508 100644
--- a/apps/user_ldap/l10n/ast.json
+++ b/apps/user_ldap/l10n/ast.json
@@ -89,7 +89,6 @@
"Test Base DN" : "Probar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automátiques de LDAP. Meyor pa grandes configuraciones, pero rique mayor conocimientu de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Inxerta manualmente los filtros de LDAP (recomendáu pa direutorios llargos)",
- "%s access is limited to users meeting these criteria:" : "%s accesos llendaos a los usuarios que cumplan estos criterios:",
"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." : "Les clases d'oxetos más comunes pa los usuarios d'Internet son organizationalPerson, persona, usuariu y inetOrgPerson . Si nun ta seguro de qué clase d'oxetu escoyer, por favor consulte al so alministrador de directorios.",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtru especifica qué usuarios LDAP puen tener accesu a %s.",
"Verify settings and count users" : "Comprobar la configuración y usuarios de recuentu",
@@ -155,6 +154,7 @@
"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." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ",
"Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.",
+ "%s access is limited to users meeting these criteria:" : "%s accesos llendaos a los usuarios que cumplan estos criterios:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js
index c9fc3c62586..4f384180518 100644
--- a/apps/user_ldap/l10n/cs_CZ.js
+++ b/apps/user_ldap/l10n/cs_CZ.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
- "%s access is limited to users meeting these criteria:" : "Přístup pro %s je omezen na uživatele odpovídající těmto kritériím:",
"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." : "Nejčastější třídy objektů pro uživatele jsou organizationalPerson, person, user a inetOrgPerson. Pokud si nejste jisti které třídy objektů zvolit, obraťte se na svého adresářového správce.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
"Verify settings and count users" : "Ověřit nastavení a spočítat uživatele",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen LDAPu",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin LDAPu",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "%s access is limited to users meeting these criteria:" : "Přístup pro %s je omezen na uživatele odpovídající těmto kritériím:"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json
index 6f374d73d7f..3ac317822fc 100644
--- a/apps/user_ldap/l10n/cs_CZ.json
+++ b/apps/user_ldap/l10n/cs_CZ.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
- "%s access is limited to users meeting these criteria:" : "Přístup pro %s je omezen na uživatele odpovídající těmto kritériím:",
"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." : "Nejčastější třídy objektů pro uživatele jsou organizationalPerson, person, user a inetOrgPerson. Pokud si nejste jisti které třídy objektů zvolit, obraťte se na svého adresářového správce.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
"Verify settings and count users" : "Ověřit nastavení a spočítat uživatele",
@@ -162,6 +161,7 @@
"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." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen LDAPu",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin LDAPu",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "%s access is limited to users meeting these criteria:" : "Přístup pro %s je omezen na uživatele odpovídající těmto kritériím:"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 9cc44cb3724..be5c4bc1024 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
- "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:",
"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." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn du nicht sicher bist, welche Objektklasse du wählen sollst, frage bitte deinen Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
"Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 265c252579f..bed6cf5ed19 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
- "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:",
"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." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn du nicht sicher bist, welche Objektklasse du wählen sollst, frage bitte deinen Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
"Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
@@ -162,6 +161,7 @@
"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." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index 3c0de5ea9a5..1ffd8733cbf 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
- "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:",
"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." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
"Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index 2bee5da66de..f20d2b6dd0e 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
- "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:",
"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." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
"Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
@@ -162,6 +161,7 @@
"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." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "%s access is limited to users meeting these criteria:" : "%s-Zugriff ist auf Benutzer, die den folgenden Kriterien entsprechen, beschränkt:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index 19dfa39b3a0..38db7f089ac 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge.",
"Manually enter LDAP filters (recommended for large directories)" : "Manually enter LDAP filters (recommended for large directories)",
- "%s access is limited to users meeting these criteria:" : "%s access is limited to users meeting 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." : "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.",
"The filter specifies which LDAP users shall have access to the %s instance." : "The filter specifies which LDAP users shall have access to the %s instance.",
"Verify settings and count users" : "Verify settings and count users",
@@ -158,6 +157,7 @@ OC.L10N.register(
"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." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise 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.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
+ "%s access is limited to users meeting these criteria:" : "%s access is limited to users meeting these criteria:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index b32fc2c9e9e..e157a2bdecc 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -89,7 +89,6 @@
"Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge.",
"Manually enter LDAP filters (recommended for large directories)" : "Manually enter LDAP filters (recommended for large directories)",
- "%s access is limited to users meeting these criteria:" : "%s access is limited to users meeting 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." : "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.",
"The filter specifies which LDAP users shall have access to the %s instance." : "The filter specifies which LDAP users shall have access to the %s instance.",
"Verify settings and count users" : "Verify settings and count users",
@@ -156,6 +155,7 @@
"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." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise 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.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
+ "%s access is limited to users meeting these criteria:" : "%s access is limited to users meeting these criteria:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 5a6271b18bc..61c61349281 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Probar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automáticas al LDAP. Mejor para grandes configuraciones, pero requiere cierto conocimiento de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ingrese manualmente los filtros LDAP (Recomendado para grandes directorios)",
- "%s access is limited to users meeting these criteria:" : "Acceso limitado a %s a los usuarios que cumplan estos criterios:",
"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." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro de qué objeto de clase seleccionar, por favor, consulte con su administrador de directorio. ",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.",
"Verify settings and count users" : "Verificar configuración y contar usuarios",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.",
+ "%s access is limited to users meeting these criteria:" : "Acceso limitado a %s a los usuarios que cumplan estos criterios:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index 7fc554ce122..a8217b71024 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Probar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automáticas al LDAP. Mejor para grandes configuraciones, pero requiere cierto conocimiento de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ingrese manualmente los filtros LDAP (Recomendado para grandes directorios)",
- "%s access is limited to users meeting these criteria:" : "Acceso limitado a %s a los usuarios que cumplan estos criterios:",
"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." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro de qué objeto de clase seleccionar, por favor, consulte con su administrador de directorio. ",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.",
"Verify settings and count users" : "Verificar configuración y contar usuarios",
@@ -162,6 +161,7 @@
"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." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.",
+ "%s access is limited to users meeting these criteria:" : "Acceso limitado a %s a los usuarios que cumplan estos criterios:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index 3f77a537d03..ce351fc9b14 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Saisir les filtres LDAP manuellement (recommandé pour les annuaires de grande ampleur)",
- "%s access is limited to users meeting these criteria:" : "L'accès à %s est limité aux utilisateurs validant ces critères :",
"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." : "Les classes d'objets fréquentes pour les utilisateurs sont : organizationalPerson, person, user et inetOrgPerson. Si vous n'êtes pas sûr de la classe à utiliser, demandez à l'administrateur de l'annuaire.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP auront accès à l'instance %s.",
"Verify settings and count users" : "Vérifier les paramètres et compter les utilisateurs",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.",
+ "%s access is limited to users meeting these criteria:" : "L'accès à %s est limité aux utilisateurs validant ces critères :"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index 7f402c10a50..a1afa723977 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Tester le DN de base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Évite les requêtes LDAP automatiques. Mieux pour les installations de grande ampleur, mais demande des connaissances en LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Saisir les filtres LDAP manuellement (recommandé pour les annuaires de grande ampleur)",
- "%s access is limited to users meeting these criteria:" : "L'accès à %s est limité aux utilisateurs validant ces critères :",
"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." : "Les classes d'objets fréquentes pour les utilisateurs sont : organizationalPerson, person, user et inetOrgPerson. Si vous n'êtes pas sûr de la classe à utiliser, demandez à l'administrateur de l'annuaire.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Le filtre spécifie quels utilisateurs LDAP auront accès à l'instance %s.",
"Verify settings and count users" : "Vérifier les paramètres et compter les utilisateurs",
@@ -162,6 +161,7 @@
"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." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.",
+ "%s access is limited to users meeting these criteria:" : "L'accès à %s est limité aux utilisateurs validant ces critères :"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index cd053463861..6b7976ec7fd 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Test Base DN" : "בדיקת 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 ידנית (מומלץ עבוק תיקיות גדולות)",
- "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:",
"The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.",
"Verify settings and count users" : "מאמת הגדרות וסופר משתמשים",
"Saving" : "שמירה",
@@ -149,6 +148,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
"Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר.",
+ "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 53e2c2c5a8d..a000551a589 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -89,7 +89,6 @@
"Test Base DN" : "בדיקת 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 ידנית (מומלץ עבוק תיקיות גדולות)",
- "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:",
"The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.",
"Verify settings and count users" : "מאמת הגדרות וסופר משתמשים",
"Saving" : "שמירה",
@@ -147,6 +146,7 @@
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
"Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות אומתו, אך רק משתמש אחד אותר. רק הראשון יוכל להתחבר. יש לבחון שימוש בסינון צר יותר.",
+ "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index 7f256c26649..ba1208901b1 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Uji Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)",
- "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:",
"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." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.",
"Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
"Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
+ "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index 7fc32321558..484e6186ea2 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Uji Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)",
- "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:",
"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." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.",
"Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna",
@@ -162,6 +161,7 @@
"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." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
"Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.",
+ "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index 17f9a67b2a0..58eee86b17f 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Rileva DN base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Impedisce le richieste LDAP automatiche. Meglio per installazioni più grandi, ma richiede una certa conoscenza di LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Digita manualmente i filtri LDAP (consigliato per directory grandi)",
- "%s access is limited to users meeting these criteria:" : "L'accesso a %s è limitato agli utenti che verificano questi criteri:",
"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." : "Le classi di oggetti più comuni per gli utenti sono organizationalPerson, person, user, e inetOrgPerson. Se non sei sicuro su quale classe di oggetti selezionare, consulta l'amministratore della tua directory.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Il filtro specifica quali utenti LDAP devono avere accesso all'istanza %s.",
"Verify settings and count users" : "Verifica le impostazioni e conta gli utenti",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
+ "%s access is limited to users meeting these criteria:" : "L'accesso a %s è limitato agli utenti che verificano questi criteri:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 1b3fd64bd99..7eb2651c6e3 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Rileva DN base",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Impedisce le richieste LDAP automatiche. Meglio per installazioni più grandi, ma richiede una certa conoscenza di LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Digita manualmente i filtri LDAP (consigliato per directory grandi)",
- "%s access is limited to users meeting these criteria:" : "L'accesso a %s è limitato agli utenti che verificano questi criteri:",
"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." : "Le classi di oggetti più comuni per gli utenti sono organizationalPerson, person, user, e inetOrgPerson. Se non sei sicuro su quale classe di oggetti selezionare, consulta l'amministratore della tua directory.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Il filtro specifica quali utenti LDAP devono avere accesso all'istanza %s.",
"Verify settings and count users" : "Verifica le impostazioni e conta gli utenti",
@@ -162,6 +161,7 @@
"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." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.",
+ "%s access is limited to users meeting these criteria:" : "L'accesso a %s è limitato agli utenti che verificano questi criteri:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index 0f337bd0b65..e475b9ad987 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "ベース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フィルターを入力(大規模ディレクトリ時のみ推奨)",
- "%s access is limited to users meeting these criteria:" : "%s のアクセス権は基準を満たすユーザーに制限されます:",
"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." : "フィルターは、どのLDAPユーザーが %s にアクセスするかを指定します。",
"Verify settings and count users" : "設定を検証し、ユーザーを数える",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、すべてのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
+ "%s access is limited to users meeting these criteria:" : "%s のアクセス権は基準を満たすユーザーに制限されます:"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index 767727d2d4a..16ba5968cda 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -92,7 +92,6 @@
"Test Base DN" : "ベース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フィルターを入力(大規模ディレクトリ時のみ推奨)",
- "%s access is limited to users meeting these criteria:" : "%s のアクセス権は基準を満たすユーザーに制限されます:",
"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." : "フィルターは、どのLDAPユーザーが %s にアクセスするかを指定します。",
"Verify settings and count users" : "設定を検証し、ユーザーを数える",
@@ -162,6 +161,7 @@
"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." : "ユーザー名は(メタ)データの保存と割り当てに使用されます。ユーザーを正確に識別して認識するために、個々のLDAPユーザは内部ユーザ名を持っています。これは、ユーザー名からLDAPユーザーへのマッピングが必要であることを意味しています。この生成されたユーザ名は、LDAPユーザのUUIDにマッピングされます。加えて、DNがLDAPとのインタラクションを削減するためにキャッシュされますが、識別には利用されません。DNが変わった場合は、変更が検出されます。内部ユーザ名は全体に亘って利用されます。マッピングをクリアすると、いたるところに使われないままの物が残るでしょう。マッピングのクリアは設定に敏感ではありませんが、すべてのLDAPの設定に影響を与えます!本番の環境では決してマッピングをクリアしないでください。テストもしくは実験の段階でのみマッピングのクリアを行なってください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "設定は検証できましたが、ユーザーが1名見つかりました。最初の1名だけログインできます。より厳しいフィルターを検討してください。",
+ "%s access is limited to users meeting these criteria:" : "%s のアクセス権は基準を満たすユーザーに制限されます:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js
index 17289116064..bba11758835 100644
--- a/apps/user_ldap/l10n/nb_NO.js
+++ b/apps/user_ldap/l10n/nb_NO.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Test Base DN" : "Test basis-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Unngår automatiske LDAP-forespørsler. Bedre for store oppsett men krever litt LDAP-kunnskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Legg inn LDAP-filtre manuelt (anbefalt for store kataloger)",
- "%s access is limited to users meeting these criteria:" : "%s tilgang er begrenset til brukere som møter følgende kriterier:",
"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." : "De mest vanlige objektklassene for brukere er organizationalPerson, person, user og inetOrgPerson. Kontakt katalogadministratoren hvis du er usikker på hvilken objektklasse du skal velge.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-brukere som skal ha tilgang til %s-instansen.",
"Verify settings and count users" : "Sjekk innstillinger og tell brukere",
@@ -158,6 +157,7 @@ OC.L10N.register(
"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.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
+ "%s access is limited to users meeting these criteria:" : "%s tilgang er begrenset til brukere som møter følgende kriterier:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json
index 18f1cdd8838..72259c86d81 100644
--- a/apps/user_ldap/l10n/nb_NO.json
+++ b/apps/user_ldap/l10n/nb_NO.json
@@ -90,7 +90,6 @@
"Test Base DN" : "Test basis-DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Unngår automatiske LDAP-forespørsler. Bedre for store oppsett men krever litt LDAP-kunnskap.",
"Manually enter LDAP filters (recommended for large directories)" : "Legg inn LDAP-filtre manuelt (anbefalt for store kataloger)",
- "%s access is limited to users meeting these criteria:" : "%s tilgang er begrenset til brukere som møter følgende kriterier:",
"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." : "De mest vanlige objektklassene for brukere er organizationalPerson, person, user og inetOrgPerson. Kontakt katalogadministratoren hvis du er usikker på hvilken objektklasse du skal velge.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-brukere som skal ha tilgang til %s-instansen.",
"Verify settings and count users" : "Sjekk innstillinger og tell brukere",
@@ -156,6 +155,7 @@
"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.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.",
+ "%s access is limited to users meeting these criteria:" : "%s tilgang er begrenset til brukere som møter følgende kriterier:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index b8caaf20ed3..21d5128b095 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Testen basis DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Voorkom automatische LDAP opvragingen. Weliswaar beter voor grote installaties, maar vergt LDAP kennis.",
"Manually enter LDAP filters (recommended for large directories)" : "Handmatig invoeren LDAP filters (aanbevolen voor grote directories)",
- "%s access is limited to users meeting these criteria:" : "%s toegang is beperkt tot gebruikers die voldoen aan deze 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." : "De meest gebruikelijke objectklassen voor gebruikers zijn organizationalPerson, persoon, gebruiker, en inetOrgPerson. Als je niet zeker weet welke objectklasse moet worden geselecteerd, raadpleeg dan je directorybeheerder.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Dit filter geeft aan welke LDAP gebruikers toegang hebben tot %s.",
"Verify settings and count users" : "Verifiëren instellingen en tellen gebruikers",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "ownCloud maakt gebruik van gebruikersnamen om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de ownCloud gebruikersnaam aan een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne naam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "%s access is limited to users meeting these criteria:" : "%s toegang is beperkt tot gebruikers die voldoen aan deze criteria:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index 79816be4075..382b3270cf1 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Testen basis DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Voorkom automatische LDAP opvragingen. Weliswaar beter voor grote installaties, maar vergt LDAP kennis.",
"Manually enter LDAP filters (recommended for large directories)" : "Handmatig invoeren LDAP filters (aanbevolen voor grote directories)",
- "%s access is limited to users meeting these criteria:" : "%s toegang is beperkt tot gebruikers die voldoen aan deze 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." : "De meest gebruikelijke objectklassen voor gebruikers zijn organizationalPerson, persoon, gebruiker, en inetOrgPerson. Als je niet zeker weet welke objectklasse moet worden geselecteerd, raadpleeg dan je directorybeheerder.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Dit filter geeft aan welke LDAP gebruikers toegang hebben tot %s.",
"Verify settings and count users" : "Verifiëren instellingen en tellen gebruikers",
@@ -162,6 +161,7 @@
"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." : "ownCloud maakt gebruik van gebruikersnamen om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de ownCloud gebruikersnaam aan een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne naam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "%s access is limited to users meeting these criteria:" : "%s toegang is beperkt tot gebruikers die voldoen aan deze criteria:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index 9d1f8d2ca7f..3e93148a991 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -35,12 +35,18 @@ OC.L10N.register(
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonimowe połączenie nie jest dozwolone. Proszę podać DN użytkownika i hasło.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Błąd operacji LDAP. Anonimowe połączenie nie jest dozwolone.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Zapis się nie udał. Proszę upewnij się, że baza danych jest uruchomiona. Przeładuj przed kontynuowaniem.",
+ "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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
- "User found and settings verified." : "Użytkownik nie znalazł ustawienia zweryfikowanego.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia są poprawne, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej): <br/>",
+ "User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Nie znaleziono zamiennika dla %uid. Podczas odpytywania LDAP-a / AD będzie zastąpiony nazwą użytkownika.",
"Please provide a login name to test against" : "Wprowadź nazwę użytkownika, aby wykonać test ponownie",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Wpisy dla grup zostały wyłączone, ponieważ LDAP / AD nie wspiera memberOf.",
"Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
"LDAP / AD integration" : "Integracja z LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
@@ -62,6 +68,7 @@ OC.L10N.register(
"Verify settings and count groups" : "Zweryfikuj ustawienia i policz grupy",
"When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
"LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Pozwól na zalogowanie się nazwą użytkownika z LDAP-a / AD, czyli również przez uid lub samaccountname i będzie to wykryte.",
"LDAP / AD Email Address:" : "Adres email LDAP/AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Pozwól na logowanie poprzez atrybut email. Mail i mailPrimaryAddress będą dozwolone.",
"Other Attributes:" : "Inne atrybuty:",
@@ -87,7 +94,7 @@ OC.L10N.register(
"Test Base DN" : "Sprawdź DN bazy danych LDAP / AD",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zapobiega automatycznym zapytaniom LDAP. Lepsze dla większych instalacji, lecz wymaga pewnej wiedzy o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ręcznie wprowadzaj filtry LDAP (zalecane dla dużych katalogów)",
- "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:",
+ "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." : "Najbardziej wspólną klasą obiektów dla użytkowników jest organizationalPerson, person, user i InetOrgPerson. Jeśli nie wiesz, którą klasę obiektów wybrać, skonsultuj to ze swoim administratorem usługi katalogowej.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr określa, którzy użytkownicy LDAP powinni mieć dostęp do instancji %s.",
"Verify settings and count users" : "Sprawdź ustawienia i policz użytkowników",
"Saving" : "Zapisuję",
@@ -130,11 +137,13 @@ OC.L10N.register(
"Group Search Attributes" : "Grupa atrybutów wyszukaj",
"Group-Member association" : "Członek grupy stowarzyszenia",
"Dynamic Group Member URL" : "URL Członka Grupy Dynamicznej",
+ "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 przypisuje grupom obiekty, zawierające adres wyszukiwania LDAP-a, co determinuje, który obiekt należy do grupy. (Brak ustawienia wyłączy funkcjonalność dynamicznego członkostwa grup)",
"Nested Groups" : "Grupy zagnieżdżone",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kiedy włączone, grupy, które zawierają grupy, są wspierane. (Działa tylko, jeśli członek grupy ma ustawienie DNs)",
"Paging chunksize" : "Wielkość stronicowania",
"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.)" : "Długość łańcucha jest używana do stronicowanych wyszukiwań LDAP, które mogą zwracać duże zbiory jak lista grup, czy użytkowników. (Ustawienie na 0 wyłącza stronicowane wyszukiwania w takich sytuacjach.)",
"Enable LDAP password changes per user" : "Włącz zmianę hasła LDAP przez użytkownika",
+ "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." : "Pozwól użytkownikom LDAP-a na zmianę swoich haseł i pozwól Super Administratorom i Grupom Administratorów na zmianę haseł swoim użytkownikom LDAP-a. Działa tylko wtedy, kiedy polisy kontroli dostępu są prawidłowo skonfigurowane na serwerze LDAP. Jako że do serwera LDAP hasła są wysyłane czystym tekstem, na serwerze LDAP należy skonfigurować protokoł szyfrowania oraz haszowanie haseł.",
"(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)",
"Special Attributes" : "Specjalne atrybuty",
"Quota Field" : "Pole przydziału",
@@ -144,6 +153,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Reguły nazewnictwa folderu domowego użytkownika",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.",
"Internal Username" : "Wewnętrzna nazwa użytkownika",
+ "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." : "Domyślnie wewnętrzne nazwy użytkowników będą takie same jak atrybut UUID. Zapewnia to unikalność nazw użytkowników, a znaki nie muszą być konwertowane. Znaki z jakich może się składać wewnętrzna nazwa użytkownika to: [ a-zA-Z0-9_.@- ]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. Gdy nastąpi kolizja nazw zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika jest używana do identyfikacji użytkownika wewnętrznie. To również domyślna nazwa dla katalogu domowego użytkownika. To też część adresu zdalnego dla instancji dla wszystkich usług *DAV. Z tym ustawieniem domyślne zachowanie może być nadpisane. Zostaw to puste dla domyślnego zachowania. Zmiany będą miały miejsce tylko dla nowo zamapowanych (dodanych) użytkowników LDAP-a.",
"Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:",
"Override UUID detection" : "Zastąp wykrywanie 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." : "Domyślnie, atrybut UUID jest wykrywany automatycznie. Atrybut UUID jest używany do niepodważalnej identyfikacji użytkowników i grup LDAP. Również wewnętrzna nazwa użytkownika zostanie stworzona na bazie UUID, jeśli nie zostanie podana powyżej. Możesz nadpisać to ustawienie i użyć atrybutu wedle uznania. Musisz się jednak upewnić, że atrybut ten może zostać pobrany zarówno dla użytkowników, jak i grup i jest unikalny. Pozostaw puste dla domyślnego zachowania. Zmiany będą miały wpływ tylko na nowo przypisanych (dodanych) użytkowników i grupy LDAP.",
@@ -152,6 +162,8 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapowanie użytkownika LDAP",
"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." : "Nazwy użytkowników służą do przechowywania i przypisywania (meta) danych. W celu dokładnego określenia i rozpoznawania użytkowników, każdy użytkownik LDAP ma przypisaną wewnętrzną nazwę użytkownika. Wymaga to mapowania nazwy użytkownika do użytkownika LDAP. Utworzona nazwa użytkownika jest odwzorowywana na UUID użytkownika LDAP. Dodatkowo DN są buforowane, także w celu zmniejszenia oddziaływania LDAP, ale nie są stosowane do identyfikacji. Po zmianie DN, będzie można znaleźć zmiany. Wewnętrzna nazwa jest używana wszędzie. Usuwanie mapowania będzie miało wpływ wszędzie. Usuwanie mapowania nie jest wrażliwe na konfiguracje, dotyczy to wszystkich konfiguracji LDAP! Nigdy nie usuwaj mapowania w środowisku produkcyjnym, jest to dopuszczalne tylko w fazie eksperymentalnej, testowej.",
"Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index 693ab97e9db..0ef22eb3332 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -33,12 +33,18 @@
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonimowe połączenie nie jest dozwolone. Proszę podać DN użytkownika i hasło.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Błąd operacji LDAP. Anonimowe połączenie nie jest dozwolone.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Zapis się nie udał. Proszę upewnij się, że baza danych jest uruchomiona. Przeładuj przed kontynuowaniem.",
+ "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?" : "Zmiana trybu włączy automatyczne odpytywanie LDAP-a. W zależności od jego wielkości może to trochę potrwać. Nadal chcesz zmienić tryb?",
"Mode switch" : "Przełącznik trybów",
"Select attributes" : "Wybierz atrybuty",
- "User found and settings verified." : "Użytkownik nie znalazł ustawienia zweryfikowanego.",
- "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia są poprawne, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nie znaleziono użytkownika. Sprawdź proszę atrybuty logowania i nazwę użytkownika. Filtr efektywny (dla sprawdzenia w konsoli przez kopiuj/wklej): <br/>",
+ "User found and settings verified." : "Znaleziono użytkownika i zweryfikowano ustawienia.",
+ "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono więcej niż jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "An unspecified error occurred. Please check the settings and the log." : "Błąd niewiadomego pochodzenia. Sprawdź proszę ustawienia i logi.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr szukania jest nieprawidłowy, prawdopodobnie przez problem składniowy taki jak nierówna liczba otwartych i zamkniętych nawiasów. Zweryfikuj to.",
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "Błąd połączenia do LDAP / AD, proszę sprawdzić adres hosta, port i poświadczenia.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Nie znaleziono zamiennika dla %uid. Podczas odpytywania LDAP-a / AD będzie zastąpiony nazwą użytkownika.",
"Please provide a login name to test against" : "Wprowadź nazwę użytkownika, aby wykonać test ponownie",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Wpisy dla grup zostały wyłączone, ponieważ LDAP / AD nie wspiera memberOf.",
"Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
"LDAP / AD integration" : "Integracja z LDAP / AD",
"_%s group found_::_%s groups found_" : ["%s znaleziona grupa","%s znalezionych grup","%s znalezionych grup","%s znalezionych grup"],
@@ -60,6 +66,7 @@
"Verify settings and count groups" : "Zweryfikuj ustawienia i policz grupy",
"When logging in, %s will find the user based on the following attributes:" : "Podczas logowania, %s znajdzie użytkownika na podstawie następujących atrybutów:",
"LDAP / AD Username:" : "Nazwa użytkownika LDAP / AD:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Pozwól na zalogowanie się nazwą użytkownika z LDAP-a / AD, czyli również przez uid lub samaccountname i będzie to wykryte.",
"LDAP / AD Email Address:" : "Adres email LDAP/AD:",
"Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Pozwól na logowanie poprzez atrybut email. Mail i mailPrimaryAddress będą dozwolone.",
"Other Attributes:" : "Inne atrybuty:",
@@ -85,7 +92,7 @@
"Test Base DN" : "Sprawdź DN bazy danych LDAP / AD",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zapobiega automatycznym zapytaniom LDAP. Lepsze dla większych instalacji, lecz wymaga pewnej wiedzy o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ręcznie wprowadzaj filtry LDAP (zalecane dla dużych katalogów)",
- "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:",
+ "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." : "Najbardziej wspólną klasą obiektów dla użytkowników jest organizationalPerson, person, user i InetOrgPerson. Jeśli nie wiesz, którą klasę obiektów wybrać, skonsultuj to ze swoim administratorem usługi katalogowej.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr określa, którzy użytkownicy LDAP powinni mieć dostęp do instancji %s.",
"Verify settings and count users" : "Sprawdź ustawienia i policz użytkowników",
"Saving" : "Zapisuję",
@@ -128,11 +135,13 @@
"Group Search Attributes" : "Grupa atrybutów wyszukaj",
"Group-Member association" : "Członek grupy stowarzyszenia",
"Dynamic Group Member URL" : "URL Członka Grupy Dynamicznej",
+ "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 przypisuje grupom obiekty, zawierające adres wyszukiwania LDAP-a, co determinuje, który obiekt należy do grupy. (Brak ustawienia wyłączy funkcjonalność dynamicznego członkostwa grup)",
"Nested Groups" : "Grupy zagnieżdżone",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kiedy włączone, grupy, które zawierają grupy, są wspierane. (Działa tylko, jeśli członek grupy ma ustawienie DNs)",
"Paging chunksize" : "Wielkość stronicowania",
"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.)" : "Długość łańcucha jest używana do stronicowanych wyszukiwań LDAP, które mogą zwracać duże zbiory jak lista grup, czy użytkowników. (Ustawienie na 0 wyłącza stronicowane wyszukiwania w takich sytuacjach.)",
"Enable LDAP password changes per user" : "Włącz zmianę hasła LDAP przez użytkownika",
+ "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." : "Pozwól użytkownikom LDAP-a na zmianę swoich haseł i pozwól Super Administratorom i Grupom Administratorów na zmianę haseł swoim użytkownikom LDAP-a. Działa tylko wtedy, kiedy polisy kontroli dostępu są prawidłowo skonfigurowane na serwerze LDAP. Jako że do serwera LDAP hasła są wysyłane czystym tekstem, na serwerze LDAP należy skonfigurować protokoł szyfrowania oraz haszowanie haseł.",
"(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)",
"Special Attributes" : "Specjalne atrybuty",
"Quota Field" : "Pole przydziału",
@@ -142,6 +151,7 @@
"User Home Folder Naming Rule" : "Reguły nazewnictwa folderu domowego użytkownika",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.",
"Internal Username" : "Wewnętrzna nazwa użytkownika",
+ "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." : "Domyślnie wewnętrzne nazwy użytkowników będą takie same jak atrybut UUID. Zapewnia to unikalność nazw użytkowników, a znaki nie muszą być konwertowane. Znaki z jakich może się składać wewnętrzna nazwa użytkownika to: [ a-zA-Z0-9_.@- ]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. Gdy nastąpi kolizja nazw zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika jest używana do identyfikacji użytkownika wewnętrznie. To również domyślna nazwa dla katalogu domowego użytkownika. To też część adresu zdalnego dla instancji dla wszystkich usług *DAV. Z tym ustawieniem domyślne zachowanie może być nadpisane. Zostaw to puste dla domyślnego zachowania. Zmiany będą miały miejsce tylko dla nowo zamapowanych (dodanych) użytkowników LDAP-a.",
"Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:",
"Override UUID detection" : "Zastąp wykrywanie 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." : "Domyślnie, atrybut UUID jest wykrywany automatycznie. Atrybut UUID jest używany do niepodważalnej identyfikacji użytkowników i grup LDAP. Również wewnętrzna nazwa użytkownika zostanie stworzona na bazie UUID, jeśli nie zostanie podana powyżej. Możesz nadpisać to ustawienie i użyć atrybutu wedle uznania. Musisz się jednak upewnić, że atrybut ten może zostać pobrany zarówno dla użytkowników, jak i grup i jest unikalny. Pozostaw puste dla domyślnego zachowania. Zmiany będą miały wpływ tylko na nowo przypisanych (dodanych) użytkowników i grupy LDAP.",
@@ -150,6 +160,8 @@
"Username-LDAP User Mapping" : "Mapowanie użytkownika LDAP",
"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." : "Nazwy użytkowników służą do przechowywania i przypisywania (meta) danych. W celu dokładnego określenia i rozpoznawania użytkowników, każdy użytkownik LDAP ma przypisaną wewnętrzną nazwę użytkownika. Wymaga to mapowania nazwy użytkownika do użytkownika LDAP. Utworzona nazwa użytkownika jest odwzorowywana na UUID użytkownika LDAP. Dodatkowo DN są buforowane, także w celu zmniejszenia oddziaływania LDAP, ale nie są stosowane do identyfikacji. Po zmianie DN, będzie można znaleźć zmiany. Wewnętrzna nazwa jest używana wszędzie. Usuwanie mapowania będzie miało wpływ wszędzie. Usuwanie mapowania nie jest wrażliwe na konfiguracje, dotyczy to wszystkich konfiguracji LDAP! Nigdy nie usuwaj mapowania w środowisku produkcyjnym, jest to dopuszczalne tylko w fazie eksperymentalnej, testowej.",
"Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.",
+ "%s access is limited to users meeting these criteria:" : "%s dostęp jest ograniczony dla użytkowników spełniających te warunki:"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 82316b171a1..acdd41b9410 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Teste Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para configurações maiores, mas requer algum conhecimento LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Inserir manualmente filtros LDAP (recomendado para grandes diretórios)",
- "%s access is limited to users meeting these criteria:" : "%s o acesso está limitado aos usuários que atentam a esse critério:",
"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." : "As classes de objetos mais comuns para os usuários são organizationalPerson, pessoa, usuário e inetOrgPerson. Se você não tem certeza de qual classe de objeto selecionar, por favor, consulte o seu administrador do diretório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais usuários LDAP devem ter acesso à instância do %s.",
"Verify settings and count users" : "Verificar configurações e contas de usuários",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensível, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
+ "%s access is limited to users meeting these criteria:" : "%s o acesso está limitado aos usuários que atentam a esse critério:"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 2422ae147c0..42fb0499d28 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Teste Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para configurações maiores, mas requer algum conhecimento LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Inserir manualmente filtros LDAP (recomendado para grandes diretórios)",
- "%s access is limited to users meeting these criteria:" : "%s o acesso está limitado aos usuários que atentam a esse critério:",
"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." : "As classes de objetos mais comuns para os usuários são organizationalPerson, pessoa, usuário e inetOrgPerson. Se você não tem certeza de qual classe de objeto selecionar, por favor, consulte o seu administrador do diretório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais usuários LDAP devem ter acesso à instância do %s.",
"Verify settings and count users" : "Verificar configurações e contas de usuários",
@@ -162,6 +161,7 @@
"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." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensível, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.",
+ "%s access is limited to users meeting these criteria:" : "%s o acesso está limitado aos usuários que atentam a esse critério:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index 6ddc7687742..c79d14c8077 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Test Base DN" : "Testar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para grandes configurações, mas requer conhecimentos LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para directórios grandes)",
- "%s access is limited to users meeting these criteria:" : "O acesso %s está limitado para os utilizadores que reúnam estes critérios:",
"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." : "Os objectos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objecto deverá seleccionar, por favor, contacte o administrador do Directório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais utilizadores do LDAP devem ter acesso à instância %s.",
"Verify settings and count users" : "Verificar definições e contar utilizadores",
@@ -157,6 +156,7 @@ OC.L10N.register(
"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." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestígios em todo o lado. A limpeza dos mapeamentos não é sensível à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico.",
+ "%s access is limited to users meeting these criteria:" : "O acesso %s está limitado para os utilizadores que reúnam estes critérios:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index 65c9529f962..ead12d5fff9 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -89,7 +89,6 @@
"Test Base DN" : "Testar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para grandes configurações, mas requer conhecimentos LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para directórios grandes)",
- "%s access is limited to users meeting these criteria:" : "O acesso %s está limitado para os utilizadores que reúnam estes critérios:",
"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." : "Os objectos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objecto deverá seleccionar, por favor, contacte o administrador do Directório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais utilizadores do LDAP devem ter acesso à instância %s.",
"Verify settings and count users" : "Verificar definições e contar utilizadores",
@@ -155,6 +154,7 @@
"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." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestígios em todo o lado. A limpeza dos mapeamentos não é sensível à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecífico.",
+ "%s access is limited to users meeting these criteria:" : "O acesso %s está limitado para os utilizadores que reúnam estes critérios:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index 9fd5488025f..1ea592acc53 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "Проверить базу поиска 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 фильтры вручную (рекомендуется для больших каталогов)",
- "%s access is limited to users meeting these criteria:" : "%s доступ ограничен для пользователей, отвечающих следующим критериям:",
"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." : "Этот фильтр указывает, какие пользователи LDAP должны иметь доступ к экземпляру %s.",
"Verify settings and count users" : "Проверить настройки и пересчитать пользователей",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя ownCloud используется повсеместно в ownCloud. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр.",
+ "%s access is limited to users meeting these criteria:" : "%s доступ ограничен для пользователей, отвечающих следующим критериям:"
},
"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/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index 0c3e148ec7b..2acde9c7139 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -92,7 +92,6 @@
"Test Base DN" : "Проверить базу поиска 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 фильтры вручную (рекомендуется для больших каталогов)",
- "%s access is limited to users meeting these criteria:" : "%s доступ ограничен для пользователей, отвечающих следующим критериям:",
"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." : "Этот фильтр указывает, какие пользователи LDAP должны иметь доступ к экземпляру %s.",
"Verify settings and count users" : "Проверить настройки и пересчитать пользователей",
@@ -162,6 +161,7 @@
"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." : "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя ownCloud используется повсеместно в ownCloud. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Настройки проверены, но найден один пользователь. Только первый сможет войти. Советуем пересмотреть фильтр.",
+ "%s access is limited to users meeting these criteria:" : "%s доступ ограничен для пользователей, отвечающих следующим критериям:"
},"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/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index 7268269e675..8053066ba97 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -91,7 +91,6 @@ OC.L10N.register(
"Test Base DN" : "Preizkus osnovnega enoznačnega imena (DN)",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Preusmeri samodejne zahteve LDAP. Nastavitev je priporočljiva za obsežnejše namestitve, vendar zahteva nekaj znanja o delu z LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ročno vstavi filtre za LDAP (priporočljivo za obsežnejše mape).",
- "%s access is limited to users meeting these criteria:" : "%s dostop je omejen na uporabnike, ki zadostijo tem zahtevam:",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filter določa, kateri uporabniki LDAP bodo imeli dostop do %s.",
"Verify settings and count users" : "Preveri nastavitve in preštej uporabnike",
"Saving" : "Poteka shranjevanje ...",
@@ -153,6 +152,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Uporabniška preslikava uporabniškega imena na LDAP",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
"Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter.",
+ "%s access is limited to users meeting these criteria:" : "%s dostop je omejen na uporabnike, ki zadostijo tem zahtevam:"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index 406ff287748..68e7607b3ea 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -89,7 +89,6 @@
"Test Base DN" : "Preizkus osnovnega enoznačnega imena (DN)",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Preusmeri samodejne zahteve LDAP. Nastavitev je priporočljiva za obsežnejše namestitve, vendar zahteva nekaj znanja o delu z LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ročno vstavi filtre za LDAP (priporočljivo za obsežnejše mape).",
- "%s access is limited to users meeting these criteria:" : "%s dostop je omejen na uporabnike, ki zadostijo tem zahtevam:",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filter določa, kateri uporabniki LDAP bodo imeli dostop do %s.",
"Verify settings and count users" : "Preveri nastavitve in preštej uporabnike",
"Saving" : "Poteka shranjevanje ...",
@@ -151,6 +150,7 @@
"Username-LDAP User Mapping" : "Uporabniška preslikava uporabniškega imena na LDAP",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
"Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. Priporočljivo je navesti ožji filter.",
+ "%s access is limited to users meeting these criteria:" : "%s dostop je omejen na uporabnike, ki zadostijo tem zahtevam:"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js
index 2f09cd96511..e6aa2247f07 100644
--- a/apps/user_ldap/l10n/sq.js
+++ b/apps/user_ldap/l10n/sq.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Test Base DN" : "Testo DN Bazë",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.",
"Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)",
- "%s access is limited to users meeting these criteria:" : "Hyrja për %s u rezervohet përdoruesve që plotësojnë këto kushte:",
"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." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
"Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
@@ -159,6 +158,7 @@ OC.L10N.register(
"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." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
"Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.",
+ "%s access is limited to users meeting these criteria:" : "Hyrja për %s u rezervohet përdoruesve që plotësojnë këto kushte:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json
index 053ae0f5a2d..baa4b69a49a 100644
--- a/apps/user_ldap/l10n/sq.json
+++ b/apps/user_ldap/l10n/sq.json
@@ -90,7 +90,6 @@
"Test Base DN" : "Testo DN Bazë",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.",
"Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)",
- "%s access is limited to users meeting these criteria:" : "Hyrja për %s u rezervohet përdoruesve që plotësojnë këto kushte:",
"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." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.",
"Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit",
@@ -157,6 +156,7 @@
"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." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
"Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.",
+ "%s access is limited to users meeting these criteria:" : "Hyrja për %s u rezervohet përdoruesve që plotësojnë këto kushte:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index f7e42c7f3c9..c3040090c50 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Test Base DN" : "Base DN'i Sına",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)",
- "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:",
"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." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.",
"Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say",
@@ -159,6 +158,7 @@ OC.L10N.register(
"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." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak tanımlamak ve algılamak için, her LDAP kullanıcısı bir dahili kullanıcı adına sahip olacak. Bu kullanıcı adı ile LDAP kullanıcısı arasında bir eşleşme gerektirir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID'si ile eşleştirilir. Ek olarak LDAP etkileşimini azaltmak için DN de önbelleğe alınır ancak bu kimlik tanıma için kullanılmaz. Eğer DN değişirse, değişiklikler tespit edilir. Dahili kullanıcı her yerde kullanılır. Eşleştirmeleri temizlemek, her yerde kalıntılar bırakacaktır. Eşleştirmeleri temizlemek yapılandırmaya hassas bir şekilde bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla temizlemeyin, sadece sınama veya deneysel aşamada kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Temizle",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Temizle",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
+ "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index c08ec466b84..dc2fd1cc890 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -90,7 +90,6 @@
"Test Base DN" : "Base DN'i Sına",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)",
- "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:",
"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." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.",
"Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say",
@@ -157,6 +156,7 @@
"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." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak tanımlamak ve algılamak için, her LDAP kullanıcısı bir dahili kullanıcı adına sahip olacak. Bu kullanıcı adı ile LDAP kullanıcısı arasında bir eşleşme gerektirir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID'si ile eşleştirilir. Ek olarak LDAP etkileşimini azaltmak için DN de önbelleğe alınır ancak bu kimlik tanıma için kullanılmaz. Eğer DN değişirse, değişiklikler tespit edilir. Dahili kullanıcı her yerde kullanılır. Eşleştirmeleri temizlemek, her yerde kalıntılar bırakacaktır. Eşleştirmeleri temizlemek yapılandırmaya hassas bir şekilde bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla temizlemeyin, sadece sınama veya deneysel aşamada kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Temizle",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Temizle",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin."
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak tek kullanıcı bulundu. Sadece ilk kullanıcı oturum açabilecek. Lütfen daha dar bir filtre seçin.",
+ "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index 2d57b1545e9..b88d4f252f7 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -94,7 +94,6 @@ OC.L10N.register(
"Test Base DN" : "测试基础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筛选条件(建议用于大型目录)",
- "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:",
"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." : "该筛选条件指定哪些LDAP用户有权访问%s的实例。",
"Verify settings and count users" : "验证设置和统计用户",
@@ -164,6 +163,7 @@ OC.L10N.register(
"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." : "用户名用于存储和分配数据 (元)。为了准确地识别和确认用户,每个用户都有一个内部用户名。这需要一个 ownCloud 用户名到 LDAP 用户的映射。创建的用户名被映射到 LDAP 用户的 UUID。此外,DN 也会被缓存,以减少 LDAP 连接,但它不用于识别。DN 的变化会被监视到。内部用户名会被用于所有地方。清除映射将导致一片混乱。清除映射不是常用的设置,它会影响到所有的 LDAP 配置!千万不要在正式环境中清除映射,只有在测试或试验时才这样做。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
"Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。",
+ "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index c8dbccd08c9..8e867c91a83 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -92,7 +92,6 @@
"Test Base DN" : "测试基础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筛选条件(建议用于大型目录)",
- "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:",
"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." : "该筛选条件指定哪些LDAP用户有权访问%s的实例。",
"Verify settings and count users" : "验证设置和统计用户",
@@ -162,6 +161,7 @@
"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." : "用户名用于存储和分配数据 (元)。为了准确地识别和确认用户,每个用户都有一个内部用户名。这需要一个 ownCloud 用户名到 LDAP 用户的映射。创建的用户名被映射到 LDAP 用户的 UUID。此外,DN 也会被缓存,以减少 LDAP 连接,但它不用于识别。DN 的变化会被监视到。内部用户名会被用于所有地方。清除映射将导致一片混乱。清除映射不是常用的设置,它会影响到所有的 LDAP 配置!千万不要在正式环境中清除映射,只有在测试或试验时才这样做。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
"Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。"
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验证,但只有一个用户被找到。只有第一个用户能登录。考虑一个更窄的筛选。",
+ "%s access is limited to users meeting these criteria:" : "%s 的访问权限限于满足以下条件的用户:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 9e93ef2ecaa..cc0446ae523 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -1473,7 +1473,7 @@ class Access extends LDAPUtility implements IUserTools {
return true;
}
- if ($uuidOverride !== '' && !$force) {
+ if (is_string($uuidOverride) && trim($uuidOverride) !== '' && !$force) {
$this->connection->$uuidAttr = $uuidOverride;
return true;
}
diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php
index 92b874e7a15..04f8c7401e2 100644
--- a/apps/user_ldap/lib/Connection.php
+++ b/apps/user_ldap/lib/Connection.php
@@ -47,6 +47,8 @@ use OC\ServerNotAvailableException;
* @property string[] ldapBaseUsers
* @property int|string ldapPagingSize holds an integer
* @property bool|mixed|void ldapGroupMemberAssocAttr
+ * @property string ldapUuidUserAttribute
+ * @property string ldapUuidGroupAttribute
*/
class Connection extends LDAPUtility {
private $ldapConnectionRes = null;
@@ -339,7 +341,7 @@ class Connection extends LDAPUtility {
$this->configuration->$effectiveSetting = $uuidOverride;
} else {
$uuidAttributes = array('auto', 'entryuuid', 'nsuniqueid',
- 'objectguid', 'guid');
+ 'objectguid', 'guid', 'ipauniqueid');
if(!in_array($this->configuration->$effectiveSetting,
$uuidAttributes)
&& (!is_null($this->configID))) {
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index 49e5e724833..d620a00f849 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -902,4 +902,12 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface {
public function implementsActions($actions) {
return (bool)(\OC\Group\Backend::COUNT_USERS & $actions);
}
+
+ /**
+ * Return access for LDAP interaction.
+ * @return Access instance of Access for LDAP interaction
+ */
+ public function getLDAPAccess() {
+ return $this->access;
+ }
}
diff --git a/apps/user_ldap/lib/Group_Proxy.php b/apps/user_ldap/lib/Group_Proxy.php
index 64b85427f8f..c102e7ac626 100644
--- a/apps/user_ldap/lib/Group_Proxy.php
+++ b/apps/user_ldap/lib/Group_Proxy.php
@@ -196,4 +196,13 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface {
//it's the same across all our user backends obviously
return $this->refBackend->implementsActions($actions);
}
+
+ /**
+ * Return access for LDAP interaction.
+ * @param string $gid
+ * @return Access instance of Access for LDAP interaction
+ */
+ public function getLDAPAccess($gid) {
+ return $this->handleRequest($gid, 'getLDAPAccess', []);
+ }
}
diff --git a/apps/user_ldap/lib/Mapping/AbstractMapping.php b/apps/user_ldap/lib/Mapping/AbstractMapping.php
index 6fb4a5436c3..755cfadbccd 100644
--- a/apps/user_ldap/lib/Mapping/AbstractMapping.php
+++ b/apps/user_ldap/lib/Mapping/AbstractMapping.php
@@ -129,6 +129,25 @@ abstract class AbstractMapping {
}
/**
+ * Updates the UUID based on the given DN
+ *
+ * required by Migration/UUIDFix
+ *
+ * @param $uuid
+ * @param $fdn
+ * @return bool
+ */
+ public function setUUIDbyDN($uuid, $fdn) {
+ $query = $this->dbc->prepare('
+ UPDATE `' . $this->getTableName() . '`
+ SET `directory_uuid` = ?
+ WHERE `ldap_dn` = ?
+ ');
+
+ return $this->modify($query, [$uuid, $fdn]);
+ }
+
+ /**
* Gets the name based on the provided LDAP DN.
* @param string $fdn
* @return string|false
diff --git a/apps/user_ldap/lib/Migration/UUIDFix.php b/apps/user_ldap/lib/Migration/UUIDFix.php
new file mode 100644
index 00000000000..5b9e5e2231d
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/UUIDFix.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+
+use OC\BackgroundJob\QueuedJob;
+use OCA\User_LDAP\Mapping\AbstractMapping;
+use OCA\User_LDAP\Proxy;
+use OCA\User_LDAP\User_Proxy;
+
+abstract class UUIDFix extends QueuedJob {
+ /** @var AbstractMapping */
+ protected $mapper;
+
+ /** @var Proxy */
+ protected $proxy;
+
+ public function run($argument) {
+ $isUser = $this->proxy instanceof User_Proxy;
+ foreach($argument['records'] as $record) {
+ $access = $this->proxy->getLDAPAccess($record['name']);
+ $uuid = $access->getUUID($record['dn'], $isUser);
+ if($uuid === false) {
+ // record not found, no prob, continue with the next
+ continue;
+ }
+ if($uuid !== $record['uuid']) {
+ $this->mapper->setUUIDbyDN($uuid, $record['dn']);
+ }
+ }
+ }
+
+ /**
+ * @param Proxy $proxy
+ */
+ public function overrideProxy(Proxy $proxy) {
+ $this->proxy = $proxy;
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/UUIDFixGroup.php b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
new file mode 100644
index 00000000000..cbc38366984
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\LDAP;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\User_Proxy;
+use OCP\IConfig;
+
+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);
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/UUIDFixInsert.php b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
new file mode 100644
index 00000000000..4a1104f2c6f
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCP\BackgroundJob\IJobList;
+use OCP\IConfig;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class UUIDFixInsert implements IRepairStep {
+
+ /** @var IConfig */
+ protected $config;
+
+ /** @var UserMapping */
+ protected $userMapper;
+
+ /** @var GroupMapping */
+ protected $groupMapper;
+
+ /** @var IJobList */
+ protected $jobList;
+
+ public function __construct(IConfig $config, UserMapping $userMapper, GroupMapping $groupMapper, IJobList $jobList) {
+ $this->config = $config;
+ $this->userMapper = $userMapper;
+ $this->groupMapper = $groupMapper;
+ $this->jobList = $jobList;
+ }
+
+ /**
+ * Returns the step's name
+ *
+ * @return string
+ * @since 9.1.0
+ */
+ public function getName() {
+ return 'Insert UUIDFix background job for user and group in batches';
+ }
+
+ /**
+ * Run repair step.
+ * Must throw exception on error.
+ *
+ * @param IOutput $output
+ * @throws \Exception in case of failure
+ * @since 9.1.0
+ */
+ public function run(IOutput $output) {
+ $installedVersion = $this->config->getAppValue('user_ldap', 'installed_version', '1.2.1');
+ if(version_compare($installedVersion, '1.2.1') !== -1) {
+ return;
+ }
+
+ foreach ([$this->userMapper, $this->groupMapper] as $mapper) {
+ $offset = 0;
+ $batchSize = 50;
+ $jobClass = $mapper instanceof UserMapping ? UUIDFixUser::class : UUIDFixGroup::class;
+ do {
+ $retry = false;
+ $records = $mapper->getList($offset, $batchSize);
+ if(count($records) === 0){
+ continue;
+ }
+ try {
+ $this->jobList->add($jobClass, ['records' => $records]);
+ $offset += $batchSize;
+ } catch (\InvalidArgumentException $e) {
+ if(strpos($e->getMessage(), 'Background job arguments can\'t exceed 4000') !== false) {
+ $batchSize = intval(floor(count($records) * 0.8));
+ $retry = true;
+ }
+ }
+ } while (count($records) === $batchSize || $retry);
+ }
+
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/UUIDFixUser.php b/apps/user_ldap/lib/Migration/UUIDFixUser.php
new file mode 100644
index 00000000000..ee1457dcccb
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/UUIDFixUser.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\LDAP;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\Group_Proxy;
+use OCP\IConfig;
+
+class UUIDFixUser extends UUIDFix {
+ public function __construct(UserMapping $mapper, LDAP $ldap, IConfig $config, Helper $helper) {
+ $this->mapper = $mapper;
+ $this->proxy = new Group_Proxy($helper->getServerConfigurationPrefixes(true), $ldap, $config);
+ }
+}
diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php
index 6b896e0b13d..7f998314e20 100644
--- a/apps/user_ldap/lib/Proxy.php
+++ b/apps/user_ldap/lib/Proxy.php
@@ -128,6 +128,12 @@ abstract class Proxy {
abstract protected function walkBackends($id, $method, $parameters);
/**
+ * @param string $id
+ * @return Access
+ */
+ abstract public function getLDAPAccess($id);
+
+ /**
* Takes care of the request to the User backend
* @param string $id
* @param string $method string, the method of the user backend that shall be called
diff --git a/apps/user_ldap/templates/part.wizard-userfilter.php b/apps/user_ldap/templates/part.wizard-userfilter.php
index 076db93a91a..ebac944e56f 100644
--- a/apps/user_ldap/templates/part.wizard-userfilter.php
+++ b/apps/user_ldap/templates/part.wizard-userfilter.php
@@ -1,7 +1,7 @@
<fieldset id="ldapWizard2">
<div>
<p>
- <?php p($l->t('%s access is limited to users meeting these criteria:', $theme->getName()));?>
+ <?php p($l->t('Listing and searching for users is constrained by these criteria:'));?>
</p>
<p>
<label for="ldap_userfilter_objectclass">
diff --git a/apps/user_ldap/tests/.htaccess b/apps/user_ldap/tests/.htaccess
index 5e068d28661..6fde30e763a 100755
--- a/apps/user_ldap/tests/.htaccess
+++ b/apps/user_ldap/tests/.htaccess
@@ -11,4 +11,6 @@ Satisfy All
</ifModule>
# section for Apache 2.2 and 2.4
+<ifModule mod_autoindex.c>
IndexIgnore *
+</ifModule>
diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
index 493fc2abace..2966180f5a1 100644
--- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
+++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
@@ -25,8 +25,10 @@ namespace OCA\User_LDAP\Tests\Integration;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
+use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\LogWrapper;
use OCA\User_LDAP\User\Manager;
abstract class AbstractIntegrationTest {
@@ -106,7 +108,15 @@ abstract class AbstractIntegrationTest {
* @return Manager
*/
protected function initUserManager() {
- $this->userManager = new FakeManager();
+ $this->userManager = new Manager(
+ \OC::$server->getConfig(),
+ new FilesystemHelper(),
+ new LogWrapper(),
+ \OC::$server->getAvatarManager(),
+ new \OCP\Image(),
+ \OC::$server->getDatabaseConnection(),
+ \OC::$server->getUserManager()
+ );
}
/**
diff --git a/apps/user_ldap/tests/Integration/FakeManager.php b/apps/user_ldap/tests/Integration/FakeManager.php
deleted file mode 100644
index 1eb405298a2..00000000000
--- a/apps/user_ldap/tests/Integration/FakeManager.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @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\User_LDAP\Tests\Integration;
-
-/**
- * Class FakeManager
- *
- * this is a mock of \OCA\User_LDAP\User\Manager which is a dependency of
- * Access, that pulls plenty more things in. Because it is not needed in the
- * scope of these tests, we replace it with a mock.
- */
-class FakeManager extends \OCA\User_LDAP\User\Manager {
- public function __construct() {
- $this->ocConfig = \OC::$server->getConfig();
- $this->image = new \OCP\Image();
- }
-}
diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php
new file mode 100644
index 00000000000..55b2eabedc2
--- /dev/null
+++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\user_ldap\tests\Integration\Lib;
+
+use OCA\User_LDAP\Group_LDAP;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
+use OCA\User_LDAP\User_LDAP;
+
+require_once __DIR__ . '/../Bootstrap.php';
+
+class IntegrationTestAttributeDetection extends AbstractIntegrationTest {
+ public function init() {
+ require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
+ require(__DIR__ . '/../setup-scripts/createExplicitGroups.php');
+
+ parent::init();
+
+ $this->connection->setConfiguration(['ldapGroupFilter' => 'objectClass=groupOfNames']);
+ $this->connection->setConfiguration(['ldapGroupMemberAssocAttr' => 'member']);
+
+ $userMapper = new UserMapping(\OC::$server->getDatabaseConnection());
+ $userMapper->clear();
+ $this->access->setUserMapper($userMapper);
+
+ $groupMapper = new GroupMapping(\OC::$server->getDatabaseConnection());
+ $groupMapper->clear();
+ $this->access->setGroupMapper($groupMapper);
+
+ $userBackend = new User_LDAP($this->access, \OC::$server->getConfig());
+ $userManager = \OC::$server->getUserManager();
+ $userManager->clearBackends();
+ $userManager->registerBackend($userBackend);
+
+ $groupBackend = new Group_LDAP($this->access);
+ $groupManger = \OC::$server->getGroupManager();
+ $groupManger->clearBackends();
+ $groupManger->addBackend($groupBackend);
+ }
+
+ protected function caseNativeUUIDAttributeUsers() {
+ // trigger importing of users which also triggers UUID attribute detection
+ \OC::$server->getUserManager()->search('', 5, 0);
+ return $this->connection->ldapUuidUserAttribute === 'entryuuid';
+ }
+
+ protected function caseNativeUUIDAttributeGroups() {
+ // essentially the same as 'caseNativeUUIDAttributeUsers', code paths
+ // are similar, but we take no chances.
+
+ // trigger importing of users which also triggers UUID attribute detection
+ \OC::$server->getGroupManager()->search('', 5, 0);
+ return $this->connection->ldapUuidGroupAttribute === 'entryuuid';
+ }
+}
+
+/** @var string $host */
+/** @var int $port */
+/** @var string $adn */
+/** @var string $apwd */
+/** @var string $bdn */
+$test = new IntegrationTestAttributeDetection($host, $port, $adn, $apwd, $bdn);
+$test->init();
+$test->run();
diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
index ab0d2ffdcce..d0444daca5f 100644
--- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
+++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
@@ -25,6 +25,7 @@ namespace OCA\User_LDAP\Tests\Integration\Lib\User;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
+use OCA\User_LDAP\User_LDAP;
require_once __DIR__ . '/../../Bootstrap.php';
@@ -42,7 +43,7 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest {
$this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
$this->mapping->clear();
$this->access->setUserMapper($this->mapping);
- $userBackend = new \OCA\User_LDAP\User_LDAP($this->access, \OC::$server->getConfig());
+ $userBackend = new User_LDAP($this->access, \OC::$server->getConfig());
\OC_User::useBackend($userBackend);
}
diff --git a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
index 5c3474d9ad2..c9845bb31e5 100644
--- a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
@@ -26,6 +26,7 @@
namespace OCA\User_LDAP\Tests\Mapping;
+use OCA\User_LDAP\Mapping\AbstractMapping;
use OCP\IDBConnection;
abstract class AbstractMappingTest extends \Test\TestCase {
@@ -182,7 +183,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests setDNbyUUID() for successful and unsuccessful update.
*/
- public function testSetMethod() {
+ public function testSetDNMethod() {
list($mapper, $data) = $this->initTest();
$newDN = 'uid=modified,dc=example,dc=org';
@@ -196,7 +197,26 @@ abstract class AbstractMappingTest extends \Test\TestCase {
$this->assertFalse($done);
$name = $mapper->getNameByDN($newDN);
$this->assertFalse($name);
+ }
+
+ /**
+ * tests setUUIDbyDN() for successful and unsuccessful update.
+ */
+ public function testSetUUIDMethod() {
+ /** @var AbstractMapping $mapper */
+ list($mapper, $data) = $this->initTest();
+ $newUUID = 'ABC737-DEF754';
+
+ $done = $mapper->setUUIDbyDN($newUUID, 'uid=notme,dc=example,dc=org');
+ $this->assertFalse($done);
+ $name = $mapper->getNameByUUID($newUUID);
+ $this->assertFalse($name);
+
+ $done = $mapper->setUUIDbyDN($newUUID, $data[0]['dn']);
+ $this->assertTrue($done);
+ $uuid = $mapper->getUUIDByDN($data[0]['dn']);
+ $this->assertSame($uuid, $newUUID);
}
/**
diff --git a/apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php b/apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php
new file mode 100644
index 00000000000..8921648da83
--- /dev/null
+++ b/apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php
@@ -0,0 +1,197 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Tests\Migration;
+
+use OCA\User_LDAP\LDAP;
+use Test\TestCase;
+use OCA\User_LDAP\Access;
+use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\Migration\UUIDFixUser;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\User_Proxy;
+use OCP\IConfig;
+
+abstract class AbstractUUIDFixTest extends TestCase {
+ /** @var Helper|\PHPUnit_Framework_MockObject_MockObject */
+ protected $helper;
+
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ protected $config;
+
+ /** @var LDAP|\PHPUnit_Framework_MockObject_MockObject */
+ protected $ldap;
+
+ /** @var UserMapping|GroupMapping|\PHPUnit_Framework_MockObject_MockObject */
+ protected $mapper;
+
+ /** @var UUIDFixUser */
+ protected $job;
+
+ /** @var User_Proxy|\PHPUnit_Framework_MockObject_MockObject */
+ protected $proxy;
+
+ /** @var Access|\PHPUnit_Framework_MockObject_MockObject */
+ protected $access;
+
+ /** @var bool */
+ protected $isUser = true;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->ldap = $this->createMock(LDAP::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->access = $this->createMock(Access::class);
+
+ $this->helper = $this->createMock(Helper::class);
+ $this->helper->expects($this->any())
+ ->method('getServerConfigurationPrefixes')
+ ->with(true)
+ ->willReturn(['s01', 's03']);
+ }
+
+ protected function mockProxy($className) {
+ $this->proxy = $this->createMock($className);
+ $this->proxy->expects($this->any())
+ ->method('getLDAPAccess')
+ ->willReturn($this->access);
+ }
+
+ protected function instantiateJob($className) {
+ $this->job = new $className($this->mapper, $this->ldap, $this->config, $this->helper);
+ $this->job->overrideProxy($this->proxy);
+ }
+
+ public function testRunSingleRecord() {
+ $args = [
+ 'records' => [
+ 0 => [
+ 'name' => 'Someone',
+ 'dn' => 'uid=Someone,dc=Somewhere',
+ 'uuid' => 'kaput'
+ ]
+ ]
+ ];
+ $correctUUID = '4355-AED3-9D73-03AD';
+
+ $this->access->expects($this->once())
+ ->method('getUUID')
+ ->with($args['records'][0]['dn'], $this->isUser)
+ ->willReturn($correctUUID);
+
+ $this->mapper->expects($this->once())
+ ->method('setUUIDbyDN')
+ ->with($correctUUID, $args['records'][0]['dn']);
+
+ $this->job->run($args);
+ }
+
+ public function testRunValidRecord() {
+ $correctUUID = '4355-AED3-9D73-03AD';
+ $args = [
+ 'records' => [
+ 0 => [
+ 'name' => 'Someone',
+ 'dn' => 'uid=Someone,dc=Somewhere',
+ 'uuid' => $correctUUID
+ ]
+ ]
+ ];
+
+ $this->access->expects($this->once())
+ ->method('getUUID')
+ ->with($args['records'][0]['dn'], $this->isUser)
+ ->willReturn($correctUUID);
+
+ $this->mapper->expects($this->never())
+ ->method('setUUIDbyDN');
+
+ $this->job->run($args);
+ }
+
+ public function testRunRemovedRecord() {
+ $args = [
+ 'records' => [
+ 0 => [
+ 'name' => 'Someone',
+ 'dn' => 'uid=Someone,dc=Somewhere',
+ 'uuid' => 'kaput'
+ ]
+ ]
+ ];
+
+ $this->access->expects($this->once())
+ ->method('getUUID')
+ ->with($args['records'][0]['dn'], $this->isUser)
+ ->willReturn(false);
+
+ $this->mapper->expects($this->never())
+ ->method('setUUIDbyDN');
+
+ $this->job->run($args);
+ }
+
+ public function testRunManyRecords() {
+ $args = [
+ 'records' => [
+ 0 => [
+ 'name' => 'Someone',
+ 'dn' => 'uid=Someone,dc=Somewhere',
+ 'uuid' => 'kaput'
+ ],
+ 1 => [
+ 'name' => 'kdslkdsaIdsal',
+ 'dn' => 'uid=kdslkdsaIdsal,dc=Somewhere',
+ 'uuid' => 'AED3-4355-03AD-9D73'
+ ],
+ 2 => [
+ 'name' => 'Paperboy',
+ 'dn' => 'uid=Paperboy,dc=Somewhere',
+ 'uuid' => 'kaput'
+ ]
+ ]
+ ];
+ $correctUUIDs = ['4355-AED3-9D73-03AD', 'AED3-4355-03AD-9D73', 'AED3-9D73-4355-03AD'];
+
+ $this->access->expects($this->exactly(3))
+ ->method('getUUID')
+ ->withConsecutive(
+ [$args['records'][0]['dn'], $this->isUser],
+ [$args['records'][1]['dn'], $this->isUser],
+ [$args['records'][2]['dn'], $this->isUser]
+ )
+ ->willReturnOnConsecutiveCalls($correctUUIDs[0], $correctUUIDs[1], $correctUUIDs[2]);
+
+ $this->mapper->expects($this->exactly(2))
+ ->method('setUUIDbyDN')
+ ->withConsecutive(
+ [$correctUUIDs[0], $args['records'][0]['dn']],
+ [$correctUUIDs[2], $args['records'][2]['dn']]
+ );
+
+ $this->job->run($args);
+ }
+
+}
diff --git a/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php b/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php
new file mode 100644
index 00000000000..b91f4af433f
--- /dev/null
+++ b/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Group_LDAP\Tests\Migration;
+
+use OCA\User_LDAP\Migration\UUIDFixGroup;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\Group_Proxy;
+use OCA\User_LDAP\Tests\Migration\AbstractUUIDFixTest;
+
+/**
+ * Class UUIDFixGroupTest
+ *
+ * @package OCA\Group_LDAP\Tests\Migration
+ * @group DB
+ */
+class UUIDFixGroupTest extends AbstractUUIDFixTest {
+ public function setUp() {
+ $this->isUser = false;
+ parent::setUp();
+
+ $this->isUser = false;
+
+ $this->mapper = $this->createMock(GroupMapping::class);
+
+ $this->mockProxy(Group_Proxy::class);
+ $this->instantiateJob(UUIDFixGroup::class);
+ }
+
+}
diff --git a/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php b/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php
new file mode 100644
index 00000000000..a5f7ea50175
--- /dev/null
+++ b/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php
@@ -0,0 +1,195 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Tests\Migration;
+
+use OCA\User_LDAP\Migration\UUIDFixInsert;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCP\BackgroundJob\IJobList;
+use OCP\IConfig;
+use OCP\Migration\IOutput;
+use Test\TestCase;
+
+class UUIDFixInsertTest extends TestCase {
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ protected $config;
+
+ /** @var UserMapping|\PHPUnit_Framework_MockObject_MockObject */
+ protected $userMapper;
+
+ /** @var GroupMapping|\PHPUnit_Framework_MockObject_MockObject */
+ protected $groupMapper;
+
+ /** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
+ protected $jobList;
+
+ /** @var UUIDFixInsert */
+ protected $job;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->jobList = $this->createMock(IJobList::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->userMapper = $this->createMock(UserMapping::class);
+ $this->groupMapper = $this->createMock(GroupMapping::class);
+ $this->job = new UUIDFixInsert(
+ $this->config,
+ $this->userMapper,
+ $this->groupMapper,
+ $this->jobList
+ );
+ }
+
+ public function testGetName() {
+ $this->assertSame('Insert UUIDFix background job for user and group in batches', $this->job->getName());
+ }
+
+ public function recordProvider() {
+ $record = [
+ 'dn' => 'cn=somerecord,dc=somewhere',
+ 'name' => 'Something',
+ 'uuid' => 'AB12-3456-CDEF7-8GH9'
+ ];
+ array_fill(0, 50, $record);
+
+ $userBatches = [
+ 0 => array_fill(0, 50, $record),
+ 1 => array_fill(0, 50, $record),
+ 2 => array_fill(0, 13, $record),
+ ];
+
+ $groupBatches = [
+ 0 => array_fill(0, 7, $record),
+ ];
+
+ return [
+ ['userBatches' => $userBatches, 'groupBatches' => $groupBatches]
+ ];
+ }
+
+ public function recordProviderTooLongAndNone() {
+ $record = [
+ 'dn' => 'cn=somerecord,dc=somewhere',
+ 'name' => 'Something',
+ 'uuid' => 'AB12-3456-CDEF7-8GH9'
+ ];
+ array_fill(0, 50, $record);
+
+ $userBatches = [
+ 0 => array_fill(0, 50, $record),
+ 1 => array_fill(0, 40, $record),
+ 2 => array_fill(0, 32, $record),
+ 3 => array_fill(0, 32, $record),
+ 4 => array_fill(0, 23, $record),
+ ];
+
+ $groupBatches = [0 => []];
+
+ return [
+ ['userBatches' => $userBatches, 'groupBatches' => $groupBatches]
+ ];
+ }
+
+ /**
+ * @dataProvider recordProvider
+ */
+ public function testRun($userBatches, $groupBatches) {
+ $this->config->expects($this->once())
+ ->method('getAppValue')
+ ->with('user_ldap', 'installed_version', '1.2.1')
+ ->willReturn('1.2.0');
+
+ $this->userMapper->expects($this->exactly(3))
+ ->method('getList')
+ ->withConsecutive([0, 50], [50, 50], [100, 50])
+ ->willReturnOnConsecutiveCalls($userBatches[0], $userBatches[1], $userBatches[2]);
+
+ $this->groupMapper->expects($this->exactly(1))
+ ->method('getList')
+ ->with(0, 50)
+ ->willReturn($groupBatches[0]);
+
+ $this->jobList->expects($this->exactly(4))
+ ->method('add');
+
+ /** @var IOutput $out */
+ $out = $this->createMock(IOutput::class);
+ $this->job->run($out);
+ }
+
+ /**
+ * @dataProvider recordProviderTooLongAndNone
+ */
+ public function testRunWithManyAndNone($userBatches, $groupBatches) {
+ $this->config->expects($this->once())
+ ->method('getAppValue')
+ ->with('user_ldap', 'installed_version', '1.2.1')
+ ->willReturn('1.2.0');
+
+ $this->userMapper->expects($this->exactly(5))
+ ->method('getList')
+ ->withConsecutive([0, 50], [0, 40], [0, 32], [32, 32], [64, 32])
+ ->willReturnOnConsecutiveCalls($userBatches[0], $userBatches[1], $userBatches[2], $userBatches[3], $userBatches[4]);
+
+ $this->groupMapper->expects($this->once())
+ ->method('getList')
+ ->with(0, 50)
+ ->willReturn($groupBatches[0]);
+
+ $this->jobList->expects($this->at(0))
+ ->method('add')
+ ->willThrowException(new \InvalidArgumentException('Background job arguments can\'t exceed 4000 etc'));
+ $this->jobList->expects($this->at(1))
+ ->method('add')
+ ->willThrowException(new \InvalidArgumentException('Background job arguments can\'t exceed 4000 etc'));
+ $this->jobList->expects($this->at(2))
+ ->method('add');
+ $this->jobList->expects($this->at(3))
+ ->method('add');
+ $this->jobList->expects($this->at(4))
+ ->method('add');
+
+ /** @var IOutput $out */
+ $out = $this->createMock(IOutput::class);
+ $this->job->run($out);
+ }
+
+ public function testDonNotRun() {
+ $this->config->expects($this->once())
+ ->method('getAppValue')
+ ->with('user_ldap', 'installed_version', '1.2.1')
+ ->willReturn('1.2.1');
+ $this->userMapper->expects($this->never())
+ ->method('getList');
+ $this->groupMapper->expects($this->never())
+ ->method('getList');
+ $this->jobList->expects($this->never())
+ ->method('add');
+
+ /** @var IOutput $out */
+ $out = $this->createMock(IOutput::class);
+ $this->job->run($out);
+ }
+}
diff --git a/apps/user_ldap/tests/Migration/UUIDFixUserTest.php b/apps/user_ldap/tests/Migration/UUIDFixUserTest.php
new file mode 100644
index 00000000000..28eca1608d2
--- /dev/null
+++ b/apps/user_ldap/tests/Migration/UUIDFixUserTest.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Tests\Migration;
+
+use OCA\User_LDAP\Migration\UUIDFixUser;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\User_Proxy;
+
+/**
+ * Class UUIDFixUserTest
+ *
+ * @package OCA\User_LDAP\Tests\Migration
+ * @group DB
+ */
+class UUIDFixUserTest extends AbstractUUIDFixTest {
+ public function setUp() {
+ $this->isUser = true;
+ parent::setUp();
+
+ $this->mapper = $this->createMock(UserMapping::class);
+
+ $this->mockProxy(User_Proxy::class);
+ $this->instantiateJob(UUIDFixUser::class);
+ }
+}
diff --git a/apps/workflowengine/l10n/zh_CN.js b/apps/workflowengine/l10n/zh_CN.js
index 9f7071a6c88..19c294371ee 100644
--- a/apps/workflowengine/l10n/zh_CN.js
+++ b/apps/workflowengine/l10n/zh_CN.js
@@ -49,7 +49,9 @@ OC.L10N.register(
"The given group does not exist" : "输入的群组不存在",
"Operation #%s does not exist" : "操作 %s 不存在",
"Operation %s does not exist" : "操作 %s 不存在",
+ "Operation %s is invalid" : "操作 %s 无效",
"Workflow" : "数据流",
+ "Add rule group" : "添加规则组",
"Add rule" : "添加规则",
"Reset" : "重置",
"Save" : "保存",
diff --git a/apps/workflowengine/l10n/zh_CN.json b/apps/workflowengine/l10n/zh_CN.json
index b5138ba8e8f..410cc7f8479 100644
--- a/apps/workflowengine/l10n/zh_CN.json
+++ b/apps/workflowengine/l10n/zh_CN.json
@@ -47,7 +47,9 @@
"The given group does not exist" : "输入的群组不存在",
"Operation #%s does not exist" : "操作 %s 不存在",
"Operation %s does not exist" : "操作 %s 不存在",
+ "Operation %s is invalid" : "操作 %s 无效",
"Workflow" : "数据流",
+ "Add rule group" : "添加规则组",
"Add rule" : "添加规则",
"Reset" : "重置",
"Save" : "保存",
diff --git a/build/.htaccess b/build/.htaccess
index c7a7b79feac..853aed187d3 100644
--- a/build/.htaccess
+++ b/build/.htaccess
@@ -9,4 +9,6 @@ deny from all
</ifModule>
# section for Apache 2.2 and 2.4
+<ifModule mod_autoindex.c>
IndexIgnore *
+</ifModule>
diff --git a/config/.htaccess b/config/.htaccess
index c7a7b79feac..853aed187d3 100644
--- a/config/.htaccess
+++ b/config/.htaccess
@@ -9,4 +9,6 @@ deny from all
</ifModule>
# section for Apache 2.2 and 2.4
+<ifModule mod_autoindex.c>
IndexIgnore *
+</ifModule>
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php
index 954a18e8778..abb1df4bcd4 100644
--- a/core/Controller/LoginController.php
+++ b/core/Controller/LoginController.php
@@ -1,8 +1,10 @@
<?php
/**
+ * @copyright Copyright (c) 2017, Sandro Lutz <sandro.lutz@temparus.ch>
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Sandro Lutz <sandro.lutz@temparus.ch>
* @author Christoph Wurst <christoph@owncloud.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -44,6 +46,7 @@ use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
+use OC\Hooks\PublicEmitter;
class LoginController extends Controller {
/** @var IUserManager */
@@ -214,6 +217,10 @@ class LoginController extends Controller {
return $this->generateRedirect($redirect_url);
}
+ if ($this->userManager instanceof PublicEmitter) {
+ $this->userManager->emit('\OC\User', 'preLogin', array($user, $password));
+ }
+
$originalUser = $user;
// TODO: Add all the insane error handling
/* @var $loginResult IUser */
diff --git a/core/css/apps.scss b/core/css/apps.scss
index f1ddc95e092..91805fe16b2 100644
--- a/core/css/apps.scss
+++ b/core/css/apps.scss
@@ -420,6 +420,11 @@ em {
input[type='text'] {
width: 93%;
}
+
+ .info-text {
+ padding: 5px 0 7px 22px;
+ color: #999;
+ }
}
#app-settings-header {
diff --git a/core/css/guest.css b/core/css/guest.css
index 292ae40e8d6..7549eb265be 100644
--- a/core/css/guest.css
+++ b/core/css/guest.css
@@ -43,7 +43,7 @@ p.info a:hover {
}
em {
font-style: normal;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=50)';
opacity: .5;
}
@@ -134,8 +134,8 @@ input {
outline: none;
border-radius: 3px;
}
-input[type="submit"],
-input[type="button"],
+input[type='submit'],
+input[type='button'],
button, .button,
select {
width: auto;
@@ -147,8 +147,8 @@ select {
border: 1px solid rgba(240,240,240,.9);
cursor: pointer;
}
-input[type="text"],
-input[type="password"],
+input[type='text'],
+input[type='password'],
input[type='email'] {
width: 249px;
background: #fff;
@@ -165,7 +165,7 @@ input.login {
width: 269px;
background-position: right 16px center;
}
-input[type="submit"],
+input[type='submit'],
input.updateButton,
input.update-continue {
padding: 10px 20px; /* larger log in and installation buttons */
@@ -177,65 +177,60 @@ button.primary {
color: #fff;
}
-/* Checkboxes */
+/* Checkboxes - white only for login */
input[type='checkbox'].checkbox {
- height:1px;
- left:-10000px;
- overflow:hidden;
- position:absolute;
- top:auto;
- width:1px;
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
}
input[type='checkbox'].checkbox + label {
- user-select:none;
+ user-select: none;
}
input[type='checkbox'].checkbox:disabled + label,
input[type='checkbox'].checkbox:disabled + label:before {
- cursor:default;
+ cursor: default;
}
input[type='checkbox'].checkbox + label:before {
- background-position:center;
- border:1px solid #888;
- border-radius:1px;
- content:'';
- display:inline-block;
- height:10px;
- margin:3px;
- margin-top:1px;
- vertical-align:middle;
- width:10px;
+ content: '';
+ display: inline-block;
+ vertical-align: middle;
+ margin: 3px;
+ margin-top: 1px;
+ border: 1px solid #888;
+ border-radius: 1px;
+ height: 10px;
+ width: 10px;
+ background-position: center;
+}
+input[type='checkbox'].checkbox--white + label:before {
+ border-color: #ddd;
}
input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before,
input[type='checkbox'].checkbox--white:focus + label:before {
- border-color:#fff;
+ border-color: #fff;
}
-input[type='checkbox'].checkbox--white:checked + label:before,
-input[type='checkbox'].checkbox--white.checkbox:indeterminate + label:before {
- border-color:#fff;
+input[type='checkbox'].checkbox--white:checked + label:before {
background-color: #eee;
+ border-color: #eee;
}
input[type='checkbox'].checkbox--white:disabled + label:before {
- background-color:#666;
- border-color:#999;
+ background-color: #666 !important;
+ border-color: #999 !important;
}
input[type='checkbox'].checkbox--white:checked:disabled + label:before {
- border-color:#666;
+ border-color: #666;
+ background-color: #222;
}
input[type='checkbox'].checkbox--white:checked + label:before {
- background-image:url('../img/actions/checkbox-mark-white.svg');
-}
-input[type='checkbox'].checkbox--white:indeterminate + label:before {
- background-image:url('../img/actions/checkbox-mixed-white.svg');
-}
-input[type='checkbox'].checkbox--white:indeterminate:disabled + label:after {
- background-color:#aaa;
- border-color:#888;
-}
-input[type='checkbox'].checkbox--white + label:before,
-input[type='checkbox'].checkbox--white:checked:disabled + label:after {
- border-color:#aaa;
+ background-color: transparent !important;
+ border-color: #fff !important;
+ background-image: url('../img/actions/checkbox-mark-white.svg');
}
+
/* keep the labels for screen readers but hide them since we use placeholders */
label.infield {
display: none;
@@ -273,7 +268,7 @@ label.infield {
padding: 14px !important;
}
#show:checked + label, #dbpassword-toggle:checked + label, #personal-show:checked + label {
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';
opacity: .8;
}
#show + label, #dbpassword-toggle + label, #personal-show + label {
@@ -283,13 +278,13 @@ label.infield {
background-image: url('../img/actions/toggle.svg?v=1');
background-repeat: no-repeat;
background-position: center;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=30)';
opacity: .3;
}
#show + label:before, #dbpassword-toggle + label:before, #personal-show + label:before {
display: none;
}
-#pass2, input[name="personal-password-clone"] {
+#pass2, input[name='personal-password-clone'] {
padding: .6em 2.5em .4em .4em;
width: 8em;
}
@@ -308,14 +303,14 @@ p.info,
form fieldset legend,
#datadirContent label,
form fieldset .warning-info,
-form input[type="checkbox"]+label {
+form input[type='checkbox']+label {
text-align: center;
color: #fff;
}
/* overrides another !important statement that sets this to unreadable black */
-form .warning input[type="checkbox"]:hover+label,
-form .warning input[type="checkbox"]:focus+label,
-form .warning input[type="checkbox"]+label {
+form .warning input[type='checkbox']:hover+label,
+form .warning input[type='checkbox']:focus+label,
+form .warning input[type='checkbox']+label {
color: #fff !important;
}
@@ -449,7 +444,7 @@ form #selectDbType label.ui-state-active {
.error a {
color: #fff !important;
font-weight: 600 !important;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';
opacity: 1;
}
.error a.button {
@@ -593,16 +588,16 @@ p.info {
}
/* Css replaced elements don't have ::after nor ::before */
img.icon-loading, object.icon-loading, video.icon-loading, button.icon-loading, textarea.icon-loading, input.icon-loading, select.icon-loading {
- background-image: url("../img/loading.gif");
+ background-image: url('../img/loading.gif');
}
img.icon-loading-dark, object.icon-loading-dark, video.icon-loading-dark, button.icon-loading-dark, textarea.icon-loading-dark, input.icon-loading-dark, select.icon-loading-dark {
- background-image: url("../img/loading-dark.gif");
+ background-image: url('../img/loading-dark.gif');
}
img.icon-loading-small, object.icon-loading-small, video.icon-loading-small, button.icon-loading-small, textarea.icon-loading-small, input.icon-loading-small, select.icon-loading-small {
- background-image: url("../img/loading-small.gif");
+ background-image: url('../img/loading-small.gif');
}
img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-small-dark, button.icon-loading-small-dark, textarea.icon-loading-small-dark, input.icon-loading-small-dark, select.icon-loading-small-dark {
- background-image: url("../img/loading-small-dark.gif");
+ background-image: url('../img/loading-small-dark.gif');
}
@-webkit-keyframes rotate {
from {
@@ -629,4 +624,4 @@ img.icon-loading-small-dark, object.icon-loading-small-dark, video.icon-loading-
footer,
.push {
height: 70px;
-} \ No newline at end of file
+}
diff --git a/core/css/icons.scss b/core/css/icons.scss
index 28f6bd9bbb8..f4ae0ce8d5f 100644
--- a/core/css/icons.scss
+++ b/core/css/icons.scss
@@ -290,6 +290,22 @@ img, object, video, button, textarea, input, select {
background-image: url('../img/actions/rename.svg?v=1');
}
+.icon-screen {
+ background-image: url('../img/actions/screen.svg?v=1');
+}
+
+.icon-screen-white {
+ background-image: url('../img/actions/screen-white.svg?v=1');
+}
+
+.icon-screen-off {
+ background-image: url('../img/actions/screen-off.svg?v=1');
+}
+
+.icon-screen-off-white {
+ background-image: url('../img/actions/screen-off-white.svg?v=1');
+}
+
.icon-search {
background-image: url('../img/actions/search.svg?v=1');
}
diff --git a/core/img/actions/screen-off-white.svg b/core/img/actions/screen-off-white.svg
new file mode 100644
index 00000000000..dca13c32b75
--- /dev/null
+++ b/core/img/actions/screen-off-white.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
+ <defs>
+ <filter id="a" style="color-interpolation-filters:sRGB" height="1.3602" width="1.3598" y="-.18008" x="-.17992">
+ <feGaussianBlur stdDeviation="1.0495605"/>
+ </filter>
+ </defs>
+ <path opacity=".5" d="m12.986 1.0117v0.00195c-0.255 0-0.51103 0.095216-0.70703 0.29102l-9.986 9.9844c-0.3918 0.392-0.3918 1.024 0 1.416 0.3917 0.392 1.0242 0.392 1.416 0l9.984-9.9862c0.392-0.392 0.392-1.0223 0-1.4141-0.196-0.1958-0.45103-0.29297-0.70703-0.29297zm-10.986 0.9883c-0.554 0-1 0.446-1 1v8c0 0.15223 0.03927 0.29296 0.09961 0.42188 0.09087-0.30747 0.24693-0.59837 0.48633-0.83789v-0.002l1.4141-1.414v-5.168h5.1699l2-2h-8.17zm12.893 0.56641c-0.08943 0.31553-0.24744 0.61463-0.49219 0.85938l-1.401 1.4004v5.1738h-5.1719l-2 2h1.1719v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.1573-0.043-0.3014-0.107-0.4336z" fill-rule="evenodd" filter="url(#a)"/>
+ <path d="m12.986 1.0117v0.00195c-0.255 0-0.51103 0.095216-0.70703 0.29102l-9.986 9.9844c-0.3918 0.392-0.3918 1.024 0 1.416 0.3917 0.392 1.0242 0.392 1.416 0l9.984-9.9862c0.392-0.392 0.392-1.0223 0-1.4141-0.196-0.1958-0.45103-0.29297-0.70703-0.29297zm-10.986 0.9883c-0.554 0-1 0.446-1 1v8c0 0.15223 0.03927 0.29296 0.09961 0.42188 0.09087-0.30747 0.24693-0.59837 0.48633-0.83789v-0.002l1.4141-1.414v-5.168h5.1699l2-2h-8.17zm12.893 0.56641c-0.08943 0.31553-0.24744 0.61463-0.49219 0.85938l-1.401 1.4004v5.1738h-5.1719l-2 2h1.1719v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.1573-0.043-0.3014-0.107-0.4336z" fill-rule="evenodd" fill="#fff"/>
+</svg>
diff --git a/core/img/actions/screen-off.svg b/core/img/actions/screen-off.svg
new file mode 100644
index 00000000000..54b4218ba2c
--- /dev/null
+++ b/core/img/actions/screen-off.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m12.986 1.0117v0.002c-0.255 0-0.511 0.0952-0.707 0.291l-9.986 9.9843c-0.3918 0.392-0.3918 1.024 0 1.416 0.3917 0.392 1.0242 0.392 1.416 0l9.984-9.9862c0.392-0.392 0.392-1.0223 0-1.4141-0.196-0.1958-0.451-0.293-0.707-0.293zm-10.986 0.9883c-0.554 0-1 0.446-1 1v8c0 0.152 0.0393 0.293 0.0996 0.422 0.0909-0.308 0.2469-0.598 0.4863-0.838v-0.002l1.4141-1.414v-5.168h5.1699l2.0001-2h-8.17zm12.893 0.5664c-0.09 0.3155-0.248 0.6146-0.493 0.8594l-1.4 1.4004v5.1738h-5.1719l-2 2h1.1719v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.1573-0.043-0.3014-0.107-0.4336z"/>
+</svg>
diff --git a/core/img/actions/screen-white.svg b/core/img/actions/screen-white.svg
new file mode 100644
index 00000000000..20372949afb
--- /dev/null
+++ b/core/img/actions/screen-white.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
+ <defs>
+ <filter id="a" style="color-interpolation-filters:sRGB" height="1.3738" width="1.3471" y="-.18692" x="-.17357">
+ <feGaussianBlur stdDeviation="1.0125"/>
+ </filter>
+ </defs>
+ <path opacity=".5" d="m2 2c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h5v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1zm1 2h10v6h-10z" fill-rule="evenodd" filter="url(#a)"/>
+ <path d="m2 2c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h5v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1zm1 2h10v6h-10z" fill-rule="evenodd" fill="#fff"/>
+</svg>
diff --git a/core/img/actions/screen.svg b/core/img/actions/screen.svg
new file mode 100644
index 00000000000..b4005ca5d14
--- /dev/null
+++ b/core/img/actions/screen.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="m2 2c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h5v1h-2v2h6v-2h-2v-1h5c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1zm1 2h10v6h-10z"/>
+</svg>
diff --git a/core/l10n/da.js b/core/l10n/da.js
index f072a3c8ea3..4ff2fb33a7d 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -3,6 +3,8 @@ OC.L10N.register(
{
"Please select a file." : "Vælg fil",
"File is too big" : "Filen er for stor",
+ "The selected file is not an image." : "Den valgte fil er ikke et billede.",
+ "The selected file cannot be read." : "Den valgte fil kan ikke læses.",
"Invalid file provided" : "Der er angivet en ugyldig fil",
"No image or file provided" : "Ingen fil eller billede givet",
"Unknown filetype" : "Ukendt filtype",
@@ -19,6 +21,7 @@ OC.L10N.register(
"%s password reset" : "%s adgangskode nulstillet",
"Couldn't send reset email. Please contact your administrator." : "Der opstod et problem under afsending af e-mailen til nulstilling. Kontakt venligst systemadministratoren.",
"Preparing update" : "Forbereder opdatering",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Reparationsadvarsel:",
"Repair error: " : "Reparationsfejl:",
"Please use the command line updater because automatic updating is disabled in the config.php." : "Brug kommandolinje-updateren, da automatisk opdatering er slået fra i config.php",
@@ -46,8 +49,9 @@ OC.L10N.register(
"Saving..." : "Gemmer...",
"Dismiss" : "Afvis",
"Password" : "Adgangskode",
- "Cancel" : "Annuller",
+ "Cancel" : "Annullér",
"seconds ago" : "sekunder siden",
+ "Logging in …" : "Logger ind ...",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linket til at nulstille dit kodeord er blevet sendt til din e-post: hvis du ikke modtager den inden for en rimelig tid, så tjek dine spam/junk-mapper.<br> Hvis det ikke er der, så spørg din lokale administrator.",
"I know what I'm doing" : "Jeg ved, hvad jeg har gang i",
"Password can not be changed. Please contact your administrator." : "Adgangskoden kunne ikke ændres. Kontakt venligst din administrator.",
@@ -95,6 +99,9 @@ OC.L10N.register(
"Expiration" : "Udløb",
"Expiration date" : "Udløbsdato",
"Choose a password for the public link" : "Vælg et kodeord til det offentlige link",
+ "Copy" : "Kopiér",
+ "Press ⌘-C to copy." : "Tryk ⌘-C for at kopiere.",
+ "Press Ctrl-C to copy." : "Tryk Ctrl-C for at kopiere.",
"Resharing is not allowed" : "Videredeling ikke tilladt",
"Share link" : "Del link",
"Link" : "Link",
@@ -106,6 +113,7 @@ OC.L10N.register(
"Shared with you by {owner}" : "Delt med dig af {owner}",
"group" : "gruppe",
"remote" : "ekstern",
+ "email" : "e-mail",
"Unshare" : "Fjern deling",
"can edit" : "kan redigere",
"access control" : "Adgangskontrol",
@@ -119,6 +127,7 @@ OC.L10N.register(
"Non-existing tag #{tag}" : "Ikke-eksisterende mærke #{tag}",
"restricted" : "begrænset",
"invisible" : "usynlig",
+ "({scope})" : "({scope})",
"Delete" : "Slet",
"Rename" : "Omdøb",
"The object type is not specified." : "Objekttypen er ikke angivet.",
@@ -138,6 +147,7 @@ OC.L10N.register(
"Please reload the page." : "Genindlæs venligst siden",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Opdateringen blev ikke udført korrekt. For mere information <a href=\"{url}\">tjek vores indlæg på forumet</a>, som dækker dette problem.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud fællesskabet</a>.",
+ "Continue to Nextcloud" : "Forsæt til Nextcloud",
"The update was successful. Redirecting you to Nextcloud now." : "Opdateringen blev udført korrekt. Du bliver nu viderestillet til Nextcloud.",
"Searching other places" : "Søger på andre steder",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} søgeresultat fundet i andre mapper","{count} søgeresultater fundet i andre mapper"],
@@ -193,6 +203,7 @@ OC.L10N.register(
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikation kræver JavaScript for at fungere korrekt. {linkstart}Slå venligst JavaScript til{linkend} og genindlæs siden. ",
"Search" : "Søg",
"Log out" : "Log ud",
+ "Confirm your password" : "Bekræft dit password",
"Server side authentication failed!" : "Server side godkendelse mislykkedes!",
"Please contact your administrator." : "Kontakt venligst din administrator",
"An internal error occurred." : "Der opstod en intern fejl.",
@@ -223,6 +234,7 @@ OC.L10N.register(
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Sørg venligst for at sikre, at databasen, config-mappen og data-mappen er blevet sikkerhedskopieret inden vi fortsætter.",
"Start update" : "Begynd opdatering",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "For at undgå tidsudløb ved større installationer, så kan du i stedet køre følgende kommando fra din installationsmappe:",
+ "Update needed" : "Opdatering nødvendig",
"This %s instance is currently in maintenance mode, which may take a while." : "Denne %s-instans befinder sig i vedligeholdelsestilstand for øjeblikket, hvilket kan tage et stykke tid.",
"This page will refresh itself when the %s instance is available again." : "Denne side vil genopfriske sig selv, når %s-instancen er tilgængelig igen.",
"Error loading tags" : "Fejl ved indlæsning af mærker",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 83dcf681709..faf0e763e3c 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -1,6 +1,8 @@
{ "translations": {
"Please select a file." : "Vælg fil",
"File is too big" : "Filen er for stor",
+ "The selected file is not an image." : "Den valgte fil er ikke et billede.",
+ "The selected file cannot be read." : "Den valgte fil kan ikke læses.",
"Invalid file provided" : "Der er angivet en ugyldig fil",
"No image or file provided" : "Ingen fil eller billede givet",
"Unknown filetype" : "Ukendt filtype",
@@ -17,6 +19,7 @@
"%s password reset" : "%s adgangskode nulstillet",
"Couldn't send reset email. Please contact your administrator." : "Der opstod et problem under afsending af e-mailen til nulstilling. Kontakt venligst systemadministratoren.",
"Preparing update" : "Forbereder opdatering",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Reparationsadvarsel:",
"Repair error: " : "Reparationsfejl:",
"Please use the command line updater because automatic updating is disabled in the config.php." : "Brug kommandolinje-updateren, da automatisk opdatering er slået fra i config.php",
@@ -44,8 +47,9 @@
"Saving..." : "Gemmer...",
"Dismiss" : "Afvis",
"Password" : "Adgangskode",
- "Cancel" : "Annuller",
+ "Cancel" : "Annullér",
"seconds ago" : "sekunder siden",
+ "Logging in …" : "Logger ind ...",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linket til at nulstille dit kodeord er blevet sendt til din e-post: hvis du ikke modtager den inden for en rimelig tid, så tjek dine spam/junk-mapper.<br> Hvis det ikke er der, så spørg din lokale administrator.",
"I know what I'm doing" : "Jeg ved, hvad jeg har gang i",
"Password can not be changed. Please contact your administrator." : "Adgangskoden kunne ikke ændres. Kontakt venligst din administrator.",
@@ -93,6 +97,9 @@
"Expiration" : "Udløb",
"Expiration date" : "Udløbsdato",
"Choose a password for the public link" : "Vælg et kodeord til det offentlige link",
+ "Copy" : "Kopiér",
+ "Press ⌘-C to copy." : "Tryk ⌘-C for at kopiere.",
+ "Press Ctrl-C to copy." : "Tryk Ctrl-C for at kopiere.",
"Resharing is not allowed" : "Videredeling ikke tilladt",
"Share link" : "Del link",
"Link" : "Link",
@@ -104,6 +111,7 @@
"Shared with you by {owner}" : "Delt med dig af {owner}",
"group" : "gruppe",
"remote" : "ekstern",
+ "email" : "e-mail",
"Unshare" : "Fjern deling",
"can edit" : "kan redigere",
"access control" : "Adgangskontrol",
@@ -117,6 +125,7 @@
"Non-existing tag #{tag}" : "Ikke-eksisterende mærke #{tag}",
"restricted" : "begrænset",
"invisible" : "usynlig",
+ "({scope})" : "({scope})",
"Delete" : "Slet",
"Rename" : "Omdøb",
"The object type is not specified." : "Objekttypen er ikke angivet.",
@@ -136,6 +145,7 @@
"Please reload the page." : "Genindlæs venligst siden",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Opdateringen blev ikke udført korrekt. For mere information <a href=\"{url}\">tjek vores indlæg på forumet</a>, som dækker dette problem.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud fællesskabet</a>.",
+ "Continue to Nextcloud" : "Forsæt til Nextcloud",
"The update was successful. Redirecting you to Nextcloud now." : "Opdateringen blev udført korrekt. Du bliver nu viderestillet til Nextcloud.",
"Searching other places" : "Søger på andre steder",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} søgeresultat fundet i andre mapper","{count} søgeresultater fundet i andre mapper"],
@@ -191,6 +201,7 @@
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denne applikation kræver JavaScript for at fungere korrekt. {linkstart}Slå venligst JavaScript til{linkend} og genindlæs siden. ",
"Search" : "Søg",
"Log out" : "Log ud",
+ "Confirm your password" : "Bekræft dit password",
"Server side authentication failed!" : "Server side godkendelse mislykkedes!",
"Please contact your administrator." : "Kontakt venligst din administrator",
"An internal error occurred." : "Der opstod en intern fejl.",
@@ -221,6 +232,7 @@
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Sørg venligst for at sikre, at databasen, config-mappen og data-mappen er blevet sikkerhedskopieret inden vi fortsætter.",
"Start update" : "Begynd opdatering",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "For at undgå tidsudløb ved større installationer, så kan du i stedet køre følgende kommando fra din installationsmappe:",
+ "Update needed" : "Opdatering nødvendig",
"This %s instance is currently in maintenance mode, which may take a while." : "Denne %s-instans befinder sig i vedligeholdelsestilstand for øjeblikket, hvilket kan tage et stykke tid.",
"This page will refresh itself when the %s instance is available again." : "Denne side vil genopfriske sig selv, når %s-instancen er tilgængelig igen.",
"Error loading tags" : "Fejl ved indlæsning af mærker",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
new file mode 100644
index 00000000000..b17e18b7452
--- /dev/null
+++ b/core/l10n/eu.js
@@ -0,0 +1,373 @@
+OC.L10N.register(
+ "core",
+ {
+ "Please select a file." : "Fitxategi bat aukeratu mesedez",
+ "File is too big" : "Fitxategia handiegia da",
+ "The selected file is not an image." : "Aukeratutako fitxategia ez da irudi bat.",
+ "The selected file cannot be read." : "Aukeratutako fitxategia ezin da aukeratu",
+ "Invalid file provided" : "Invalid file provided",
+ "No image or file provided" : "Ez da irudi edo fitxategirik zehaztu",
+ "Unknown filetype" : "Fitxategi mota ezezaguna",
+ "Invalid image" : "Baliogabeko irudia",
+ "An error occurred. Please contact your admin." : "Errore bat izan da, administraria kontaktatu.app",
+ "No temporary profile picture available, try again" : "Ez dago behin-behineko profil irudirik, saiatu berriro",
+ "No crop data provided" : "Ez da ebaketaren daturik eskaini",
+ "No valid crop data provided" : "Ebakidura baliogabea da",
+ "Crop is not square" : "Ebakidura ez da karratua",
+ "Couldn't reset password because the token is invalid" : "Ezin izan da pasahitza berrezarri tokena baliogabea delako",
+ "Couldn't reset password because the token is expired" : "Ezin da berrezarri pasahitza token-a iraungi duelako.",
+ "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berreskuratze posta elektronikoa bidali helbiderik ez dagoelako erabiltzaile honetarako. Jarri harremanetan administratzailearekin.",
+ "%s password reset" : "%s pasahitza berrezarri",
+ "Couldn't send reset email. Please contact your administrator." : "Ezin da berrezartzeko eposta bidali. Mesedez jarri harremetan zure administradorearekin.",
+ "Preparing update" : "Eguneratzea prestatzen",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair warning: " : "Konponketa abisua:",
+ "Repair error: " : "Akatsa konpondu:",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroa eguneratzeko, eguneratze automatikoa config.php-n desgaituta dago eta.",
+ "[%d / %d]: Checking table %s" : "[%d / %d]: Taula egiaztatzen %s",
+ "Turned on maintenance mode" : "Mantenu modua gaitu da",
+ "Turned off maintenance mode" : "Mantenu modua desgaitu da",
+ "Maintenance mode is kept active" : "Mantentze modua aktibatuta dago oraindik.",
+ "Updating database schema" : "Datu-basearen eskema eguneratzen",
+ "Updated database" : "Datu-basea eguneratuta",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Datu-basearen eskema eguneratu daitekeen egiaztatzen (honek luzerako hartu dezake datu-basearen arabera)",
+ "Checked database schema update" : "Egiaztatuta datu-basearen zerbitzariaren eguneraketa",
+ "Checking updates of apps" : "Aplikazioentzako eguneraketak egiaztatzen",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s datu-basearen eskema eguneratu daitekeen egiaztatzen (honek luzerako hartu dezake datu-basearen arabera)",
+ "Checked database schema update for apps" : "Egiaztatuta aplikazioen datu-basearen zerbitzariaren eguneraketa",
+ "Updated \"%s\" to %s" : "\"%s\" %s-ra eguneratua",
+ "Set log level to debug" : "Set log level to debug",
+ "Reset log level" : "Reset log level",
+ "Starting code integrity check" : "Kodearen integritate egiaztapena hasten",
+ "Finished code integrity check" : "Kodearen integritate egiaztapena bukatuta",
+ "%s (3rdparty)" : "%s (3rdparty)",
+ "%s (incompatible)" : "%s (incompatible)",
+ "Following apps have been disabled: %s" : "Hurrengo aplikazioak desgaitu egin dira: %s",
+ "Already up to date" : "Dagoeneko eguneratuta",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kodearen integritate egiaztapenarekin arazoak egon dira. Informazio gehiago…</a>",
+ "Settings" : "Ezarpenak",
+ "Connection to server lost" : "Zerbitzariarekiko konexioa eten da",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Arazoa orria kargatzerakoan, birkargatzen segundu batean","Arazoa orria kargatzerakoan, birkargatzen %n segundutan"],
+ "Saving..." : "Gordetzen...",
+ "Dismiss" : "Ezikusi",
+ "This action requires you to confirm your password" : "Ekintza hau zure pasahitza konfirmatzeko eskatuko dizu",
+ "Authentication required" : "Autentifikazioa beharrezkoa",
+ "Password" : "Pasahitza",
+ "Cancel" : "Ezeztatu",
+ "Confirm" : "Baieztatu",
+ "Failed to authenticate, try again" : "Huts egindu  autentifikazioa, berriz saiatu",
+ "seconds ago" : "segundu",
+ "Logging in …" : "Saioa hasten ...",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Zure pasahitza berrezartzeko lotura zure postara bidalia izan da.<br>Ez baduzu arrazoizko denbora epe batean jasotzen begiratu zure zabor-posta karpetan.<br>Hor ere ez badago kudeatzailearekin harremanetan jarri.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak zifratzen dira. Pasahitza aldatuz gero, ez dago zure datuak berreskuratzeko modurik.<br />Ziur ez bazaude, jarri harremanetan administratzailearekin jarraitu baino lehen. <br />Ziur zaude jarraitu nahi duzula?",
+ "I know what I'm doing" : "Badakit zer ari naizen egiten",
+ "Password can not be changed. Please contact your administrator." : "Ezin da pasahitza aldatu. Mesedez jarri harremetan zure administradorearekin.",
+ "No" : "Ez",
+ "Yes" : "Bai",
+ "No files in here" : "Ez dago fitxategirik hemen",
+ "Choose" : "Aukeratu",
+ "Error loading file picker template: {error}" : "Errorea fitxategi hautatzaile txantiloiak kargatzerakoan: {error}",
+ "Ok" : "Ados",
+ "Error loading message template: {error}" : "Errorea mezu txantiloia kargatzean: {error}",
+ "read-only" : "irakurtzeko-soilik",
+ "_{count} file conflict_::_{count} file conflicts_" : ["fitxategi {count}ek konfliktua sortu du","{count} fitxategik konfliktua sortu dute"],
+ "One file conflict" : "Fitxategi batek konfliktua sortu du",
+ "New Files" : "Fitxategi Berriak",
+ "Already existing files" : "Dagoeneko existitzen diren fitxategiak",
+ "Which files do you want to keep?" : "Ze fitxategi mantendu nahi duzu?",
+ "If you select both versions, the copied file will have a number added to its name." : "Bi bertsioak hautatzen badituzu, kopiatutako fitxategiaren izenean zenbaki bat atxikituko zaio.",
+ "Continue" : "Jarraitu",
+ "(all selected)" : "(denak hautatuta)",
+ "({count} selected)" : "({count} hautatuta)",
+ "Error loading file exists template" : "Errorea fitxategia existitzen da txantiloiak kargatzerakoan",
+ "Pending" : "Zain",
+ "Very weak password" : "Pasahitz oso ahula",
+ "Weak password" : "Pasahitz ahula",
+ "So-so password" : "Halamoduzko pasahitza",
+ "Good password" : "Pasahitz ona",
+ "Strong password" : "Pasahitz sendoa",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Zure web zerbitzaria ez dago oraindik konfiguratuta fitxategia sinkronizazioa ahalbidetzeko WebDAV interfazea badirudi hautsita dagoela.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Zure web zerbitzaria ez dago behar bezala konfiguratuta \"{url}\" irekitzeko. Informazio gehiago gure <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentazioan </a> aurki daiteke.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
+ "Error occurred while checking server setup" : "Akatsa gertatu da zerbitzariaren konfigurazioa egiaztatzean",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>.",
+ "Shared" : "Elkarbanatuta",
+ "Shared with {recipients}" : "{recipients}-rekin partekatua.",
+ "Error" : "Errorea",
+ "Error while sharing" : "Errore bat egon da elkarbanatzean",
+ "Error while unsharing" : "Errore bat egon da elkarbanaketa desegitean",
+ "Error setting expiration date" : "Errore bat egon da muga data ezartzean",
+ "The public link will expire no later than {days} days after it is created" : "Esteka publikoak iraungi egingo du, askoz jota, sortu eta {days} egunetara.",
+ "Set expiration date" : "Ezarri muga data",
+ "Expiration" : "Iraungitzea",
+ "Expiration date" : "Muga data",
+ "Choose a password for the public link" : "Aukeratu pasahitz bat esteka publikorako",
+ "Copied!" : "Kopiatuta!",
+ "Copy" : "Kopiatu",
+ "Not supported!" : "Ez da onartzen!",
+ "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.",
+ "Press Ctrl-C to copy." : "Sakatu Ctrl-C kpiatzeko.",
+ "Resharing is not allowed" : "Berriz elkarbanatzea ez dago baimendua",
+ "Share link" : "Elkarbanatu lotura",
+ "Link" : "Esteka",
+ "Password protect" : "Babestu pasahitzarekin",
+ "Allow upload and editing" : "Onartu igoera eta edizioa",
+ "Allow editing" : "Baimendu editatzea",
+ "File drop (upload only)" : "Fitxategiak utzi (igo bakarrik)",
+ "Email link to person" : "Postaz bidali lotura ",
+ "Send" : "Bidali",
+ "Shared with you and the group {group} by {owner}" : "{owner}-k zu eta {group} taldearekin elkarbanatuta",
+ "Shared with you by {owner}" : "{owner}-k zurekin elkarbanatuta",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} link bidez partekatuta",
+ "group" : "taldea",
+ "remote" : "urrunekoa",
+ "email" : "posta-elektronikoa",
+ "Unshare" : "Ez elkarbanatu",
+ "can reshare" : "elkarbanatu dezake",
+ "can edit" : "editatu dezake",
+ "can create" : "sortu dezake",
+ "can change" : "aldatu dezake",
+ "can delete" : "ezabatu dezake",
+ "access control" : "sarrera kontrola",
+ "Could not unshare" : "Ezin izan despartekatu",
+ "Share details could not be loaded for this item." : "Partekatze xehetasunak ezin izan dira elementu honentzat kargatu.",
+ "No users or groups found for {search}" : "Ez dira {search} -rentzat erabiltzaile edo talderik aurkitu",
+ "No users found for {search}" : "Ez dira {search} -rentzat erabiltzailerik aurkitu",
+ "An error occurred. Please try again" : "Errore bat gertatu da. Saiatu berriro.",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
+ "Share" : "Elkarbanatu",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Partekatu beste zerbitzarietan dagoen jendearekin, beraien Federated Cloud ID erabiliz username@example.com/nextcloud",
+ "Share with users or by mail..." : "Erabiltzaileekin edo postaz elkarbanatu...",
+ "Share with users or remote users..." : "Erabiltzaile edo urruneko erabiltzaile batzuekin elkarbanatu...",
+ "Share with users, remote users or by mail..." : "Erabiltzaile, urruneko erabiltzaile edo postaz elkarbanatu...",
+ "Share with users or groups..." : "Erabiltzaile edo talde batekin elkarbanatu...",
+ "Share with users, groups or by mail..." : "Erabiltzaile, talde edo posta elektroniko bidez elkarbanatu...",
+ "Share with users, groups or remote users..." : "erabiltzaile, talde edo urruneko erabiltzaile batzuekin Elkarbanatu ...",
+ "Share with users, groups, remote users or by mail..." : "Erabiltzaile, talde, urruneko erabiltzaile edo postaz elkarbanatu...",
+ "Share with users..." : "Erabiltzaileekin elkarbanatu...",
+ "Error removing share" : " Akatsa kuota kentzerakoan",
+ "Non-existing tag #{tag}" : "#{tag} ez da existitzen",
+ "restricted" : "mugatua",
+ "invisible" : "ikusiezina",
+ "({scope})" : "({scope})",
+ "Delete" : "Ezabatu",
+ "Rename" : "Berrizendatu",
+ "Collaborative tags" : "Elkarlaneko etiketak",
+ "No tags found" : "Ez da etiketarik aurkitu",
+ "The object type is not specified." : "Objetu mota ez dago zehaztuta.",
+ "Enter new" : "Sartu berria",
+ "Add" : "Gehitu",
+ "Edit tags" : "Editatu etiketak",
+ "Error loading dialog template: {error}" : "Errorea elkarrizketa txantiloia kargatzean: {errorea}",
+ "No tags selected for deletion." : "Ez dira ezabatzeko etiketak hautatu.",
+ "unknown text" : "testu ezezaguna",
+ "Hello world!" : "Kaixo Mundua!",
+ "sunny" : "eguzkitsua",
+ "Hello {name}, the weather is {weather}" : "Kaixo {name}, eguraldia {weather} da",
+ "Hello {name}" : "Kaixo {name}",
+ "new" : "Berria",
+ "_download %n file_::_download %n files_" : ["%n fitxategia jaitsi","jaitsi %n fitxategiak"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Eguneratzea abian da, orri hau utziz prozesua eten liteke ingurune batzuetan.",
+ "Update to {version}" : "{version} bertsiora eguneratu",
+ "An error occurred." : "Akats bat gertatu da.",
+ "Please reload the page." : "Mesedez birkargatu orria.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.",
+ "Continue to Nextcloud" : "Nextcloudera abiatu",
+ "The update was successful. Redirecting you to Nextcloud now." : "The update was successful. Redirecting you to Nextcloud now.",
+ "Searching other places" : "Beste lekuak bilatzen",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Ez da '{tag}{filter}{endtag}-rentzako' bilaketa-emaitzik egon",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} bilaketa-emaitza beste karpeta batean","{count} bilaketa-emaitzak beste karpetetan"],
+ "Personal" : "Pertsonala",
+ "Users" : "Erabiltzaileak",
+ "Apps" : "Aplikazioak",
+ "Admin" : "Admin",
+ "Help" : "Laguntza",
+ "Access forbidden" : "Sarrera debekatuta",
+ "File not found" : "Ez da fitxategia aurkitu",
+ "The specified document has not been found on the server." : "Zehaztutako dokumentua ez da zerbitzarian aurkitu.",
+ "You can click here to return to %s." : "Hemen klika dezakezu %sra itzultzeko.",
+ "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Kaixo\n\n%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s\n\n",
+ "The share will expire on %s." : "Elkarbanaketa %s-n iraungiko da.",
+ "Cheers!" : "Ongi izan!",
+ "Internal Server Error" : "Zerbitzariaren Barne Errorea",
+ "The server encountered an internal error and was unable to complete your request." : "Zerbitzariak barne errore bat izan du eta ez da gai izan zure eskaria osatzeko.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Mesedez harremanetan jarri zerbitzariaren kudeatzailearekin errore hau aldi askotan agertzekotan, mesedez gehitu beheko zehaztapen teknikoak zure txostenean.",
+ "More details can be found in the server log." : "Zehaztapen gehiago zerbitzariaren egunerokoan aurki daitezke.",
+ "Technical details" : "Arazo teknikoak",
+ "Remote Address: %s" : "Urruneko Helbidea: %s",
+ "Request ID: %s" : "Eskariaren IDa: %s",
+ "Type: %s" : "Mota: %s",
+ "Code: %s" : "Kodea: %s",
+ "Message: %s" : "Mezua: %s",
+ "File: %s" : "Fitxategia: %s",
+ "Line: %s" : "Lerroa: %s",
+ "Trace" : "Arrastoa",
+ "Security warning" : "Segurtasun abisua",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>.",
+ "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat",
+ "Username" : "Erabiltzaile izena",
+ "Storage & database" : "Biltegia & datubasea",
+ "Data folder" : "Datuen karpeta",
+ "Configure the database" : "Konfiguratu datu basea",
+ "Only %s is available." : "Soilik %s dago eskuragarri.",
+ "Install and activate additional PHP modules to choose other database types." : "Instalatu eta aktibatu PHP modulu osagarriak, beste datu-base mota aukeratzeko.",
+ "For more details check out the documentation." : "Xehetasun gehiago nahi izanez gero, begiratu dokumentazioa.",
+ "Database user" : "Datubasearen erabiltzailea",
+ "Database password" : "Datubasearen pasahitza",
+ "Database name" : "Datubasearen izena",
+ "Database tablespace" : "Datu basearen taula-lekua",
+ "Database host" : "Datubasearen hostalaria",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Please specify the port number along with the host name (e.g., localhost:5432).",
+ "Performance warning" : "Errendimendua abisua",
+ "SQLite will be used as database." : "SQLite will be used as database.",
+ "For larger installations we recommend to choose a different database backend." : "For larger installations we recommend to choose a different database backend.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especially when using the desktop client for file syncing the use of SQLite is discouraged.",
+ "Finish setup" : "Bukatu konfigurazioa",
+ "Finishing …" : "Bukatzen...",
+ "Need help?" : "Laguntza behar al duzu?",
+ "See the documentation" : "Ikusi dokumentazioa",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page.",
+ "Search" : "Bilatu",
+ "Log out" : "Saioa bukatu",
+ "This action requires you to confirm your password:" : "Ekintza honek zure pasahitza konfirmatzeko eskatuko dizu:",
+ "Confirm your password" : "Berretsi pasahitza",
+ "Server side authentication failed!" : "Zerbitzari aldeko autentifikazioak huts egin du!",
+ "Please contact your administrator." : "Mesedez jarri harremetan zure administradorearekin.",
+ "An internal error occurred." : "Barne errorea gertatu da.",
+ "Please try again or contact your administrator." : "Saiatu berriro edo jarri harremanetan administratzailearekin.",
+ "Username or email" : "Erabiltzaile izena edo e-posta",
+ "Wrong password. Reset it?" : "Pasahitz okerra. Berrezarri?",
+ "Wrong password." : "Pasahitz okerra.",
+ "Log in" : "Hasi saioa",
+ "Stay logged in" : "Ez amaitu saioa",
+ "Alternative Logins" : "Beste erabiltzaile izenak",
+ "Use the following link to reset your password: {link}" : "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}",
+ "New password" : "Pasahitz berria",
+ "New Password" : "Pasahitz Berria",
+ "Reset password" : "Berrezarri pasahitza",
+ "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s",
+ "This Nextcloud instance is currently in single user mode." : "Nextcloud instantzia hau erabiltzaile bakar moduan dago.",
+ "This means only administrators can use the instance." : "Honek administradoreak bakarrik erabili dezakeela esan nahi du.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Jarri harremanetan zure sistema administratzailearekin mezu hau irauten badu edo bat-batean agertu bada.",
+ "Thank you for your patience." : "Milesker zure patzientziagatik.",
+ "Two-factor authentication" : "Bi faktoreko autentifikazioa",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Hobetutako segurtasuna dago gaituta zure kontuan. Mesedez, autentifikatu bigarren faktore bat erabiliz.",
+ "Cancel log in" : "Ezeztatu log in",
+ "Use backup code" : "Erabili ordezko kodea",
+ "Error while validating your second factor" : "Akatsa zure bigarren faktorea balioztatzean",
+ "You are accessing the server from an untrusted domain." : "Zerbitzaria domeinu ez fidagarri batetik eskuratzen ari zara.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Jarri harremanetan administratzailearekin. Instantzia honen administratzaile bat bazara, \"trusted_domains\" ezarpena ezarri config/config.php-en. Adibidezko konfigurazioa config/config.sample.php-en dago.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Zure ezarpenen gorabehera, administratzaile bezala posible duzu ere azpiko botoia erabiltzea fidatzeko domeinu horrekin.",
+ "Add \"%s\" as trusted domain" : "Gehitu \"%s\" domeinu fidagarri gisa",
+ "App update required" : "Aplikazio eguneraketa beharrezkoa da",
+ "%s will be updated to version %s" : "%s %s bertsiora eguneratuko da",
+ "These apps will be updated:" : "Aplikazio hauek eguneratuko dira:",
+ "These incompatible apps will be disabled:" : "Aplikazio bateraezin hauek desgaituko dira:",
+ "The theme %s has been disabled." : "%s gaia desgaitu da.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Ekin aurretik egiazta ezazu datu basearen, ezarpenen karpetaren eta datuen karpetaren babeskopia duzula.",
+ "Start update" : "Hasi eguneraketa",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Instalazio handien itxarote-denbora saihesteko, ondoko komandoa exekuta dezakezu instalazio direktoriotik:",
+ "Detailed logs" : "Log xehea",
+ "Update needed" : "Eguneratzea beharrezkoa da",
+ "Please use the command line updater because you have a big instance." : "Mesedez, erabili komando lerroa eguneratzeko, instantzia handi duzulako.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Laguntza lortzeko, ikusi <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentazioa</a>.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Instantzia hau %s mantenu-moduan dago, honek denbora tarte bat iraun dezake.",
+ "This page will refresh itself when the %s instance is available again." : "Orri honek bere burua eguneratuko du %s instantzia berriz prest dagoenean.",
+ "Error loading tags" : "Errore bat izan da etiketak kargatzearkoan.",
+ "Tag already exists" : "Etiketa dagoeneko existitzen da",
+ "Error deleting tag(s)" : "Errore bat izan da etiketa(k) ezabatzerakoan",
+ "Error tagging" : "Errorea etiketa ezartzerakoan",
+ "Error untagging" : "Errorea etiketa kentzerakoan",
+ "Error favoriting" : "Errorea gogokoetara gehitzerakoan",
+ "Error unfavoriting" : "Errorea gogokoetatik kentzerakoan",
+ "Couldn't send mail to following users: %s " : "Ezin izan da posta bidali hurrengo erabiltzaileei: %s",
+ "Sunday" : "Igandea",
+ "Monday" : "Astelehena",
+ "Tuesday" : "Asteartea",
+ "Wednesday" : "Asteazkena",
+ "Thursday" : "Osteguna",
+ "Friday" : "Ostirala",
+ "Saturday" : "Larunbata",
+ "Sun." : "Ig.",
+ "Mon." : "Al.",
+ "Tue." : "Ar.",
+ "Wed." : "Az.",
+ "Thu." : "Og.",
+ "Fri." : "Ol.",
+ "Sat." : "Lr.",
+ "Su" : "Ig",
+ "Mo" : "Al",
+ "Tu" : "Ar",
+ "We" : "Az",
+ "Th" : "Og",
+ "Fr" : "Ol",
+ "Sa" : "Lr",
+ "January" : "Urtarrila",
+ "February" : "Otsaila",
+ "March" : "Martxoa",
+ "April" : "Apirila",
+ "May" : "Maiatza",
+ "June" : "Ekaina",
+ "July" : "Uztaila",
+ "August" : "Abuztua",
+ "September" : "Iraila",
+ "October" : "Urria",
+ "November" : "Azaroa",
+ "December" : "Abendua",
+ "Jan." : "Urt.",
+ "Feb." : "Ots.",
+ "Mar." : "Mar.",
+ "Apr." : "Api.",
+ "May." : "Mai.",
+ "Jun." : "Eka.",
+ "Jul." : "Uzt.",
+ "Aug." : "Abu.",
+ "Sep." : "Ira.",
+ "Oct." : "Urr.",
+ "Nov." : "Aza.",
+ "Dec." : "Abe.",
+ "Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?",
+ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "Hide file listing" : "Ezkutatu fitxategi zerrenda",
+ "Sending ..." : "Bidaltzen ...",
+ "Email sent" : "Eposta bidalia",
+ "Send link via email" : "Bidali esteka posta elektronikoz",
+ "notify by email" : "jakinarazi eposta bidez",
+ "can share" : "elkarbana dezake",
+ "create" : "sortu",
+ "change" : "aldatu",
+ "delete" : "ezabatu",
+ "{sharee} (at {server})" : "{sharee} (at {server})",
+ "Share with users…" : "Erabiltzaileekin elkarbanatu...",
+ "Share with users, groups or remote users…" : "Erabiltzaile, talde edo urruneko erabiltzaile batzuekin elkarbanatu ...",
+ "Share with users or groups…" : "Erabiltzaile edo talde batekin elkarbanatu...",
+ "Share with users or remote users…" : "Erabiltzaile edo urruneko erabiltzaile batzuekin elkarbanatu...",
+ "Warning" : "Abisua",
+ "Error while sending notification" : "Akatsa jakinarazpena bidaltzean",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Berritzea abian dago, orri hau utziz gero prozesua eten liteke ingurune batzuetan.",
+ "Updating to {version}" : "{version} bertsiora eguneratzen",
+ "The update was successful. There were warnings." : "Eguneratzea arrakastatsua izan da. Abisuakegon dira.",
+ "No search results in other folders" : "Ez da bilaketaren emaitzik lortu beste karpetatan",
+ "Two-step verification" : "Bi urratseko egiaztapena",
+ "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hobetutako segurtasuna gaitu da zure kontuan. Mesedez, autentifikatu bigarren faktorea erabiliz.",
+ "Cancel login" : "Ezeztatu login",
+ "Please authenticate using the selected factor." : "Mesedez, autentifikatu hautatutako faktorea erabiliz.",
+ "An error occured while verifying the token" : "Akats bat gertatu da token-a egiaztatzean"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
new file mode 100644
index 00000000000..ddeaee03043
--- /dev/null
+++ b/core/l10n/eu.json
@@ -0,0 +1,371 @@
+{ "translations": {
+ "Please select a file." : "Fitxategi bat aukeratu mesedez",
+ "File is too big" : "Fitxategia handiegia da",
+ "The selected file is not an image." : "Aukeratutako fitxategia ez da irudi bat.",
+ "The selected file cannot be read." : "Aukeratutako fitxategia ezin da aukeratu",
+ "Invalid file provided" : "Invalid file provided",
+ "No image or file provided" : "Ez da irudi edo fitxategirik zehaztu",
+ "Unknown filetype" : "Fitxategi mota ezezaguna",
+ "Invalid image" : "Baliogabeko irudia",
+ "An error occurred. Please contact your admin." : "Errore bat izan da, administraria kontaktatu.app",
+ "No temporary profile picture available, try again" : "Ez dago behin-behineko profil irudirik, saiatu berriro",
+ "No crop data provided" : "Ez da ebaketaren daturik eskaini",
+ "No valid crop data provided" : "Ebakidura baliogabea da",
+ "Crop is not square" : "Ebakidura ez da karratua",
+ "Couldn't reset password because the token is invalid" : "Ezin izan da pasahitza berrezarri tokena baliogabea delako",
+ "Couldn't reset password because the token is expired" : "Ezin da berrezarri pasahitza token-a iraungi duelako.",
+ "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berreskuratze posta elektronikoa bidali helbiderik ez dagoelako erabiltzaile honetarako. Jarri harremanetan administratzailearekin.",
+ "%s password reset" : "%s pasahitza berrezarri",
+ "Couldn't send reset email. Please contact your administrator." : "Ezin da berrezartzeko eposta bidali. Mesedez jarri harremetan zure administradorearekin.",
+ "Preparing update" : "Eguneratzea prestatzen",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair warning: " : "Konponketa abisua:",
+ "Repair error: " : "Akatsa konpondu:",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Mesedez, erabili komando-lerroa eguneratzeko, eguneratze automatikoa config.php-n desgaituta dago eta.",
+ "[%d / %d]: Checking table %s" : "[%d / %d]: Taula egiaztatzen %s",
+ "Turned on maintenance mode" : "Mantenu modua gaitu da",
+ "Turned off maintenance mode" : "Mantenu modua desgaitu da",
+ "Maintenance mode is kept active" : "Mantentze modua aktibatuta dago oraindik.",
+ "Updating database schema" : "Datu-basearen eskema eguneratzen",
+ "Updated database" : "Datu-basea eguneratuta",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Datu-basearen eskema eguneratu daitekeen egiaztatzen (honek luzerako hartu dezake datu-basearen arabera)",
+ "Checked database schema update" : "Egiaztatuta datu-basearen zerbitzariaren eguneraketa",
+ "Checking updates of apps" : "Aplikazioentzako eguneraketak egiaztatzen",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s datu-basearen eskema eguneratu daitekeen egiaztatzen (honek luzerako hartu dezake datu-basearen arabera)",
+ "Checked database schema update for apps" : "Egiaztatuta aplikazioen datu-basearen zerbitzariaren eguneraketa",
+ "Updated \"%s\" to %s" : "\"%s\" %s-ra eguneratua",
+ "Set log level to debug" : "Set log level to debug",
+ "Reset log level" : "Reset log level",
+ "Starting code integrity check" : "Kodearen integritate egiaztapena hasten",
+ "Finished code integrity check" : "Kodearen integritate egiaztapena bukatuta",
+ "%s (3rdparty)" : "%s (3rdparty)",
+ "%s (incompatible)" : "%s (incompatible)",
+ "Following apps have been disabled: %s" : "Hurrengo aplikazioak desgaitu egin dira: %s",
+ "Already up to date" : "Dagoeneko eguneratuta",
+ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kodearen integritate egiaztapenarekin arazoak egon dira. Informazio gehiago…</a>",
+ "Settings" : "Ezarpenak",
+ "Connection to server lost" : "Zerbitzariarekiko konexioa eten da",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Arazoa orria kargatzerakoan, birkargatzen segundu batean","Arazoa orria kargatzerakoan, birkargatzen %n segundutan"],
+ "Saving..." : "Gordetzen...",
+ "Dismiss" : "Ezikusi",
+ "This action requires you to confirm your password" : "Ekintza hau zure pasahitza konfirmatzeko eskatuko dizu",
+ "Authentication required" : "Autentifikazioa beharrezkoa",
+ "Password" : "Pasahitza",
+ "Cancel" : "Ezeztatu",
+ "Confirm" : "Baieztatu",
+ "Failed to authenticate, try again" : "Huts egindu  autentifikazioa, berriz saiatu",
+ "seconds ago" : "segundu",
+ "Logging in …" : "Saioa hasten ...",
+ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Zure pasahitza berrezartzeko lotura zure postara bidalia izan da.<br>Ez baduzu arrazoizko denbora epe batean jasotzen begiratu zure zabor-posta karpetan.<br>Hor ere ez badago kudeatzailearekin harremanetan jarri.",
+ "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak zifratzen dira. Pasahitza aldatuz gero, ez dago zure datuak berreskuratzeko modurik.<br />Ziur ez bazaude, jarri harremanetan administratzailearekin jarraitu baino lehen. <br />Ziur zaude jarraitu nahi duzula?",
+ "I know what I'm doing" : "Badakit zer ari naizen egiten",
+ "Password can not be changed. Please contact your administrator." : "Ezin da pasahitza aldatu. Mesedez jarri harremetan zure administradorearekin.",
+ "No" : "Ez",
+ "Yes" : "Bai",
+ "No files in here" : "Ez dago fitxategirik hemen",
+ "Choose" : "Aukeratu",
+ "Error loading file picker template: {error}" : "Errorea fitxategi hautatzaile txantiloiak kargatzerakoan: {error}",
+ "Ok" : "Ados",
+ "Error loading message template: {error}" : "Errorea mezu txantiloia kargatzean: {error}",
+ "read-only" : "irakurtzeko-soilik",
+ "_{count} file conflict_::_{count} file conflicts_" : ["fitxategi {count}ek konfliktua sortu du","{count} fitxategik konfliktua sortu dute"],
+ "One file conflict" : "Fitxategi batek konfliktua sortu du",
+ "New Files" : "Fitxategi Berriak",
+ "Already existing files" : "Dagoeneko existitzen diren fitxategiak",
+ "Which files do you want to keep?" : "Ze fitxategi mantendu nahi duzu?",
+ "If you select both versions, the copied file will have a number added to its name." : "Bi bertsioak hautatzen badituzu, kopiatutako fitxategiaren izenean zenbaki bat atxikituko zaio.",
+ "Continue" : "Jarraitu",
+ "(all selected)" : "(denak hautatuta)",
+ "({count} selected)" : "({count} hautatuta)",
+ "Error loading file exists template" : "Errorea fitxategia existitzen da txantiloiak kargatzerakoan",
+ "Pending" : "Zain",
+ "Very weak password" : "Pasahitz oso ahula",
+ "Weak password" : "Pasahitz ahula",
+ "So-so password" : "Halamoduzko pasahitza",
+ "Good password" : "Pasahitz ona",
+ "Strong password" : "Pasahitz sendoa",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Zure web zerbitzaria ez dago oraindik konfiguratuta fitxategia sinkronizazioa ahalbidetzeko WebDAV interfazea badirudi hautsita dagoela.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Zure web zerbitzaria ez dago behar bezala konfiguratuta \"{url}\" irekitzeko. Informazio gehiago gure <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentazioan </a> aurki daiteke.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
+ "Error occurred while checking server setup" : "Akatsa gertatu da zerbitzariaren konfigurazioa egiaztatzean",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>.",
+ "Shared" : "Elkarbanatuta",
+ "Shared with {recipients}" : "{recipients}-rekin partekatua.",
+ "Error" : "Errorea",
+ "Error while sharing" : "Errore bat egon da elkarbanatzean",
+ "Error while unsharing" : "Errore bat egon da elkarbanaketa desegitean",
+ "Error setting expiration date" : "Errore bat egon da muga data ezartzean",
+ "The public link will expire no later than {days} days after it is created" : "Esteka publikoak iraungi egingo du, askoz jota, sortu eta {days} egunetara.",
+ "Set expiration date" : "Ezarri muga data",
+ "Expiration" : "Iraungitzea",
+ "Expiration date" : "Muga data",
+ "Choose a password for the public link" : "Aukeratu pasahitz bat esteka publikorako",
+ "Copied!" : "Kopiatuta!",
+ "Copy" : "Kopiatu",
+ "Not supported!" : "Ez da onartzen!",
+ "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.",
+ "Press Ctrl-C to copy." : "Sakatu Ctrl-C kpiatzeko.",
+ "Resharing is not allowed" : "Berriz elkarbanatzea ez dago baimendua",
+ "Share link" : "Elkarbanatu lotura",
+ "Link" : "Esteka",
+ "Password protect" : "Babestu pasahitzarekin",
+ "Allow upload and editing" : "Onartu igoera eta edizioa",
+ "Allow editing" : "Baimendu editatzea",
+ "File drop (upload only)" : "Fitxategiak utzi (igo bakarrik)",
+ "Email link to person" : "Postaz bidali lotura ",
+ "Send" : "Bidali",
+ "Shared with you and the group {group} by {owner}" : "{owner}-k zu eta {group} taldearekin elkarbanatuta",
+ "Shared with you by {owner}" : "{owner}-k zurekin elkarbanatuta",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} link bidez partekatuta",
+ "group" : "taldea",
+ "remote" : "urrunekoa",
+ "email" : "posta-elektronikoa",
+ "Unshare" : "Ez elkarbanatu",
+ "can reshare" : "elkarbanatu dezake",
+ "can edit" : "editatu dezake",
+ "can create" : "sortu dezake",
+ "can change" : "aldatu dezake",
+ "can delete" : "ezabatu dezake",
+ "access control" : "sarrera kontrola",
+ "Could not unshare" : "Ezin izan despartekatu",
+ "Share details could not be loaded for this item." : "Partekatze xehetasunak ezin izan dira elementu honentzat kargatu.",
+ "No users or groups found for {search}" : "Ez dira {search} -rentzat erabiltzaile edo talderik aurkitu",
+ "No users found for {search}" : "Ez dira {search} -rentzat erabiltzailerik aurkitu",
+ "An error occurred. Please try again" : "Errore bat gertatu da. Saiatu berriro.",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
+ "Share" : "Elkarbanatu",
+ "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Partekatu beste zerbitzarietan dagoen jendearekin, beraien Federated Cloud ID erabiliz username@example.com/nextcloud",
+ "Share with users or by mail..." : "Erabiltzaileekin edo postaz elkarbanatu...",
+ "Share with users or remote users..." : "Erabiltzaile edo urruneko erabiltzaile batzuekin elkarbanatu...",
+ "Share with users, remote users or by mail..." : "Erabiltzaile, urruneko erabiltzaile edo postaz elkarbanatu...",
+ "Share with users or groups..." : "Erabiltzaile edo talde batekin elkarbanatu...",
+ "Share with users, groups or by mail..." : "Erabiltzaile, talde edo posta elektroniko bidez elkarbanatu...",
+ "Share with users, groups or remote users..." : "erabiltzaile, talde edo urruneko erabiltzaile batzuekin Elkarbanatu ...",
+ "Share with users, groups, remote users or by mail..." : "Erabiltzaile, talde, urruneko erabiltzaile edo postaz elkarbanatu...",
+ "Share with users..." : "Erabiltzaileekin elkarbanatu...",
+ "Error removing share" : " Akatsa kuota kentzerakoan",
+ "Non-existing tag #{tag}" : "#{tag} ez da existitzen",
+ "restricted" : "mugatua",
+ "invisible" : "ikusiezina",
+ "({scope})" : "({scope})",
+ "Delete" : "Ezabatu",
+ "Rename" : "Berrizendatu",
+ "Collaborative tags" : "Elkarlaneko etiketak",
+ "No tags found" : "Ez da etiketarik aurkitu",
+ "The object type is not specified." : "Objetu mota ez dago zehaztuta.",
+ "Enter new" : "Sartu berria",
+ "Add" : "Gehitu",
+ "Edit tags" : "Editatu etiketak",
+ "Error loading dialog template: {error}" : "Errorea elkarrizketa txantiloia kargatzean: {errorea}",
+ "No tags selected for deletion." : "Ez dira ezabatzeko etiketak hautatu.",
+ "unknown text" : "testu ezezaguna",
+ "Hello world!" : "Kaixo Mundua!",
+ "sunny" : "eguzkitsua",
+ "Hello {name}, the weather is {weather}" : "Kaixo {name}, eguraldia {weather} da",
+ "Hello {name}" : "Kaixo {name}",
+ "new" : "Berria",
+ "_download %n file_::_download %n files_" : ["%n fitxategia jaitsi","jaitsi %n fitxategiak"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "Eguneratzea abian da, orri hau utziz prozesua eten liteke ingurune batzuetan.",
+ "Update to {version}" : "{version} bertsiora eguneratu",
+ "An error occurred." : "Akats bat gertatu da.",
+ "Please reload the page." : "Mesedez birkargatu orria.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.",
+ "Continue to Nextcloud" : "Nextcloudera abiatu",
+ "The update was successful. Redirecting you to Nextcloud now." : "The update was successful. Redirecting you to Nextcloud now.",
+ "Searching other places" : "Beste lekuak bilatzen",
+ "No search results in other folders for '{tag}{filter}{endtag}'" : "Ez da '{tag}{filter}{endtag}-rentzako' bilaketa-emaitzik egon",
+ "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} bilaketa-emaitza beste karpeta batean","{count} bilaketa-emaitzak beste karpetetan"],
+ "Personal" : "Pertsonala",
+ "Users" : "Erabiltzaileak",
+ "Apps" : "Aplikazioak",
+ "Admin" : "Admin",
+ "Help" : "Laguntza",
+ "Access forbidden" : "Sarrera debekatuta",
+ "File not found" : "Ez da fitxategia aurkitu",
+ "The specified document has not been found on the server." : "Zehaztutako dokumentua ez da zerbitzarian aurkitu.",
+ "You can click here to return to %s." : "Hemen klika dezakezu %sra itzultzeko.",
+ "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Kaixo\n\n%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s\n\n",
+ "The share will expire on %s." : "Elkarbanaketa %s-n iraungiko da.",
+ "Cheers!" : "Ongi izan!",
+ "Internal Server Error" : "Zerbitzariaren Barne Errorea",
+ "The server encountered an internal error and was unable to complete your request." : "Zerbitzariak barne errore bat izan du eta ez da gai izan zure eskaria osatzeko.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Mesedez harremanetan jarri zerbitzariaren kudeatzailearekin errore hau aldi askotan agertzekotan, mesedez gehitu beheko zehaztapen teknikoak zure txostenean.",
+ "More details can be found in the server log." : "Zehaztapen gehiago zerbitzariaren egunerokoan aurki daitezke.",
+ "Technical details" : "Arazo teknikoak",
+ "Remote Address: %s" : "Urruneko Helbidea: %s",
+ "Request ID: %s" : "Eskariaren IDa: %s",
+ "Type: %s" : "Mota: %s",
+ "Code: %s" : "Kodea: %s",
+ "Message: %s" : "Mezua: %s",
+ "File: %s" : "Fitxategia: %s",
+ "Line: %s" : "Lerroa: %s",
+ "Trace" : "Arrastoa",
+ "Security warning" : "Segurtasun abisua",
+ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>.",
+ "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat",
+ "Username" : "Erabiltzaile izena",
+ "Storage & database" : "Biltegia & datubasea",
+ "Data folder" : "Datuen karpeta",
+ "Configure the database" : "Konfiguratu datu basea",
+ "Only %s is available." : "Soilik %s dago eskuragarri.",
+ "Install and activate additional PHP modules to choose other database types." : "Instalatu eta aktibatu PHP modulu osagarriak, beste datu-base mota aukeratzeko.",
+ "For more details check out the documentation." : "Xehetasun gehiago nahi izanez gero, begiratu dokumentazioa.",
+ "Database user" : "Datubasearen erabiltzailea",
+ "Database password" : "Datubasearen pasahitza",
+ "Database name" : "Datubasearen izena",
+ "Database tablespace" : "Datu basearen taula-lekua",
+ "Database host" : "Datubasearen hostalaria",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Please specify the port number along with the host name (e.g., localhost:5432).",
+ "Performance warning" : "Errendimendua abisua",
+ "SQLite will be used as database." : "SQLite will be used as database.",
+ "For larger installations we recommend to choose a different database backend." : "For larger installations we recommend to choose a different database backend.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especially when using the desktop client for file syncing the use of SQLite is discouraged.",
+ "Finish setup" : "Bukatu konfigurazioa",
+ "Finishing …" : "Bukatzen...",
+ "Need help?" : "Laguntza behar al duzu?",
+ "See the documentation" : "Ikusi dokumentazioa",
+ "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page.",
+ "Search" : "Bilatu",
+ "Log out" : "Saioa bukatu",
+ "This action requires you to confirm your password:" : "Ekintza honek zure pasahitza konfirmatzeko eskatuko dizu:",
+ "Confirm your password" : "Berretsi pasahitza",
+ "Server side authentication failed!" : "Zerbitzari aldeko autentifikazioak huts egin du!",
+ "Please contact your administrator." : "Mesedez jarri harremetan zure administradorearekin.",
+ "An internal error occurred." : "Barne errorea gertatu da.",
+ "Please try again or contact your administrator." : "Saiatu berriro edo jarri harremanetan administratzailearekin.",
+ "Username or email" : "Erabiltzaile izena edo e-posta",
+ "Wrong password. Reset it?" : "Pasahitz okerra. Berrezarri?",
+ "Wrong password." : "Pasahitz okerra.",
+ "Log in" : "Hasi saioa",
+ "Stay logged in" : "Ez amaitu saioa",
+ "Alternative Logins" : "Beste erabiltzaile izenak",
+ "Use the following link to reset your password: {link}" : "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}",
+ "New password" : "Pasahitz berria",
+ "New Password" : "Pasahitz Berria",
+ "Reset password" : "Berrezarri pasahitza",
+ "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s",
+ "This Nextcloud instance is currently in single user mode." : "Nextcloud instantzia hau erabiltzaile bakar moduan dago.",
+ "This means only administrators can use the instance." : "Honek administradoreak bakarrik erabili dezakeela esan nahi du.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Jarri harremanetan zure sistema administratzailearekin mezu hau irauten badu edo bat-batean agertu bada.",
+ "Thank you for your patience." : "Milesker zure patzientziagatik.",
+ "Two-factor authentication" : "Bi faktoreko autentifikazioa",
+ "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Hobetutako segurtasuna dago gaituta zure kontuan. Mesedez, autentifikatu bigarren faktore bat erabiliz.",
+ "Cancel log in" : "Ezeztatu log in",
+ "Use backup code" : "Erabili ordezko kodea",
+ "Error while validating your second factor" : "Akatsa zure bigarren faktorea balioztatzean",
+ "You are accessing the server from an untrusted domain." : "Zerbitzaria domeinu ez fidagarri batetik eskuratzen ari zara.",
+ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Jarri harremanetan administratzailearekin. Instantzia honen administratzaile bat bazara, \"trusted_domains\" ezarpena ezarri config/config.php-en. Adibidezko konfigurazioa config/config.sample.php-en dago.",
+ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Zure ezarpenen gorabehera, administratzaile bezala posible duzu ere azpiko botoia erabiltzea fidatzeko domeinu horrekin.",
+ "Add \"%s\" as trusted domain" : "Gehitu \"%s\" domeinu fidagarri gisa",
+ "App update required" : "Aplikazio eguneraketa beharrezkoa da",
+ "%s will be updated to version %s" : "%s %s bertsiora eguneratuko da",
+ "These apps will be updated:" : "Aplikazio hauek eguneratuko dira:",
+ "These incompatible apps will be disabled:" : "Aplikazio bateraezin hauek desgaituko dira:",
+ "The theme %s has been disabled." : "%s gaia desgaitu da.",
+ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Ekin aurretik egiazta ezazu datu basearen, ezarpenen karpetaren eta datuen karpetaren babeskopia duzula.",
+ "Start update" : "Hasi eguneraketa",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Instalazio handien itxarote-denbora saihesteko, ondoko komandoa exekuta dezakezu instalazio direktoriotik:",
+ "Detailed logs" : "Log xehea",
+ "Update needed" : "Eguneratzea beharrezkoa da",
+ "Please use the command line updater because you have a big instance." : "Mesedez, erabili komando lerroa eguneratzeko, instantzia handi duzulako.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Laguntza lortzeko, ikusi <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentazioa</a>.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Instantzia hau %s mantenu-moduan dago, honek denbora tarte bat iraun dezake.",
+ "This page will refresh itself when the %s instance is available again." : "Orri honek bere burua eguneratuko du %s instantzia berriz prest dagoenean.",
+ "Error loading tags" : "Errore bat izan da etiketak kargatzearkoan.",
+ "Tag already exists" : "Etiketa dagoeneko existitzen da",
+ "Error deleting tag(s)" : "Errore bat izan da etiketa(k) ezabatzerakoan",
+ "Error tagging" : "Errorea etiketa ezartzerakoan",
+ "Error untagging" : "Errorea etiketa kentzerakoan",
+ "Error favoriting" : "Errorea gogokoetara gehitzerakoan",
+ "Error unfavoriting" : "Errorea gogokoetatik kentzerakoan",
+ "Couldn't send mail to following users: %s " : "Ezin izan da posta bidali hurrengo erabiltzaileei: %s",
+ "Sunday" : "Igandea",
+ "Monday" : "Astelehena",
+ "Tuesday" : "Asteartea",
+ "Wednesday" : "Asteazkena",
+ "Thursday" : "Osteguna",
+ "Friday" : "Ostirala",
+ "Saturday" : "Larunbata",
+ "Sun." : "Ig.",
+ "Mon." : "Al.",
+ "Tue." : "Ar.",
+ "Wed." : "Az.",
+ "Thu." : "Og.",
+ "Fri." : "Ol.",
+ "Sat." : "Lr.",
+ "Su" : "Ig",
+ "Mo" : "Al",
+ "Tu" : "Ar",
+ "We" : "Az",
+ "Th" : "Og",
+ "Fr" : "Ol",
+ "Sa" : "Lr",
+ "January" : "Urtarrila",
+ "February" : "Otsaila",
+ "March" : "Martxoa",
+ "April" : "Apirila",
+ "May" : "Maiatza",
+ "June" : "Ekaina",
+ "July" : "Uztaila",
+ "August" : "Abuztua",
+ "September" : "Iraila",
+ "October" : "Urria",
+ "November" : "Azaroa",
+ "December" : "Abendua",
+ "Jan." : "Urt.",
+ "Feb." : "Ots.",
+ "Mar." : "Mar.",
+ "Apr." : "Api.",
+ "May." : "Mai.",
+ "Jun." : "Eka.",
+ "Jul." : "Uzt.",
+ "Aug." : "Abu.",
+ "Sep." : "Ira.",
+ "Oct." : "Urr.",
+ "Nov." : "Aza.",
+ "Dec." : "Abe.",
+ "Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?",
+ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>.",
+ "Hide file listing" : "Ezkutatu fitxategi zerrenda",
+ "Sending ..." : "Bidaltzen ...",
+ "Email sent" : "Eposta bidalia",
+ "Send link via email" : "Bidali esteka posta elektronikoz",
+ "notify by email" : "jakinarazi eposta bidez",
+ "can share" : "elkarbana dezake",
+ "create" : "sortu",
+ "change" : "aldatu",
+ "delete" : "ezabatu",
+ "{sharee} (at {server})" : "{sharee} (at {server})",
+ "Share with users…" : "Erabiltzaileekin elkarbanatu...",
+ "Share with users, groups or remote users…" : "Erabiltzaile, talde edo urruneko erabiltzaile batzuekin elkarbanatu ...",
+ "Share with users or groups…" : "Erabiltzaile edo talde batekin elkarbanatu...",
+ "Share with users or remote users…" : "Erabiltzaile edo urruneko erabiltzaile batzuekin elkarbanatu...",
+ "Warning" : "Abisua",
+ "Error while sending notification" : "Akatsa jakinarazpena bidaltzean",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Berritzea abian dago, orri hau utziz gero prozesua eten liteke ingurune batzuetan.",
+ "Updating to {version}" : "{version} bertsiora eguneratzen",
+ "The update was successful. There were warnings." : "Eguneratzea arrakastatsua izan da. Abisuakegon dira.",
+ "No search results in other folders" : "Ez da bilaketaren emaitzik lortu beste karpetatan",
+ "Two-step verification" : "Bi urratseko egiaztapena",
+ "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hobetutako segurtasuna gaitu da zure kontuan. Mesedez, autentifikatu bigarren faktorea erabiliz.",
+ "Cancel login" : "Ezeztatu login",
+ "Please authenticate using the selected factor." : "Mesedez, autentifikatu hautatutako faktorea erabiliz.",
+ "An error occured while verifying the token" : "Akats bat gertatu da token-a egiaztatzean"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/core/l10n/id.js b/core/l10n/id.js
index 4779b36d6b9..e80b0a11552 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -48,6 +48,7 @@ OC.L10N.register(
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Ada permasalahan dengan pengecekan integrasi kode. Informasi selanjutnya…</a>",
"Settings" : "Pengaturan",
"Connection to server lost" : "Koneksi ke server gagal",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Tidak dapat memuat laman, muat ulang dalam %n detik"],
"Saving..." : "Menyimpan...",
"Dismiss" : "Buang",
"This action requires you to confirm your password" : "Aksi ini membutuhkan konfirmasi kata sandi Anda",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index 8ad080827ba..f8b2f738437 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -46,6 +46,7 @@
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Ada permasalahan dengan pengecekan integrasi kode. Informasi selanjutnya…</a>",
"Settings" : "Pengaturan",
"Connection to server lost" : "Koneksi ke server gagal",
+ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Tidak dapat memuat laman, muat ulang dalam %n detik"],
"Saving..." : "Menyimpan...",
"Dismiss" : "Buang",
"This action requires you to confirm your password" : "Aksi ini membutuhkan konfirmasi kata sandi Anda",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index d7e688837cd..6d61f61ec89 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -142,6 +142,7 @@ OC.L10N.register(
"Hello {name}, the weather is {weather}" : "Sveiks {name}, laiks ir {weather}",
"Hello {name}" : "Sveiks {name}",
"new" : "jauns",
+ "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"],
"Update to {version}" : "Atjaunināts uz {version}",
"An error occurred." : "Radās kļūda.",
"Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.",
@@ -228,6 +229,9 @@ OC.L10N.register(
"Please use the command line updater because you have a big instance." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir liels datu apjoms.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.",
"This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.",
+ "Error loading tags" : "Kļūda ielādējot birkas",
+ "Tag already exists" : "Birka jau pastāv",
+ "Error deleting tag(s)" : "Kļūda dzēšot birku(as)",
"Error tagging" : "Kļūda atzīmējot",
"Error untagging" : "Kļūda noņemot atzīmi",
"Couldn't send mail to following users: %s " : "Nevarēja nosūtīt e-pastu sekojošiem lietotājiem: %s",
@@ -277,6 +281,7 @@ OC.L10N.register(
"Nov." : "Nov.",
"Dec." : "Dec.",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Šim serverim nav interneta savienojuma. Tas nozīmē, ka daži līdzekļi, piemēram, ārējo atmiņas montāžas vai trešās puses lietojumprogrammu paziņojumi par atjauninājumiem nedarbosies. Attāli piekļūt failiem un nosūtīt paziņojumu uz e-pastu, iespējams nedarbosies. Mēs ierosinām, izveidot interneta savienojumu ar šo serveri, ja vēlaties, lai visas funkcijas darbotos.",
"Hide file listing" : "Paslēpt datņu sarakstu",
"Sending ..." : "Sūta...",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index d59ea39c531..8a6814ee5d4 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -140,6 +140,7 @@
"Hello {name}, the weather is {weather}" : "Sveiks {name}, laiks ir {weather}",
"Hello {name}" : "Sveiks {name}",
"new" : "jauns",
+ "_download %n file_::_download %n files_" : ["lejupielādēt %n failus","lejupielādēt %n failus","lejupielādēt %n failus"],
"Update to {version}" : "Atjaunināts uz {version}",
"An error occurred." : "Radās kļūda.",
"Please reload the page." : "Lūdzu, atkārtoti ielādējiet lapu.",
@@ -226,6 +227,9 @@
"Please use the command line updater because you have a big instance." : "Lūdzu, izmantojiet komandrindas atjauninātāju, jo jums ir liels datu apjoms.",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Lai saņemtu palīdzību, skatiet <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentāciju</a>.",
"This %s instance is currently in maintenance mode, which may take a while." : "Šis %s serveris pašlaik darbojas uzturēšanas režīmā, tas var ilgt kādu laiku.",
+ "Error loading tags" : "Kļūda ielādējot birkas",
+ "Tag already exists" : "Birka jau pastāv",
+ "Error deleting tag(s)" : "Kļūda dzēšot birku(as)",
"Error tagging" : "Kļūda atzīmējot",
"Error untagging" : "Kļūda noņemot atzīmi",
"Couldn't send mail to following users: %s " : "Nevarēja nosūtīt e-pastu sekojošiem lietotājiem: %s",
@@ -275,6 +279,7 @@
"Nov." : "Nov.",
"Dec." : "Dec.",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
+ "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Šim serverim nav interneta savienojuma. Tas nozīmē, ka daži līdzekļi, piemēram, ārējo atmiņas montāžas vai trešās puses lietojumprogrammu paziņojumi par atjauninājumiem nedarbosies. Attāli piekļūt failiem un nosūtīt paziņojumu uz e-pastu, iespējams nedarbosies. Mēs ierosinām, izveidot interneta savienojumu ar šo serveri, ja vēlaties, lai visas funkcijas darbotos.",
"Hide file listing" : "Paslēpt datņu sarakstu",
"Sending ..." : "Sūta...",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index 8351cccdd78..4c906ea9dd0 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -94,6 +94,8 @@ OC.L10N.register(
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP nie może czytać z /dev/urandom co jest wymagane ze względów bezpieczeństwa. Więcej informacji można znaleźć w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>.",
"You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Posiadasz aktualnie PHP w wersji {version}. Aby skorzystać z <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">aktualizacji dotyczących wydajności i bezpieczeństwa otrzymanych z PHP Group</a> zachęcamy do podniesienia wersji PHP, kiedy tylko twoja dystrybucja będzie je wspierała.",
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfiguracja nagłówków reverse proxy jest niepoprawna albo łączysz się do Nextclouda przez zaufane proxy. Jeśli nie łączysz się z zaufanego proxy, to jest to problem bezpieczeństwa i atakujący może podszyć się pod adres IP jako widoczny dla Nextclouda. Więcej informacji można znaleźć w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Jako cache jest skonfigurowane \"memcached\", ale błędny moduł PHP \"memcache\" jest zainstalowany. \\OC\\Memcache\\Memcached wspiera tylko \"memcached\", a nie \"memcache\". Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki o obu tych modułach</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Niektóre pliki nie przeszły sprawdzania spójności. Dalsze informacje jak to naprawić mogą być znalezione w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista niepoprawnych plików...</a> / <a href=\"{rescanEndpoint}\">Skanowanie ponowne…</a>)",
"Error occurred while checking server setup" : "Pojawił się błąd podczas sprawdzania ustawień serwera",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Twój katalog z danymi i twoje pliki są prawdopodobnie dostępne przez Internet. Plik .htaccess nie działa. Silnie rekomendujemy, żebyś skonfigurował serwer webowy, żeby katalog z danymi nie był dalej dostępny lub przenieś katalog z danymi poza katalog \"document root\" serwera web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
@@ -121,6 +123,7 @@ OC.L10N.register(
"Password protect" : "Zabezpiecz hasłem",
"Allow upload and editing" : "Pozwól na przesyłanie i edycję",
"Allow editing" : "Pozwól na edycję",
+ "File drop (upload only)" : "Tylko przesyłanie",
"Email link to person" : "Wyślij osobie odnośnik poprzez e-mail",
"Send" : "Wyślij",
"Shared with you and the group {group} by {owner}" : "Udostępnione tobie i grupie {group} przez {owner}",
@@ -130,7 +133,7 @@ OC.L10N.register(
"remote" : "zdalny",
"email" : "email",
"Unshare" : "Zatrzymaj współdzielenie",
- "can reshare" : "mogą udostępniać",
+ "can reshare" : "mogą udostępniać dalej",
"can edit" : "może edytować",
"can create" : "może utworzyć",
"can change" : "może zmienić",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index ce34a4bb3f1..0324fd3175c 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -92,6 +92,8 @@
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP nie może czytać z /dev/urandom co jest wymagane ze względów bezpieczeństwa. Więcej informacji można znaleźć w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>.",
"You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Posiadasz aktualnie PHP w wersji {version}. Aby skorzystać z <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">aktualizacji dotyczących wydajności i bezpieczeństwa otrzymanych z PHP Group</a> zachęcamy do podniesienia wersji PHP, kiedy tylko twoja dystrybucja będzie je wspierała.",
"The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfiguracja nagłówków reverse proxy jest niepoprawna albo łączysz się do Nextclouda przez zaufane proxy. Jeśli nie łączysz się z zaufanego proxy, to jest to problem bezpieczeństwa i atakujący może podszyć się pod adres IP jako widoczny dla Nextclouda. Więcej informacji można znaleźć w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Jako cache jest skonfigurowane \"memcached\", ale błędny moduł PHP \"memcache\" jest zainstalowany. \\OC\\Memcache\\Memcached wspiera tylko \"memcached\", a nie \"memcache\". Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki o obu tych modułach</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Niektóre pliki nie przeszły sprawdzania spójności. Dalsze informacje jak to naprawić mogą być znalezione w naszej <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentacji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista niepoprawnych plików...</a> / <a href=\"{rescanEndpoint}\">Skanowanie ponowne…</a>)",
"Error occurred while checking server setup" : "Pojawił się błąd podczas sprawdzania ustawień serwera",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Twój katalog z danymi i twoje pliki są prawdopodobnie dostępne przez Internet. Plik .htaccess nie działa. Silnie rekomendujemy, żebyś skonfigurował serwer webowy, żeby katalog z danymi nie był dalej dostępny lub przenieś katalog z danymi poza katalog \"document root\" serwera web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
@@ -119,6 +121,7 @@
"Password protect" : "Zabezpiecz hasłem",
"Allow upload and editing" : "Pozwól na przesyłanie i edycję",
"Allow editing" : "Pozwól na edycję",
+ "File drop (upload only)" : "Tylko przesyłanie",
"Email link to person" : "Wyślij osobie odnośnik poprzez e-mail",
"Send" : "Wyślij",
"Shared with you and the group {group} by {owner}" : "Udostępnione tobie i grupie {group} przez {owner}",
@@ -128,7 +131,7 @@
"remote" : "zdalny",
"email" : "email",
"Unshare" : "Zatrzymaj współdzielenie",
- "can reshare" : "mogą udostępniać",
+ "can reshare" : "mogą udostępniać dalej",
"can edit" : "może edytować",
"can create" : "może utworzyć",
"can change" : "może zmienić",
diff --git a/core/search/css/results.css b/core/search/css/results.css
index fd07561d133..e55c2926fd7 100644
--- a/core/search/css/results.css
+++ b/core/search/css/results.css
@@ -69,6 +69,7 @@
}
.has-favorites:not(.hidden) ~ #searchresults td.icon {
width: 86px;
+ background-size: 32px;
}
#searchresults tr.template {
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
new file mode 100644
index 00000000000..4fb5c96b889
--- /dev/null
+++ b/lib/l10n/eu.js
@@ -0,0 +1,185 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "Ezin da idatzi \"config\" karpetan!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Hau normalean konpondu daitekesweb zerbitzarira config karpetan idazteko baimenak emanez",
+ "See %s" : "Ikusi %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Hau normalean konpondu daiteke %sweb zerbitzarira config karpetan idazteko baimenak emanez%s.",
+ "Sample configuration detected" : "Adibide-ezarpena detektatua",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Detektatu da adibide-ezarpena kopiatu dela. Honek zure instalazioa apur dezake eta ez da onartzen. Irakurri dokumentazioa config.php fitxategia aldatu aurretik.",
+ "%1$s and %2$s" : "%1$s eta %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s eta %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s eta %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s eta %5$s",
+ "PHP %s or higher is required." : "PHP %s edo berriagoa behar da.",
+ "PHP with a version lower than %s is required." : "PHPren bertsioa %s baino txikiagoa izan behar da.",
+ "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "The command line tool %s could not be found" : "Komando lerroko %s tresna ezin da aurkitu",
+ "The library %s is not available." : "%s liburutegia ez dago eskuragarri.",
+ "Library %s with a version higher than %s is required - available version %s." : "%s liburutegiak %s baino bertsio handiagoa izan behar du - dagoen bertsioa %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "%s liburutegiak %s baino bertsio txikiagoa izan behar du - dagoen bertsioa %s.",
+ "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
+ "Unknown filetype" : "Fitxategi mota ezezaguna",
+ "Invalid image" : "Baliogabeko irudia",
+ "Avatar image is not square" : "Abatarreko irudia ez da karratua",
+ "today" : "gaur",
+ "yesterday" : "atzo",
+ "_%n day ago_::_%n days ago_" : ["orain dela egun %n","orain dela %n egun"],
+ "last month" : "joan den hilabetean",
+ "_%n month ago_::_%n months ago_" : ["orain dela hilabete %n","orain dela %n hilabete"],
+ "last year" : "joan den urtean",
+ "_%n year ago_::_%n years ago_" : ["orain dela urte %n","orain dela %n urte"],
+ "_%n hour ago_::_%n hours ago_" : ["orain dela ordu %n","orain dela %n ordu"],
+ "_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"],
+ "seconds ago" : "segundu",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s id duen modulua ez da existitzen. Mesedez, gaitu ezazu zure aplikazio ezarpenetan, edo jarri harremanetan administratzailearekin.",
+ "File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
+ "File name contains at least one invalid character" : "Fitxategi izenak behintzat baliogabeko karaktere bat du",
+ "File name is too long" : "Fitxategi-izena luzeegia da",
+ "Dot files are not allowed" : "Dot fitxategiak ez dira onartzen",
+ "Empty filename is not allowed" : "Fitxategiaren izena izin da hutsa izan",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Zerbitzariaren ezarpenak",
+ "Sharing" : "Partekatze",
+ "Encryption" : "Enkriptazio",
+ "Additional settings" : "Ezarpen gehiago",
+ "Tips & tricks" : "Aholkuak eta trikimailuak",
+ "%s enter the database username and name." : "%s sartu datu-basearen erabiltzaile-izena eta izena.",
+ "%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
+ "%s enter the database name." : "%s sartu datu basearen izena.",
+ "%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
+ "Oracle connection could not be established" : "Ezin da Oracle konexioa sortu",
+ "Oracle username and/or password not valid" : "Oracle erabiltzaile edota pasahitza ez dira egokiak.",
+ "DB Error: \"%s\"" : "DB errorea: \"%s\"",
+ "Offending command was: \"%s\"" : "Errorea komando honek sortu du: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Errorea komando honek sortu du: \"%s\", izena: %s, pasahitza: %s",
+ "PostgreSQL username and/or password not valid" : "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.",
+ "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez ezabatu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.",
+ "Set an admin username." : "Ezarri administraziorako erabiltzaile izena.",
+ "Set an admin password." : "Ezarri administraziorako pasahitza.",
+ "Can't create or write into the data directory %s" : "Ezin da %s datu karpeta sortu edo bertan idatzi ",
+ "%s shared »%s« with you" : "%s-ek »%s« zurekin partekatu du",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
+ "Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
+ "You are not allowed to share %s" : "Ez zadue %s elkarbanatzeko baimendua",
+ "Sharing %s failed, because the user %s does not exist" : "%s elkarbanatzeak huts egin du, %s erabiltzailea existitzen ez delako",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s elkarbanatzeak huts egin du, %s erabiltzailea ez delako %s partaide den talderen bateko partaidea",
+ "Sharing %s failed, because this item is already shared with %s" : "%s elkarbanatzeak huts egin du, dagoeneko %s erabiltzailearekin elkarbanatuta dagoelako",
+ "Sharing %s failed, because the group %s does not exist" : "%s elkarbanatzeak huts egin du, %s taldea ez delako existitzen",
+ "Sharing %s failed, because %s is not a member of the group %s" : "%s elkarbanatzeak huts egin du, %s ez delako %s taldearen partaidea",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s partekatzeak huts egin du, ezin da %s aurkitu, agian zerbitzaria orain ez dago eskuragarri.",
+ "Share type %s is not valid for %s" : "%s elkarbanaketa mota ez da %srentzako egokia",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%srentzako baimenak ezartzea huts egin du, baimenak %sri emandakoak baino gehiago direlako",
+ "Setting permissions for %s failed, because the item was not found" : "%srentzako baimenak ezartzea huts egin du, aurkitu ez delako",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da jarri iraungitze data. Konpartitzea ezin da iraungi konpartitu eta %s ondoren.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ezin da jarri iraungitze data. Iraungitze data iragan da.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "%s elkarbanaketa motorra OCP\\Share_Backend interfazea inplementatu behar du ",
+ "Sharing backend %s not found" : "Ez da %s elkarbanaketa motorra aurkitu",
+ "Sharing backend for %s not found" : "Ez da %srako elkarbanaketa motorrik aurkitu",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s elkarbanatzeak huts egin du, baimenak %sri emandakoak baino gehiago direlako",
+ "Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s elkarbanatzeak huts egin du, %sren elkarbanaketa motorrak bere iturria aurkitu ezin duelako",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako",
+ "Could not find category \"%s\"" : "Ezin da \"%s\" kategoria aurkitu",
+ "Sunday" : "Igandea",
+ "Monday" : "Astelehena",
+ "Tuesday" : "Asteartea",
+ "Wednesday" : "Asteazkena",
+ "Thursday" : "Osteguna",
+ "Friday" : "Ostirala",
+ "Saturday" : "Larunbata",
+ "Sun." : "Ig.",
+ "Mon." : "Al.",
+ "Tue." : "Ar.",
+ "Wed." : "Az.",
+ "Thu." : "Og.",
+ "Fri." : "Ol.",
+ "Sat." : "Lr.",
+ "Su" : "Ig",
+ "Mo" : "Al",
+ "Tu" : "Ar",
+ "We" : "Az",
+ "Th" : "Og",
+ "Fr" : "Ol",
+ "Sa" : "Lr",
+ "January" : "Urtarrila",
+ "February" : "Otsaila",
+ "March" : "Martxoa",
+ "April" : "Apirila",
+ "May" : "Maiatza",
+ "June" : "Ekaina",
+ "July" : "Uztaila",
+ "August" : "Abuztua",
+ "September" : "Iraila",
+ "October" : "Urria",
+ "November" : "Azaroa",
+ "December" : "Abendua",
+ "Jan." : "Urt.",
+ "Feb." : "Ots.",
+ "Mar." : "Mar.",
+ "Apr." : "Api.",
+ "May." : "Mai.",
+ "Jun." : "Eka.",
+ "Jul." : "Uzt.",
+ "Aug." : "Abu.",
+ "Sep." : "Ira.",
+ "Oct." : "Urr.",
+ "Nov." : "Aza.",
+ "Dec." : "Abe.",
+ "Apps" : "Aplikazioak",
+ "A valid username must be provided" : "Baliozko erabiltzaile izena eman behar da",
+ "A valid password must be provided" : "Baliozko pasahitza eman behar da",
+ "The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
+ "Login canceled by app" : "Aplikazioa saioa bertan behera utzi du",
+ "User disabled" : "Erabiltzaile desgaituta",
+ "Help" : "Laguntza",
+ "Personal" : "Pertsonala",
+ "Users" : "Erabiltzaileak",
+ "Admin" : "Admin",
+ "No app name specified" : "Ez da aplikazioaren izena zehaztu",
+ "Application is not enabled" : "Aplikazioa ez dago gaituta",
+ "Authentication error" : "Autentifikazio errorea",
+ "Token expired. Please reload page." : "Tokena iraungitu da. Mesedez birkargatu orria.",
+ "Unknown user" : "Erabiltzaile ezezaguna",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Ez dago datubaseen (sqlite, mysql edo postgresql) driverrik instalatuta.",
+ "Cannot write into \"config\" directory" : "Ezin da idatzi \"config\" karpetan",
+ "Cannot write into \"apps\" directory" : "Ezin da idatzi \"apps\" karpetan",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Hau normalean konpondu daiteke %sweb zerbitzarira apps karpetan idazteko baimenak emanez%s edo konfigurazio fitxategian appstorea ez gaituz.",
+ "Cannot create \"data\" directory (%s)" : "Ezin da \"data\" karpeta sortu (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Hau normalean konpondu daiteke %sweb zerbitzarira erro karpetan idazteko baimenak emanez%s.",
+ "Setting locale to %s failed" : "Lokala %sra ezartzeak huts egin du",
+ "Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
+ "Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
+ "PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "PHP moduluak instalatu dira, baina oraindik faltan bezala markatuta daude?",
+ "Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.",
+ "PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da",
+ "Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
+ "Data directory (%s) is readable by other users" : "Data karpeta (%s) beste erabiltzaileek irakur dezakete",
+ "Data directory (%s) is invalid" : "Datuen karpeta (%s) ez da baliogarria",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Mesedez egiaztatu data karpeta \".ocdata\" fitxategia duela bere erroan.",
+ "Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
+ "App directory already exists" : "Aplikazioaren karpeta dagoeneko existitzen da",
+ "Can't create app folder. Please fix permissions. %s" : "Ezin izan da aplikazioaren karpeta sortu. Mesdez konpondu baimenak. %s",
+ "No source specified when installing app" : "Ez da jatorririk zehaztu aplikazioa instalatzerakoan",
+ "No href specified when installing app from http" : "Ez da href parametrorik zehaztu http bidez aplikazioa instalatzerakoan",
+ "No path specified when installing app from local file" : "Ez da kokalekurik zehaztu fitxategi lokal moduan aplikazioa instalatzerakoan",
+ "Archives of type %s are not supported" : "%s motako fitxategiak ez dira onartzen",
+ "Failed to open archive when installing app" : "Fitxategia irekitzeak huts egin du aplikazioa instalatzerakoan",
+ "App does not provide an info.xml file" : "Aplikazioak ez du info.xml fitxategia",
+ "App can't be installed because of not allowed code in the App" : "Aplikazioa ezin da instalatu bertan duen baimendu gabeko kodea dela eta",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikazioa ezin da instalatu <shipped>true</shipped> etiketa duelako eta etiketa hau ez da onartzen banaketan ez datozen aplikazioetan",
+ "Logging" : "Erregistroa",
+ "Recommended" : "Aholkatuta",
+ "Microsoft Windows Platform is not supported" : "Microsoft Windows Platform ez da jasaten",
+ "Storage not available" : "Biltegia ez dago eskuragarri"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
new file mode 100644
index 00000000000..5f38d994506
--- /dev/null
+++ b/lib/l10n/eu.json
@@ -0,0 +1,183 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "Ezin da idatzi \"config\" karpetan!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Hau normalean konpondu daitekesweb zerbitzarira config karpetan idazteko baimenak emanez",
+ "See %s" : "Ikusi %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Hau normalean konpondu daiteke %sweb zerbitzarira config karpetan idazteko baimenak emanez%s.",
+ "Sample configuration detected" : "Adibide-ezarpena detektatua",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Detektatu da adibide-ezarpena kopiatu dela. Honek zure instalazioa apur dezake eta ez da onartzen. Irakurri dokumentazioa config.php fitxategia aldatu aurretik.",
+ "%1$s and %2$s" : "%1$s eta %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s eta %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s eta %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s eta %5$s",
+ "PHP %s or higher is required." : "PHP %s edo berriagoa behar da.",
+ "PHP with a version lower than %s is required." : "PHPren bertsioa %s baino txikiagoa izan behar da.",
+ "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "The command line tool %s could not be found" : "Komando lerroko %s tresna ezin da aurkitu",
+ "The library %s is not available." : "%s liburutegia ez dago eskuragarri.",
+ "Library %s with a version higher than %s is required - available version %s." : "%s liburutegiak %s baino bertsio handiagoa izan behar du - dagoen bertsioa %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "%s liburutegiak %s baino bertsio txikiagoa izan behar du - dagoen bertsioa %s.",
+ "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
+ "Unknown filetype" : "Fitxategi mota ezezaguna",
+ "Invalid image" : "Baliogabeko irudia",
+ "Avatar image is not square" : "Abatarreko irudia ez da karratua",
+ "today" : "gaur",
+ "yesterday" : "atzo",
+ "_%n day ago_::_%n days ago_" : ["orain dela egun %n","orain dela %n egun"],
+ "last month" : "joan den hilabetean",
+ "_%n month ago_::_%n months ago_" : ["orain dela hilabete %n","orain dela %n hilabete"],
+ "last year" : "joan den urtean",
+ "_%n year ago_::_%n years ago_" : ["orain dela urte %n","orain dela %n urte"],
+ "_%n hour ago_::_%n hours ago_" : ["orain dela ordu %n","orain dela %n ordu"],
+ "_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"],
+ "seconds ago" : "segundu",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s id duen modulua ez da existitzen. Mesedez, gaitu ezazu zure aplikazio ezarpenetan, edo jarri harremanetan administratzailearekin.",
+ "File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
+ "File name contains at least one invalid character" : "Fitxategi izenak behintzat baliogabeko karaktere bat du",
+ "File name is too long" : "Fitxategi-izena luzeegia da",
+ "Dot files are not allowed" : "Dot fitxategiak ez dira onartzen",
+ "Empty filename is not allowed" : "Fitxategiaren izena izin da hutsa izan",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Zerbitzariaren ezarpenak",
+ "Sharing" : "Partekatze",
+ "Encryption" : "Enkriptazio",
+ "Additional settings" : "Ezarpen gehiago",
+ "Tips & tricks" : "Aholkuak eta trikimailuak",
+ "%s enter the database username and name." : "%s sartu datu-basearen erabiltzaile-izena eta izena.",
+ "%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
+ "%s enter the database name." : "%s sartu datu basearen izena.",
+ "%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
+ "Oracle connection could not be established" : "Ezin da Oracle konexioa sortu",
+ "Oracle username and/or password not valid" : "Oracle erabiltzaile edota pasahitza ez dira egokiak.",
+ "DB Error: \"%s\"" : "DB errorea: \"%s\"",
+ "Offending command was: \"%s\"" : "Errorea komando honek sortu du: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Errorea komando honek sortu du: \"%s\", izena: %s, pasahitza: %s",
+ "PostgreSQL username and/or password not valid" : "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.",
+ "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez ezabatu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.",
+ "Set an admin username." : "Ezarri administraziorako erabiltzaile izena.",
+ "Set an admin password." : "Ezarri administraziorako pasahitza.",
+ "Can't create or write into the data directory %s" : "Ezin da %s datu karpeta sortu edo bertan idatzi ",
+ "%s shared »%s« with you" : "%s-ek »%s« zurekin partekatu du",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
+ "Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
+ "You are not allowed to share %s" : "Ez zadue %s elkarbanatzeko baimendua",
+ "Sharing %s failed, because the user %s does not exist" : "%s elkarbanatzeak huts egin du, %s erabiltzailea existitzen ez delako",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "%s elkarbanatzeak huts egin du, %s erabiltzailea ez delako %s partaide den talderen bateko partaidea",
+ "Sharing %s failed, because this item is already shared with %s" : "%s elkarbanatzeak huts egin du, dagoeneko %s erabiltzailearekin elkarbanatuta dagoelako",
+ "Sharing %s failed, because the group %s does not exist" : "%s elkarbanatzeak huts egin du, %s taldea ez delako existitzen",
+ "Sharing %s failed, because %s is not a member of the group %s" : "%s elkarbanatzeak huts egin du, %s ez delako %s taldearen partaidea",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
+ "Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s partekatzeak huts egin du, ezin da %s aurkitu, agian zerbitzaria orain ez dago eskuragarri.",
+ "Share type %s is not valid for %s" : "%s elkarbanaketa mota ez da %srentzako egokia",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%srentzako baimenak ezartzea huts egin du, baimenak %sri emandakoak baino gehiago direlako",
+ "Setting permissions for %s failed, because the item was not found" : "%srentzako baimenak ezartzea huts egin du, aurkitu ez delako",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da jarri iraungitze data. Konpartitzea ezin da iraungi konpartitu eta %s ondoren.",
+ "Cannot set expiration date. Expiration date is in the past" : "Ezin da jarri iraungitze data. Iraungitze data iragan da.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "%s elkarbanaketa motorra OCP\\Share_Backend interfazea inplementatu behar du ",
+ "Sharing backend %s not found" : "Ez da %s elkarbanaketa motorra aurkitu",
+ "Sharing backend for %s not found" : "Ez da %srako elkarbanaketa motorrik aurkitu",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "%s elkarbanatzeak huts egin du, baimenak %sri emandakoak baino gehiago direlako",
+ "Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s elkarbanatzeak huts egin du, %sren elkarbanaketa motorrak bere iturria aurkitu ezin duelako",
+ "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako",
+ "Could not find category \"%s\"" : "Ezin da \"%s\" kategoria aurkitu",
+ "Sunday" : "Igandea",
+ "Monday" : "Astelehena",
+ "Tuesday" : "Asteartea",
+ "Wednesday" : "Asteazkena",
+ "Thursday" : "Osteguna",
+ "Friday" : "Ostirala",
+ "Saturday" : "Larunbata",
+ "Sun." : "Ig.",
+ "Mon." : "Al.",
+ "Tue." : "Ar.",
+ "Wed." : "Az.",
+ "Thu." : "Og.",
+ "Fri." : "Ol.",
+ "Sat." : "Lr.",
+ "Su" : "Ig",
+ "Mo" : "Al",
+ "Tu" : "Ar",
+ "We" : "Az",
+ "Th" : "Og",
+ "Fr" : "Ol",
+ "Sa" : "Lr",
+ "January" : "Urtarrila",
+ "February" : "Otsaila",
+ "March" : "Martxoa",
+ "April" : "Apirila",
+ "May" : "Maiatza",
+ "June" : "Ekaina",
+ "July" : "Uztaila",
+ "August" : "Abuztua",
+ "September" : "Iraila",
+ "October" : "Urria",
+ "November" : "Azaroa",
+ "December" : "Abendua",
+ "Jan." : "Urt.",
+ "Feb." : "Ots.",
+ "Mar." : "Mar.",
+ "Apr." : "Api.",
+ "May." : "Mai.",
+ "Jun." : "Eka.",
+ "Jul." : "Uzt.",
+ "Aug." : "Abu.",
+ "Sep." : "Ira.",
+ "Oct." : "Urr.",
+ "Nov." : "Aza.",
+ "Dec." : "Abe.",
+ "Apps" : "Aplikazioak",
+ "A valid username must be provided" : "Baliozko erabiltzaile izena eman behar da",
+ "A valid password must be provided" : "Baliozko pasahitza eman behar da",
+ "The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
+ "Login canceled by app" : "Aplikazioa saioa bertan behera utzi du",
+ "User disabled" : "Erabiltzaile desgaituta",
+ "Help" : "Laguntza",
+ "Personal" : "Pertsonala",
+ "Users" : "Erabiltzaileak",
+ "Admin" : "Admin",
+ "No app name specified" : "Ez da aplikazioaren izena zehaztu",
+ "Application is not enabled" : "Aplikazioa ez dago gaituta",
+ "Authentication error" : "Autentifikazio errorea",
+ "Token expired. Please reload page." : "Tokena iraungitu da. Mesedez birkargatu orria.",
+ "Unknown user" : "Erabiltzaile ezezaguna",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Ez dago datubaseen (sqlite, mysql edo postgresql) driverrik instalatuta.",
+ "Cannot write into \"config\" directory" : "Ezin da idatzi \"config\" karpetan",
+ "Cannot write into \"apps\" directory" : "Ezin da idatzi \"apps\" karpetan",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Hau normalean konpondu daiteke %sweb zerbitzarira apps karpetan idazteko baimenak emanez%s edo konfigurazio fitxategian appstorea ez gaituz.",
+ "Cannot create \"data\" directory (%s)" : "Ezin da \"data\" karpeta sortu (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Hau normalean konpondu daiteke %sweb zerbitzarira erro karpetan idazteko baimenak emanez%s.",
+ "Setting locale to %s failed" : "Lokala %sra ezartzeak huts egin du",
+ "Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
+ "Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
+ "PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "PHP moduluak instalatu dira, baina oraindik faltan bezala markatuta daude?",
+ "Please ask your server administrator to restart the web server." : "Mesedez eskatu zerbitzariaren kudeatzaileari web zerbitzaria berrabiarazteko.",
+ "PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da",
+ "Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
+ "Data directory (%s) is readable by other users" : "Data karpeta (%s) beste erabiltzaileek irakur dezakete",
+ "Data directory (%s) is invalid" : "Datuen karpeta (%s) ez da baliogarria",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Mesedez egiaztatu data karpeta \".ocdata\" fitxategia duela bere erroan.",
+ "Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
+ "App directory already exists" : "Aplikazioaren karpeta dagoeneko existitzen da",
+ "Can't create app folder. Please fix permissions. %s" : "Ezin izan da aplikazioaren karpeta sortu. Mesdez konpondu baimenak. %s",
+ "No source specified when installing app" : "Ez da jatorririk zehaztu aplikazioa instalatzerakoan",
+ "No href specified when installing app from http" : "Ez da href parametrorik zehaztu http bidez aplikazioa instalatzerakoan",
+ "No path specified when installing app from local file" : "Ez da kokalekurik zehaztu fitxategi lokal moduan aplikazioa instalatzerakoan",
+ "Archives of type %s are not supported" : "%s motako fitxategiak ez dira onartzen",
+ "Failed to open archive when installing app" : "Fitxategia irekitzeak huts egin du aplikazioa instalatzerakoan",
+ "App does not provide an info.xml file" : "Aplikazioak ez du info.xml fitxategia",
+ "App can't be installed because of not allowed code in the App" : "Aplikazioa ezin da instalatu bertan duen baimendu gabeko kodea dela eta",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikazioa ezin da instalatu <shipped>true</shipped> etiketa duelako eta etiketa hau ez da onartzen banaketan ez datozen aplikazioetan",
+ "Logging" : "Erregistroa",
+ "Recommended" : "Aholkatuta",
+ "Microsoft Windows Platform is not supported" : "Microsoft Windows Platform ez da jasaten",
+ "Storage not available" : "Biltegia ez dago eskuragarri"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js
index 0e4854cdef0..e723baebea4 100644
--- a/lib/l10n/sk_SK.js
+++ b/lib/l10n/sk_SK.js
@@ -8,8 +8,13 @@ OC.L10N.register(
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %$1s nebolo možné úspešne nahradiť. Uistite sa, že verzia je kompatibilná s verziou servera.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
+ "%1$s and %2$s" : "%1$s a %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
+ "%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
"Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
@@ -20,6 +25,7 @@ OC.L10N.register(
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
+ "Avatar image is not square" : "Obrázok avatara nie je štvorcový",
"today" : "dnes",
"yesterday" : "včera",
"_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"],
@@ -193,6 +199,8 @@ OC.L10N.register(
"Data directory (%s) is invalid" : "Priečinok dát (%s) je neplatný",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Prosím, skontrolujte, či priečinok dát obsahuje súbor \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nepodarilo sa získať zámok typu %d na „%s“.",
+ "Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"4-byte characters are not supported in file names" : "V názve súbou nie sú podporované 4-bajtové znaky.",
"App directory already exists" : "Aplikačný priečinok už existuje",
"Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s",
diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json
index ddd42d62b8e..7deb8eb8ad8 100644
--- a/lib/l10n/sk_SK.json
+++ b/lib/l10n/sk_SK.json
@@ -6,8 +6,13 @@
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %$1s nebolo možné úspešne nahradiť. Uistite sa, že verzia je kompatibilná s verziou servera.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
+ "%1$s and %2$s" : "%1$s a %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
+ "%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
"Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
@@ -18,6 +23,7 @@
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
+ "Avatar image is not square" : "Obrázok avatara nie je štvorcový",
"today" : "dnes",
"yesterday" : "včera",
"_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"],
@@ -191,6 +197,8 @@
"Data directory (%s) is invalid" : "Priečinok dát (%s) je neplatný",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Prosím, skontrolujte, či priečinok dát obsahuje súbor \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nepodarilo sa získať zámok typu %d na „%s“.",
+ "Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"4-byte characters are not supported in file names" : "V názve súbou nie sú podporované 4-bajtové znaky.",
"App directory already exists" : "Aplikačný priečinok už existuje",
"Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s",
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 5a350bbec5a..ec36aab75d9 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -49,6 +49,7 @@ use OC\RichObjectStrings\Validator;
use OC\Security\Bruteforce\Throttler;
use OCP\AppFramework\IApi;
use OCP\AppFramework\IAppContainer;
+use OCP\Federation\ICloudIdManager;
use OCP\Files\IAppData;
use OCP\Files\Mount\IMountManager;
use OCP\RichObjectStrings\IValidator;
@@ -152,6 +153,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer()->getQueryLogger();
});
+ $this->registerService(ICloudIdManager::class, function($c) {
+ return $this->getServer()->getCloudIdManager();
+ });
+
$this->registerService('OCP\\Files\\IMimeTypeDetector', function($c) {
return $this->getServer()->getMimeTypeDetector();
});
diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php
index 45cc69b306e..46d90f7ab92 100644
--- a/lib/private/Federation/CloudIdManager.php
+++ b/lib/private/Federation/CloudIdManager.php
@@ -27,6 +27,7 @@ class CloudIdManager implements ICloudIdManager {
/**
* @param string $cloudId
* @return ICloudId
+ * @throws \InvalidArgumentException
*/
public function resolveCloudId($cloudId) {
// TODO magic here to get the url and user instead of just splitting on @
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php
index 8625e4904ca..e65c01559f0 100644
--- a/lib/private/Files/Cache/Scanner.php
+++ b/lib/private/Files/Cache/Scanner.php
@@ -168,7 +168,7 @@ class Scanner extends BasicEmitter implements IScanner {
$parent = '';
}
if ($parentId === -1) {
- $parentId = $this->cache->getId($parent);
+ $parentId = $this->cache->getParentId($file);
}
// scan the parent if it's not in the cache (id -1) and the current file is not the root folder
@@ -491,7 +491,7 @@ class Scanner extends BasicEmitter implements IScanner {
} else {
$lastPath = null;
while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) {
- $this->runBackgroundScanJob(function() use ($path) {
+ $this->runBackgroundScanJob(function () use ($path) {
$this->scan($path, self::SCAN_RECURSIVE_INCOMPLETE, self::REUSE_ETAG | self::REUSE_SIZE);
}, $path);
// FIXME: this won't proceed with the next item, needs revamping of getIncomplete()
diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php
index d8bdca6a3c4..894fbcc803d 100644
--- a/lib/private/Files/Cache/Wrapper/CacheJail.php
+++ b/lib/private/Files/Cache/Wrapper/CacheJail.php
@@ -142,11 +142,7 @@ class CacheJail extends CacheWrapper {
* @return int
*/
public function getParentId($file) {
- if ($file === '') {
- return -1;
- } else {
- return $this->getCache()->getParentId($this->getSourcePath($file));
- }
+ return $this->getCache()->getParentId($this->getSourcePath($file));
}
/**
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index 31f87d16b04..76a6155df24 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -74,11 +74,11 @@ class DAV extends Common {
/** @var bool */
protected $ready;
/** @var Client */
- private $client;
+ protected $client;
/** @var ArrayCache */
- private $statCache;
+ protected $statCache;
/** @var \OCP\Http\Client\IClientService */
- private $httpClientService;
+ protected $httpClientService;
/**
* @param array $params
@@ -127,7 +127,7 @@ class DAV extends Common {
}
}
- private function init() {
+ protected function init() {
if ($this->ready) {
return;
}
@@ -627,7 +627,7 @@ class DAV extends Common {
* @param string $path to encode
* @return string encoded path
*/
- private function encodePath($path) {
+ protected function encodePath($path) {
// slashes need to stay
return str_replace('%2F', '/', rawurlencode($path));
}
@@ -641,7 +641,7 @@ class DAV extends Common {
* @throws StorageInvalidException
* @throws StorageNotAvailableException
*/
- private function simpleResponse($method, $path, $body, $expected) {
+ protected function simpleResponse($method, $path, $body, $expected) {
$path = $this->cleanPath($path);
try {
$response = $this->client->request($method, $this->encodePath($path), $body);
@@ -815,7 +815,7 @@ class DAV extends Common {
* @throws StorageNotAvailableException if the storage is not available,
* which might be temporary
*/
- private function convertException(Exception $e, $path = '') {
+ protected function convertException(Exception $e, $path = '') {
\OC::$server->getLogger()->logException($e);
Util::writeLog('files_external', $e->getMessage(), Util::ERROR);
if ($e instanceof ClientHttpException) {
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index 8615d73f346..013f5ab2344 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -58,7 +58,7 @@ class Jail extends Wrapper {
}
public function getId() {
- return 'link:' . parent::getId() . ':' . $this->rootPath;
+ return parent::getId();
}
/**
diff --git a/lib/private/Files/Storage/Wrapper/PermissionsMask.php b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
index 239824b67e2..ab0c30a4736 100644
--- a/lib/private/Files/Storage/Wrapper/PermissionsMask.php
+++ b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
@@ -138,4 +138,13 @@ class PermissionsMask extends Wrapper {
$sourceCache = parent::getCache($path, $storage);
return new CachePermissionsMask($sourceCache, $this->mask);
}
+
+ public function getMetaData($path) {
+ $data = parent::getMetaData($path);
+
+ if ($data && isset($data['permissions'])) {
+ $data['permissions'] = $data['permissions'] & $this->mask;
+ }
+ return $data;
+ }
}
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 321e8ea4c66..b20614f8971 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -492,7 +492,9 @@ class Setup {
$content.= "Satisfy All\n";
$content.= "</ifModule>\n\n";
$content.= "# section for Apache 2.2 and 2.4\n";
+ $content.= "<ifModule mod_autoindex.c>\n";
$content.= "IndexIgnore *\n";
+ $content.= "</ifModule>\n";
$baseDir = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data');
file_put_contents($baseDir . '/.htaccess', $content);
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 705ca95210a..c03cbd5891b 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -1,7 +1,9 @@
<?php
/**
+ * @copyright Copyright (c) 2017, Sandro Lutz <sandro.lutz@temparus.ch>
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Sandro Lutz <sandro.lutz@temparus.ch>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@owncloud.com>
@@ -332,6 +334,10 @@ class Session implements IUserSession, Emitter {
OC\Security\Bruteforce\Throttler $throttler) {
$currentDelay = $throttler->sleepDelay($request->getRemoteAddress(), 'login');
+ if ($this->manager instanceof PublicEmitter) {
+ $this->manager->emit('\OC\User', 'preLogin', array($user, $password));
+ }
+
$isTokenPassword = $this->isTokenPassword($password);
if (!$isTokenPassword && $this->isTokenAuthEnforced()) {
throw new PasswordLoginForbiddenException();
@@ -476,7 +482,6 @@ class Session implements IUserSession, Emitter {
* @throws LoginException if an app canceld the login process or the user is not enabled
*/
private function loginWithPassword($uid, $password) {
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
$user = $this->manager->checkPassword($uid, $password);
if ($user === false) {
// Password check failed
@@ -527,8 +532,6 @@ class Session implements IUserSession, Emitter {
// Ignore and use empty string instead
}
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
-
$user = $this->manager->get($uid);
if (is_null($user)) {
// user does not exist
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php
index dfe2e09afff..9c4bc895fb9 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/helper.php
@@ -52,7 +52,6 @@ class OC_Helper {
/**
* Creates an absolute url for public use
- *
* @param string $service id
* @param bool $add_slash
* @return string the url
@@ -63,14 +62,13 @@ class OC_Helper {
if ($service === 'files') {
$url = OC::$server->getURLGenerator()->getAbsoluteURL('/s');
} else {
- $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php') . '?service=' . $service);
+ $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php').'?service='.$service);
}
return $url . (($add_slash && $service[strlen($service) - 1] != '/') ? '/' : '');
}
/**
* Make a human file size
- *
* @param int $bytes file size in bytes
* @return string a human readable file size
*
@@ -106,7 +104,6 @@ class OC_Helper {
/**
* Make a php file size
- *
* @param int $bytes file size in bytes
* @return string a php parseable file size
*
@@ -133,7 +130,6 @@ class OC_Helper {
/**
* Make a computer file size
- *
* @param string $str file size in human readable format
* @return float a file size in bytes
*
@@ -176,7 +172,6 @@ class OC_Helper {
/**
* Recursive copying of folders
- *
* @param string $src source folder
* @param string $dest target folder
*
@@ -199,7 +194,6 @@ class OC_Helper {
/**
* Recursive deletion of folders
- *
* @param string $dir path to the folder
* @param bool $deleteSelf if set to false only the content of the folder will be deleted
* @return bool
@@ -399,7 +393,6 @@ class OC_Helper {
/**
* performs a search in a nested array
- *
* @param array $haystack the array to be searched
* @param string $needle the search string
* @param string $index optional, only search this key name
@@ -432,7 +425,7 @@ class OC_Helper {
* @return int number of bytes representing
*/
public static function maxUploadFilesize($dir, $freeSpace = null) {
- if (is_null($freeSpace) || $freeSpace < 0) {
+ if (is_null($freeSpace) || $freeSpace < 0){
$freeSpace = self::freeSpace($dir);
}
return min($freeSpace, self::uploadLimit());
@@ -450,7 +443,7 @@ class OC_Helper {
$freeSpace = max($freeSpace, 0);
return $freeSpace;
} else {
- return (INF > 0) ? INF : PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188
+ return (INF > 0)? INF: PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188
}
}
@@ -517,7 +510,7 @@ class OC_Helper {
if (empty($paths)) {
$paths = '/usr/local/bin /usr/bin /opt/bin /bin';
} else {
- $paths = str_replace(':', ' ', getenv('PATH'));
+ $paths = str_replace(':',' ',getenv('PATH'));
}
$command = 'find ' . $paths . ' -name ' . escapeshellarg($program) . ' 2> /dev/null';
exec($command, $output, $returnCode);
@@ -540,12 +533,6 @@ class OC_Helper {
* @throws \OCP\Files\NotFoundException
*/
public static function getStorageInfo($path, $rootInfo = null) {
- $memcache = \OC::$server->getMemCacheFactory()->create('storageInfo');
- $cacheKey = $rootInfo ? '__root__' . md5($path) : md5($path);
- $cached = $memcache->get($cacheKey);
- if (is_array($cached)) {
- return $cached;
- }
// return storage info without adding mount points
$includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false);
@@ -610,20 +597,10 @@ class OC_Helper {
$ownerId = $storage->getOwner($path);
$ownerDisplayName = '';
$owner = \OC::$server->getUserManager()->get($ownerId);
- if ($owner) {
+ if($owner) {
$ownerDisplayName = $owner->getDisplayName();
}
- $memcache->set($cacheKey, [
- 'free' => $free,
- 'used' => $used,
- 'quota' => $quota,
- 'total' => $total,
- 'relative' => $relative,
- 'owner' => $ownerId,
- 'ownerDisplayName' => $ownerDisplayName,
- ], 5 * 60);
-
return [
'free' => $free,
'used' => $used,
@@ -668,7 +645,6 @@ class OC_Helper {
/**
* Returns whether the config file is set manually to read-only
- *
* @return bool
*/
public static function isReadOnlyConfigEnabled() {
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/image.php
index 5403cccd026..47f2a977e9c 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/image.php
@@ -747,7 +747,7 @@ class OC_Image implements \OCP\IImage {
$this->logger->warning($error, array('app' => 'core'));
return $im;
}
- $color = unpack('V', $part . $vide);
+ $color = @unpack('V', $part . $vide);
break;
case 16:
if (!($part = substr($data, $p, 2))) {
@@ -755,20 +755,20 @@ class OC_Image implements \OCP\IImage {
$this->logger->warning($error, array('app' => 'core'));
return $im;
}
- $color = unpack('v', $part);
+ $color = @unpack('v', $part);
$color[1] = (($color[1] & 0xf800) >> 8) * 65536 + (($color[1] & 0x07e0) >> 3) * 256 + (($color[1] & 0x001f) << 3);
break;
case 8:
- $color = unpack('n', $vide . substr($data, $p, 1));
- $color[1] = $palette[$color[1] + 1];
+ $color = @unpack('n', $vide . substr($data, $p, 1));
+ $color[1] = (isset($palette[$color[1] + 1])) ? $palette[$color[1] + 1] : $palette[1];
break;
case 4:
- $color = unpack('n', $vide . substr($data, floor($p), 1));
+ $color = @unpack('n', $vide . substr($data, floor($p), 1));
$color[1] = ($p * 2) % 2 == 0 ? $color[1] >> 4 : $color[1] & 0x0F;
- $color[1] = $palette[$color[1] + 1];
+ $color[1] = (isset($palette[$color[1] + 1])) ? $palette[$color[1] + 1] : $palette[1];
break;
case 1:
- $color = unpack('n', $vide . substr($data, floor($p), 1));
+ $color = @unpack('n', $vide . substr($data, floor($p), 1));
switch (($p * 8) % 8) {
case 0:
$color[1] = $color[1] >> 7;
@@ -795,7 +795,7 @@ class OC_Image implements \OCP\IImage {
$color[1] = ($color[1] & 0x1);
break;
}
- $color[1] = $palette[$color[1] + 1];
+ $color[1] = (isset($palette[$color[1] + 1])) ? $palette[$color[1] + 1] : $palette[1];
break;
default:
fclose($fh);
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php
index 0a52be7565d..661242a659a 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/user.php
@@ -187,7 +187,18 @@ class OC_User {
if ($uid) {
if (self::getUser() !== $uid) {
self::setUserId($uid);
- self::setDisplayName($uid);
+ $setUidAsDisplayName = true;
+ if($backend instanceof \OCP\UserInterface
+ && $backend->implementsActions(OC_User_Backend::GET_DISPLAYNAME)) {
+
+ $backendDisplayName = $backend->getDisplayName($uid);
+ if(is_string($backendDisplayName) && trim($backendDisplayName) !== '') {
+ $setUidAsDisplayName = false;
+ }
+ }
+ if($setUidAsDisplayName) {
+ self::setDisplayName($uid);
+ }
self::getUserSession()->setLoginName($uid);
$request = OC::$server->getRequest();
self::getUserSession()->createSessionToken($request, $uid, $uid);
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 02a092ea660..8c74c05d801 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -54,7 +54,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
* This container holds all ownCloud services
* @since 6.0.0
*/
-interface IServerContainer {
+interface IServerContainer extends IContainer {
/**
* The contacts manager will act as a broker between consumers for contacts information and
diff --git a/resources/codesigning/root.crl b/resources/codesigning/root.crl
index cb1b97fc87d..31f8055e3b1 100644
--- a/resources/codesigning/root.crl
+++ b/resources/codesigning/root.crl
@@ -1,14 +1,14 @@
-----BEGIN X509 CRL-----
-MIICDTCB9gIBATANBgkqhkiG9w0BAQsFADB7MQswCQYDVQQGEwJERTEbMBkGA1UE
-CAwSQmFkZW4tV3VlcnR0ZW1iZXJnMRcwFQYDVQQKDA5OZXh0Y2xvdWQgR21iSDE2
-MDQGA1UEAwwtTmV4dGNsb3VkIENvZGUgU2lnbmluZyBJbnRlcm1lZGlhdGUgQXV0
-aG9yaXR5Fw0xNjEwMTcxMjA5MjhaFw0yNjA4MjYxMjA5MjhaMBUwEwICEBAXDTE2
-MTAxNzEyMDkxOVqgMDAuMB8GA1UdIwQYMBaAFG3qbqqpNyw8iS0XPv1G7sOeeO10
-MAsGA1UdFAQEAgIQAzANBgkqhkiG9w0BAQsFAAOCAQEAZGJNwERFseCv6cS6bfmq
-hIIqHieG+/mp4kjqtk4mg8CEYZq/M0q2DMjh7xZUuflV3wadqTCDunDXoyUIV36K
-TwLsrREKGFqpSDsVgnX6IYeG0Sf7rnV5PYD2ODWfXrjp3yU7/Jgc2qjco11X5psV
-uUnqGDU7DoMwFB6GTTRXfjpCKn8SUtuETAEN013Ii6xXsfCJQTjzQaZByz/Xbypr
-sPfotQRfpAhhfjowK5B2ESjXePdNuFlPEAJ114HDJrI89dndIzus95N+3q2sm80T
-TFwdooAghAvVmABADC3GQ9bvQb9CUC14DQZJWesy/ps64fgKdXcnBhsX9uPJ7Fdb
-hQ==
------END X509 CRL----- \ No newline at end of file
+MIICIzCCAQsCAQEwDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCREUxGzAZBgNV
+BAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzEXMBUGA1UECgwOTmV4dGNsb3VkIEdtYkgx
+NjA0BgNVBAMMLU5leHRjbG91ZCBDb2RlIFNpZ25pbmcgSW50ZXJtZWRpYXRlIEF1
+dGhvcml0eRcNMTcwMjIwMTAwODU2WhcNMjYxMjMwMTAwODU2WjAqMBMCAhAQFw0x
+NjEwMTcxMjA5MTlaMBMCAhAXFw0xNzAyMjAxMDAyMzhaoDAwLjAfBgNVHSMEGDAW
+gBRt6m6qqTcsPIktFz79Ru7DnnjtdDALBgNVHRQEBAICEAQwDQYJKoZIhvcNAQEL
+BQADggEBAC94bDgg/jGNTgp+L4I4GoZtfVQI9E0NbFyb2pBdAHA9vOcwvIYaaaB5
+b2hi5Ath/2o5/1OcnTJ8B5RPIoRu/2XOXiMXEH1ilS89VPYjNUUmEWmfFLKm8rWx
+Z91cIBCeSDITDfYC+yG+QjVsl7YY60P7fduajZXdSD1ZtHravczVFXzilbafvFex
+eim9jF+lANeFoTtFcmWCyUM/ys/qKagFBmkLkuxrYerWEMrNy6QNwc5dnL0LtPag
+3aYRVY9qGqFWKFA0zg6dge4n9iZVkwczJME8AuKh2sRsqCmadx7QGqzkJWWXAAFi
+j0Ixr7s4a90qFE1dE5v/SukfWeUH1Wg=
+-----END X509 CRL-----
diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php
index 719b6eb68f6..19c5b068167 100644
--- a/settings/Controller/UsersController.php
+++ b/settings/Controller/UsersController.php
@@ -49,7 +49,9 @@ use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Mail\IMailer;
use OCP\IAvatarManager;
-use Punic\Exception;
+use OCP\Security\ICrypto;
+use OCP\Security\ISecureRandom;
+use OCP\AppFramework\Utility\ITimeFactory;
/**
* @package OC\Settings\Controller
@@ -85,6 +87,13 @@ class UsersController extends Controller {
private $avatarManager;
/** @var AccountManager */
private $accountManager;
+ /** @var ISecureRandom */
+ private $secureRandom;
+ /** @var ITimeFactory */
+ private $timeFactory;
+ /** @var ICrypto */
+ private $crypto;
+
/**
* @param string $appName
@@ -103,6 +112,9 @@ class UsersController extends Controller {
* @param IAppManager $appManager
* @param IAvatarManager $avatarManager
* @param AccountManager $accountManager
+ * @param ISecureRandom $secureRandom
+ * @param ITimeFactory $timeFactory
+ * @param ICrypto $crypto
*/
public function __construct($appName,
IRequest $request,
@@ -119,8 +131,10 @@ class UsersController extends Controller {
IURLGenerator $urlGenerator,
IAppManager $appManager,
IAvatarManager $avatarManager,
- AccountManager $accountManager
-) {
+ AccountManager $accountManager,
+ ISecureRandom $secureRandom,
+ ITimeFactory $timeFactory,
+ ICrypto $crypto) {
parent::__construct($appName, $request);
$this->userManager = $userManager;
$this->groupManager = $groupManager;
@@ -135,6 +149,9 @@ class UsersController extends Controller {
$this->urlGenerator = $urlGenerator;
$this->avatarManager = $avatarManager;
$this->accountManager = $accountManager;
+ $this->secureRandom = $secureRandom;
+ $this->timeFactory = $timeFactory;
+ $this->crypto = $crypto;
// check for encryption state - TODO see formatUserForIndex
$this->isEncryptionAppEnabled = $appManager->isEnabledForUser('encryption');
@@ -362,6 +379,21 @@ class UsersController extends Controller {
);
}
+ $generatedPassword = false;
+ if ($password === '') {
+ if ($email === '') {
+ return new DataResponse(
+ array(
+ 'message' => (string)$this->l10n->t('To send a password link to the user an email address is required.')
+ ),
+ Http::STATUS_UNPROCESSABLE_ENTITY
+ );
+ }
+
+ $password = $this->secureRandom->generate(32);
+ $generatedPassword = true;
+ }
+
try {
$user = $this->userManager->createUser($username, $password);
} catch (\Exception $exception) {
@@ -394,10 +426,27 @@ class UsersController extends Controller {
if($email !== '') {
$user->setEMailAddress($email);
+ if ($generatedPassword) {
+ $token = $this->secureRandom->generate(
+ 21,
+ ISecureRandom::CHAR_DIGITS .
+ ISecureRandom::CHAR_LOWER .
+ ISecureRandom::CHAR_UPPER
+ );
+ $tokenValue = $this->timeFactory->getTime() . ':' . $token;
+ $mailAddress = !is_null($user->getEMailAddress()) ? $user->getEMailAddress() : '';
+ $encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress . $this->config->getSystemValue('secret'));
+ $this->config->setUserValue($username, 'core', 'lostpassword', $encryptedValue);
+
+ $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', ['userId' => $username, 'token' => $token]);
+ } else {
+ $link = $this->urlGenerator->getAbsoluteURL('/');
+ }
+
// data for the mail template
$mailData = array(
'username' => $username,
- 'url' => $this->urlGenerator->getAbsoluteURL('/')
+ 'url' => $link
);
$mail = new TemplateResponse('settings', 'email.new_user', $mailData, 'blank');
diff --git a/settings/js/users/users.js b/settings/js/users/users.js
index 3cf7b5e810a..a6dcafcdac3 100644
--- a/settings/js/users/users.js
+++ b/settings/js/users/users.js
@@ -918,7 +918,7 @@ $(document).ready(function () {
}));
return false;
}
- if ($.trim(password) === '') {
+ if ($.trim(password) === '' && !$('#CheckboxMailOnUserCreate').is(':checked')) {
OC.Notification.showTemporary(t('settings', 'Error creating user: {message}', {
message: t('settings', 'A valid password must be provided')
}));
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index 5c4fdba79fc..af7bc27e865 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"No valid group selected" : "Keine gültige Gruppe ausgewählt",
"A user with that name already exists." : "Ein Benutzer mit diesem Namen existiert bereits.",
+ "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt.",
"Unable to create user." : "Benutzer konnte nicht erstellt werden.",
"Your %s account was created" : "Dein %s-Konto wurde erstellt",
"Unable to delete user." : "Benutzer konnte nicht gelöscht werden.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Letzte Anmeldung anzeigen",
"Show user backend" : "Benutzer-Backend anzeigen",
"Send email to new user" : "E-Mail an neuen Benutzer senden",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.",
"Show email address" : "E-Mail-Adresse anzeigen",
"E-Mail" : "E-Mail",
"Create" : "Anlegen",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index 93755105c2b..1d4d95c3d5a 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"No valid group selected" : "Keine gültige Gruppe ausgewählt",
"A user with that name already exists." : "Ein Benutzer mit diesem Namen existiert bereits.",
+ "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt.",
"Unable to create user." : "Benutzer konnte nicht erstellt werden.",
"Your %s account was created" : "Dein %s-Konto wurde erstellt",
"Unable to delete user." : "Benutzer konnte nicht gelöscht werden.",
@@ -317,6 +318,7 @@
"Show last log in" : "Letzte Anmeldung anzeigen",
"Show user backend" : "Benutzer-Backend anzeigen",
"Send email to new user" : "E-Mail an neuen Benutzer senden",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.",
"Show email address" : "E-Mail-Adresse anzeigen",
"E-Mail" : "E-Mail",
"Create" : "Anlegen",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index f83905eddc1..589f676d71a 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"No valid group selected" : "Keine gültige Gruppe ausgewählt",
"A user with that name already exists." : "Ein Benutzer mit diesem Namen existiert bereits.",
+ "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt.",
"Unable to create user." : "Benutzer konnte nicht erstellt werden.",
"Your %s account was created" : "Ihr %s-Konto wurde erstellt",
"Unable to delete user." : "Benutzer konnte nicht gelöscht werden.",
@@ -64,8 +65,8 @@ OC.L10N.register(
"Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
"Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
- "Updating...." : "Update…",
- "Error while updating app" : "Es ist ein Fehler während des Updates aufgetreten",
+ "Updating...." : "Aktualisiere…",
+ "Error while updating app" : "Es ist ein Fehler während der Aktualisierung aufgetreten",
"Updated" : "Aktualisiert",
"Uninstalling ...." : "Wird deinstalliert…",
"Error while uninstalling app" : "Fehler beim Deinstallieren der App",
@@ -95,7 +96,7 @@ OC.L10N.register(
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "⌘-C zum Kopieren drücken.",
"Press Ctrl-C to copy." : "Ctrl-C zum Kopieren drücken.",
- "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken",
+ "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token",
"Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens",
"Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.",
@@ -106,7 +107,7 @@ OC.L10N.register(
"Only visible to local users" : "Nur für lokale Benutzer sichtbar",
"Only visible to you" : "Nur für Sie sichtbar",
"Contacts" : "Kontakte",
- "Visible to local users and to trusted servers" : "Sichtbar für lokale Nutzer und vertauenswürdige Server",
+ "Visible to local users and to trusted servers" : "Sichtbar für lokale Nutzer und vertrauenswürdige Server",
"Public" : "Öffentlich",
"Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert",
"Select a profile picture" : "Wählen Sie ein Profilbild",
@@ -130,7 +131,7 @@ OC.L10N.register(
"no group" : "Keine Gruppe",
"Password successfully changed" : "Das Passwort wurde erfolgreich geändert",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist",
- "Could not change the users email" : "Die E-Mail Adresse des Nutzers konnte nicht geändert werden",
+ "Could not change the users email" : "Die E-Mail-Adresse des Nutzers konnte nicht geändert werden",
"A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden",
"Error creating user: {message}" : "Fehler beim Erstellen eines Benutzers: {message}",
"A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden",
@@ -143,8 +144,8 @@ OC.L10N.register(
"Sync clients" : "Sync-Clients",
"None" : "Keine",
"Login" : "Anmelden",
- "Plain" : "Plain",
- "NT LAN Manager" : "NT LAN Manager",
+ "Plain" : "Klartext",
+ "NT LAN Manager" : "NT-LAN-Manager",
"SSL/TLS" : "SSL/TLS",
"STARTTLS" : "STARTTLS",
"Email server" : "E-Mail-Server",
@@ -282,9 +283,9 @@ OC.L10N.register(
"Address" : "Adresse",
"Your postal address" : "Ihre Postadresse",
"Website" : "Webseite",
- "Your website" : "Ihre Webseite",
+ "Your website" : "Ihre Internetseite",
"Twitter" : "Twitter",
- "Your Twitter handle" : "Ihr twitter-handle",
+ "Your Twitter handle" : "Ihr Twitter-Handle",
"You are member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
"Password" : "Passwort",
"Current password" : "Aktuelles Passwort",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Letzte Anmeldung anzeigen",
"Show user backend" : "Benutzer-Backend anzeigen",
"Send email to new user" : "E-Mail an neuen Benutzer senden",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.",
"Show email address" : "E-Mail Adresse anzeigen",
"E-Mail" : "E-Mail",
"Create" : "Erstellen",
@@ -344,7 +346,7 @@ OC.L10N.register(
"Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der admin-Gruppe löschen",
"Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden",
"Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden",
- "Are you really sure you want add \"{domain}\" as trusted domain?" : "Sind Sie sich wirklich sicher, dass Sie »{domain}« als vertrauenswürdige Domain hinzufügen möchten?",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Sind Sie sich wirklich sicher, dass Sie \"{domain}\" als vertrauenswürdige Domain hinzufügen möchten?",
"Please wait...." : "Bitte warten…",
"add group" : "Gruppe hinzufügen",
"Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Fehlerdiagnose)",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 065020da2aa..0e3978b9386 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Ungültige E-Mail-Adresse",
"No valid group selected" : "Keine gültige Gruppe ausgewählt",
"A user with that name already exists." : "Ein Benutzer mit diesem Namen existiert bereits.",
+ "To send a password link to the user an email address is required." : "Um einen Passwort-Link an einen Benutzer zu versenden wird eine E-Mail-Adresse benötigt.",
"Unable to create user." : "Benutzer konnte nicht erstellt werden.",
"Your %s account was created" : "Ihr %s-Konto wurde erstellt",
"Unable to delete user." : "Benutzer konnte nicht gelöscht werden.",
@@ -62,8 +63,8 @@
"Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
"Error: could not disable broken app" : "Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
- "Updating...." : "Update…",
- "Error while updating app" : "Es ist ein Fehler während des Updates aufgetreten",
+ "Updating...." : "Aktualisiere…",
+ "Error while updating app" : "Es ist ein Fehler während der Aktualisierung aufgetreten",
"Updated" : "Aktualisiert",
"Uninstalling ...." : "Wird deinstalliert…",
"Error while uninstalling app" : "Fehler beim Deinstallieren der App",
@@ -93,7 +94,7 @@
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "⌘-C zum Kopieren drücken.",
"Press Ctrl-C to copy." : "Ctrl-C zum Kopieren drücken.",
- "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken",
+ "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token",
"Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens",
"Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.",
@@ -104,7 +105,7 @@
"Only visible to local users" : "Nur für lokale Benutzer sichtbar",
"Only visible to you" : "Nur für Sie sichtbar",
"Contacts" : "Kontakte",
- "Visible to local users and to trusted servers" : "Sichtbar für lokale Nutzer und vertauenswürdige Server",
+ "Visible to local users and to trusted servers" : "Sichtbar für lokale Nutzer und vertrauenswürdige Server",
"Public" : "Öffentlich",
"Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert",
"Select a profile picture" : "Wählen Sie ein Profilbild",
@@ -128,7 +129,7 @@
"no group" : "Keine Gruppe",
"Password successfully changed" : "Das Passwort wurde erfolgreich geändert",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist",
- "Could not change the users email" : "Die E-Mail Adresse des Nutzers konnte nicht geändert werden",
+ "Could not change the users email" : "Die E-Mail-Adresse des Nutzers konnte nicht geändert werden",
"A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden",
"Error creating user: {message}" : "Fehler beim Erstellen eines Benutzers: {message}",
"A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden",
@@ -141,8 +142,8 @@
"Sync clients" : "Sync-Clients",
"None" : "Keine",
"Login" : "Anmelden",
- "Plain" : "Plain",
- "NT LAN Manager" : "NT LAN Manager",
+ "Plain" : "Klartext",
+ "NT LAN Manager" : "NT-LAN-Manager",
"SSL/TLS" : "SSL/TLS",
"STARTTLS" : "STARTTLS",
"Email server" : "E-Mail-Server",
@@ -280,9 +281,9 @@
"Address" : "Adresse",
"Your postal address" : "Ihre Postadresse",
"Website" : "Webseite",
- "Your website" : "Ihre Webseite",
+ "Your website" : "Ihre Internetseite",
"Twitter" : "Twitter",
- "Your Twitter handle" : "Ihr twitter-handle",
+ "Your Twitter handle" : "Ihr Twitter-Handle",
"You are member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
"Password" : "Passwort",
"Current password" : "Aktuelles Passwort",
@@ -317,6 +318,7 @@
"Show last log in" : "Letzte Anmeldung anzeigen",
"Show user backend" : "Benutzer-Backend anzeigen",
"Send email to new user" : "E-Mail an neuen Benutzer senden",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.",
"Show email address" : "E-Mail Adresse anzeigen",
"E-Mail" : "E-Mail",
"Create" : "Erstellen",
@@ -342,7 +344,7 @@
"Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der admin-Gruppe löschen",
"Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden",
"Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden",
- "Are you really sure you want add \"{domain}\" as trusted domain?" : "Sind Sie sich wirklich sicher, dass Sie »{domain}« als vertrauenswürdige Domain hinzufügen möchten?",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Sind Sie sich wirklich sicher, dass Sie \"{domain}\" als vertrauenswürdige Domain hinzufügen möchten?",
"Please wait...." : "Bitte warten…",
"add group" : "Gruppe hinzufügen",
"Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Fehlerdiagnose)",
diff --git a/settings/l10n/el.js b/settings/l10n/el.js
index fe7eb978ac0..b6175dfde52 100644
--- a/settings/l10n/el.js
+++ b/settings/l10n/el.js
@@ -92,6 +92,7 @@ OC.L10N.register(
"Valid until {date}" : "Έγκυρο έως {date}",
"Delete" : "Διαγραφή",
"Local" : "Τοπικά",
+ "Only visible to you" : "Εμφανές μόνο σε εσάς",
"Contacts" : "Επαφές",
"Public" : "Δημόσιο",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
diff --git a/settings/l10n/el.json b/settings/l10n/el.json
index a744cde7a08..432d007bec1 100644
--- a/settings/l10n/el.json
+++ b/settings/l10n/el.json
@@ -90,6 +90,7 @@
"Valid until {date}" : "Έγκυρο έως {date}",
"Delete" : "Διαγραφή",
"Local" : "Τοπικά",
+ "Only visible to you" : "Εμφανές μόνο σε εσάς",
"Contacts" : "Επαφές",
"Public" : "Δημόσιο",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
diff --git a/settings/l10n/es.js b/settings/l10n/es.js
index 342ef8284f6..8e7e6384859 100644
--- a/settings/l10n/es.js
+++ b/settings/l10n/es.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Dirección de correo inválida",
"No valid group selected" : "No se ha seleccionado un grupo válido",
"A user with that name already exists." : "Ya existe un usuario con ese nombre.",
+ "To send a password link to the user an email address is required." : "Para enviar un enlace de contraseña al usuario, se requiere una dirección de correo electrónico.",
"Unable to create user." : "No se pudo crear el usuario.",
"Your %s account was created" : "Se ha creado su cuenta de %s",
"Unable to delete user." : "No se pudo eliminar el usuario.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Mostrar el último inicio de sesión",
"Show user backend" : "Mostrar motor de usuario",
"Send email to new user" : "Enviar correo al usuario nuevo",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Cuando la contraseña del nuevo usuario se deja vacía, un correo electrónico de activación con un enlace para establecer la contraseña se envía al usuario",
"Show email address" : "Mostrar dirección de correo electrónico",
"E-Mail" : "Correo electrónico",
"Create" : "Crear",
diff --git a/settings/l10n/es.json b/settings/l10n/es.json
index bbc1612cafe..a8140646b93 100644
--- a/settings/l10n/es.json
+++ b/settings/l10n/es.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Dirección de correo inválida",
"No valid group selected" : "No se ha seleccionado un grupo válido",
"A user with that name already exists." : "Ya existe un usuario con ese nombre.",
+ "To send a password link to the user an email address is required." : "Para enviar un enlace de contraseña al usuario, se requiere una dirección de correo electrónico.",
"Unable to create user." : "No se pudo crear el usuario.",
"Your %s account was created" : "Se ha creado su cuenta de %s",
"Unable to delete user." : "No se pudo eliminar el usuario.",
@@ -317,6 +318,7 @@
"Show last log in" : "Mostrar el último inicio de sesión",
"Show user backend" : "Mostrar motor de usuario",
"Send email to new user" : "Enviar correo al usuario nuevo",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Cuando la contraseña del nuevo usuario se deja vacía, un correo electrónico de activación con un enlace para establecer la contraseña se envía al usuario",
"Show email address" : "Mostrar dirección de correo electrónico",
"E-Mail" : "Correo electrónico",
"Create" : "Crear",
diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js
index ac332f20a21..a0d0a87460f 100644
--- a/settings/l10n/eu.js
+++ b/settings/l10n/eu.js
@@ -44,6 +44,18 @@ OC.L10N.register(
"Uninstalling ...." : "Desinstalatzen ...",
"Error while uninstalling app" : "Erroea izan da aplikazioa desinstalatzerakoan",
"Uninstall" : "Desinstalatu",
+ "Internet Explorer" : "Internet Explorer",
+ "Edge" : "Edge",
+ "Firefox" : "Firefox",
+ "Google Chrome" : "Google Chrome",
+ "Safari" : "Safari",
+ "Google Chrome for Android" : "Google Chrome for Android",
+ "iPhone iOS" : "iPhone iOS",
+ "iPad iOS" : "iPad iOS",
+ "iOS Client" : "iOS Client",
+ "Android Client" : "Android Client",
+ "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.",
+ "Press Ctrl-C to copy." : "Sakatu Ctrl-C kopiatzeko.",
"Valid until {date}" : "{date} arte baliogarria",
"Delete" : "Ezabatu",
"Select a profile picture" : "Profilaren irudia aukeratu",
@@ -69,6 +81,8 @@ OC.L10N.register(
"Login" : "Saio hasiera",
"Plain" : "Arrunta",
"NT LAN Manager" : "NT LAN Manager",
+ "SSL/TLS" : "SSL/TLS",
+ "STARTTLS" : "STARTTLS",
"This is used for sending out notifications." : "Hau jakinarazpenak bidaltzeko erabiltzen da.",
"Send mode" : "Bidaltzeko modua",
"Encryption" : "Enkriptazioa",
@@ -111,14 +125,38 @@ OC.L10N.register(
"Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara",
"Exclude groups from sharing" : "Baztertu taldeak partekatzean",
"These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu",
+ "Tips & tricks" : "Aholkuak eta trikimailuak",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.",
+ "How to do backups" : "Nola egin babes kopiak",
+ "Advanced monitoring" : "Monitorizazio aurreratua",
+ "Performance tuning" : "Errendimendu ezarpenak",
+ "Improving the config.php" : "config.php hobetzen",
+ "Theming" : "Itxura",
+ "Hardening and security guidance" : "Gogortze eta segurtasun gida",
+ "Developer documentation" : "Garatzailearen dokumentazioa",
+ "by %s" : "by %s",
+ "%s-licensed" : "%s-lizentziapean",
"Documentation:" : "Dokumentazioa:",
+ "User documentation" : "Erabiltzailearen dokumentazioa",
+ "Admin documentation" : "Administratzailearen dokumentazioa",
+ "Visit website" : "Web orria ikusi",
+ "Show description …" : "Erakutsi deskribapena ...",
+ "Hide description …" : "Ezkutatu deskribapena ...",
+ "This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.",
+ "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.",
+ "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:",
"Enable only for specific groups" : "Baimendu bakarri talde espezifikoetarako",
+ "Uninstall app" : "Desinstalatu aplikazioa",
+ "SSL Root Certificates" : "SSL Root Certificates",
"Common Name" : "Izen arrunta",
"Valid until" : "Data hau arte baliogarria",
"Issued By" : "Honek bidalita",
"Valid until %s" : "%s arte baliogarria",
+ "Import root certificate" : "Inportatu root ziurtagiria",
"Cheers!" : "Ongi izan!",
+ "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\nJakinarazi nahi dizugu, badaukazula %s kontua.\n\nZure erabiltzaile izena: %s \nSar zaitez: %s\n",
+ "Administrator documentation" : "Administratzaile dokumentazioa",
"Forum" : "Foroa",
"Profile picture" : "Profilaren irudia",
"Upload new" : "Igo berria",
diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json
index a7d45148ef3..5c43e15e1c6 100644
--- a/settings/l10n/eu.json
+++ b/settings/l10n/eu.json
@@ -42,6 +42,18 @@
"Uninstalling ...." : "Desinstalatzen ...",
"Error while uninstalling app" : "Erroea izan da aplikazioa desinstalatzerakoan",
"Uninstall" : "Desinstalatu",
+ "Internet Explorer" : "Internet Explorer",
+ "Edge" : "Edge",
+ "Firefox" : "Firefox",
+ "Google Chrome" : "Google Chrome",
+ "Safari" : "Safari",
+ "Google Chrome for Android" : "Google Chrome for Android",
+ "iPhone iOS" : "iPhone iOS",
+ "iPad iOS" : "iPad iOS",
+ "iOS Client" : "iOS Client",
+ "Android Client" : "Android Client",
+ "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.",
+ "Press Ctrl-C to copy." : "Sakatu Ctrl-C kopiatzeko.",
"Valid until {date}" : "{date} arte baliogarria",
"Delete" : "Ezabatu",
"Select a profile picture" : "Profilaren irudia aukeratu",
@@ -67,6 +79,8 @@
"Login" : "Saio hasiera",
"Plain" : "Arrunta",
"NT LAN Manager" : "NT LAN Manager",
+ "SSL/TLS" : "SSL/TLS",
+ "STARTTLS" : "STARTTLS",
"This is used for sending out notifications." : "Hau jakinarazpenak bidaltzeko erabiltzen da.",
"Send mode" : "Bidaltzeko modua",
"Encryption" : "Enkriptazioa",
@@ -109,14 +123,38 @@
"Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara",
"Exclude groups from sharing" : "Baztertu taldeak partekatzean",
"These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu",
+ "Tips & tricks" : "Aholkuak eta trikimailuak",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.",
+ "How to do backups" : "Nola egin babes kopiak",
+ "Advanced monitoring" : "Monitorizazio aurreratua",
+ "Performance tuning" : "Errendimendu ezarpenak",
+ "Improving the config.php" : "config.php hobetzen",
+ "Theming" : "Itxura",
+ "Hardening and security guidance" : "Gogortze eta segurtasun gida",
+ "Developer documentation" : "Garatzailearen dokumentazioa",
+ "by %s" : "by %s",
+ "%s-licensed" : "%s-lizentziapean",
"Documentation:" : "Dokumentazioa:",
+ "User documentation" : "Erabiltzailearen dokumentazioa",
+ "Admin documentation" : "Administratzailearen dokumentazioa",
+ "Visit website" : "Web orria ikusi",
+ "Show description …" : "Erakutsi deskribapena ...",
+ "Hide description …" : "Ezkutatu deskribapena ...",
+ "This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.",
+ "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.",
+ "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:",
"Enable only for specific groups" : "Baimendu bakarri talde espezifikoetarako",
+ "Uninstall app" : "Desinstalatu aplikazioa",
+ "SSL Root Certificates" : "SSL Root Certificates",
"Common Name" : "Izen arrunta",
"Valid until" : "Data hau arte baliogarria",
"Issued By" : "Honek bidalita",
"Valid until %s" : "%s arte baliogarria",
+ "Import root certificate" : "Inportatu root ziurtagiria",
"Cheers!" : "Ongi izan!",
+ "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\nJakinarazi nahi dizugu, badaukazula %s kontua.\n\nZure erabiltzaile izena: %s \nSar zaitez: %s\n",
+ "Administrator documentation" : "Administratzaile dokumentazioa",
"Forum" : "Foroa",
"Profile picture" : "Profilaren irudia",
"Upload new" : "Igo berria",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index 79c4cdf2651..031dd6a50c3 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Adresse e-mail non valide",
"No valid group selected" : "Aucun groupe valide sélectionné",
"A user with that name already exists." : "Un utilisateur à ce nom existe déjà.",
+ "To send a password link to the user an email address is required." : "Pour envoyer un mot de passe par lien à l'utilisateur, une adresse mail est requise.",
"Unable to create user." : "Impossible de créer l'utilisateur.",
"Your %s account was created" : "Votre compte %s a été créé",
"Unable to delete user." : "Impossible de supprimer l'utilisateur.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Montrer la dernière connexion",
"Show user backend" : "Montrer la source de l'identifiant",
"Send email to new user" : "Envoyer un e-mail aux utilisateurs créés",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quand le mot de passe du nouvel utilisateur est laissé vide, un mail d'activation avec un lien pour configurer le mot de passe est envoyé à l'utilisateur",
"Show email address" : "Afficher l'adresse e-mail",
"E-Mail" : "E-Mail",
"Create" : "Créer",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index b7fb28256bd..bf670540454 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Adresse e-mail non valide",
"No valid group selected" : "Aucun groupe valide sélectionné",
"A user with that name already exists." : "Un utilisateur à ce nom existe déjà.",
+ "To send a password link to the user an email address is required." : "Pour envoyer un mot de passe par lien à l'utilisateur, une adresse mail est requise.",
"Unable to create user." : "Impossible de créer l'utilisateur.",
"Your %s account was created" : "Votre compte %s a été créé",
"Unable to delete user." : "Impossible de supprimer l'utilisateur.",
@@ -317,6 +318,7 @@
"Show last log in" : "Montrer la dernière connexion",
"Show user backend" : "Montrer la source de l'identifiant",
"Send email to new user" : "Envoyer un e-mail aux utilisateurs créés",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quand le mot de passe du nouvel utilisateur est laissé vide, un mail d'activation avec un lien pour configurer le mot de passe est envoyé à l'utilisateur",
"Show email address" : "Afficher l'adresse e-mail",
"E-Mail" : "E-Mail",
"Create" : "Créer",
diff --git a/settings/l10n/ia.js b/settings/l10n/ia.js
index 168a792f5da..270cd80fa66 100644
--- a/settings/l10n/ia.js
+++ b/settings/l10n/ia.js
@@ -57,7 +57,7 @@ OC.L10N.register(
"Disable" : "Disactivar",
"Enable" : "Activar",
"Error while enabling app" : "Error durante activation del application...",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo torna le servitor instabile",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo face le servitor esser instabile",
"Updating...." : "Actualisante...",
"Error while updating app" : "Error durante actualisation del application",
"Updated" : "Actualisate",
@@ -88,6 +88,7 @@ OC.L10N.register(
"Not supported!" : "Non supportate!",
"Press ⌘-C to copy." : "Pulsa ⌘-C pro copiar.",
"Press Ctrl-C to copy." : "Pulsa Ctrl-C pro copiar.",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Un error occurreva. Per favor, incarga un certificato PEM codificate in ASCII",
"Valid until {date}" : "Valide usque {date}",
"Delete" : "Deler",
"Local" : "Local",
@@ -97,7 +98,7 @@ OC.L10N.register(
"Contacts" : "Contactos",
"Visible to local users and to trusted servers" : "Visibile a usatores local e a servitores fiduciari",
"Public" : "Public",
- "Select a profile picture" : "Selige un pictura de profilo",
+ "Select a profile picture" : "Selectiona un pictura de profilo",
"Very weak password" : "Contrasigno multo debile",
"Weak password" : "Contrasigno debile",
"So-so password" : "Contrasigno plus o minus acceptabile",
@@ -114,15 +115,39 @@ OC.L10N.register(
"Unable to add user to group {group}" : "Impossibile adder usator a gruppo {group}",
"Unable to remove user from group {group}" : "Impossibile remover usator de gruppo {group}",
"Add group" : "Adder gruppo",
+ "A valid password must be provided" : "Un contrasigno valide debe esser providite",
+ "A valid email must be provided" : "Un adresse de e-posta valide debe esser providite",
+ "__language_name__" : "Interlingua de IALA",
+ "Unlimited" : "Ilimitate",
"Personal info" : "Information personal",
"Sessions" : "Sessiones",
"App passwords" : "Contrasignos de applicationes",
+ "None" : "Nulle",
+ "SSL/TLS" : "SSL/TLS",
+ "STARTTLS" : "STARTTLS",
"Email server" : "Servitor de e-posta",
+ "Open documentation" : "Aperir documentation",
+ "This is used for sending out notifications." : "Isto es usate pro inviar notificationes.",
+ "Send mode" : "Modo de invio",
"Encryption" : "Cryptographia",
+ "Authentication required" : "Authentication requirite",
+ "Server address" : "Adresse del servitor",
+ "Port" : "Porto",
+ "Credentials" : "Datos de authentication",
+ "SMTP Username" : "Nomine de usator SMTP",
+ "SMTP Password" : "Contrasigno SMTP",
+ "Test email settings" : "Testar configurationes de e-posta",
+ "Send email" : "Inviar message de e-posta",
+ "Enable encryption" : "Activar cryptographia",
+ "Select default encryption module:" : "Selectionar modulo de cryptographia standard",
+ "Start migration" : "Initiar migration",
"Version" : "Version",
"days" : "dies",
"Tips & tricks" : "Consilios e maneos",
"Theming" : "Themas",
+ "Developer documentation" : "Documentation de disveloppator",
+ "by %s" : "per %s",
+ "%s-licensed" : "Licentiate como %s",
"Documentation:" : "Documentation:",
"User documentation" : "Documentation de usator",
"Admin documentation" : "Documentation de administrator",
@@ -130,6 +155,10 @@ OC.L10N.register(
"Report a bug" : "Reportar un defecto",
"Show description …" : "Monstrar description...",
"Hide description …" : "Celar description...",
+ "This app has an update available." : "Iste application ha un actualisation disponibile",
+ "Enable only for specific groups" : "Activar solmente a gruppos specific",
+ "Uninstall app" : "De-installar application",
+ "SSL Root Certificates" : "Certificatos Root SSL",
"Common Name" : "Nomine Commun",
"Valid until" : "Valide usque",
"Valid until %s" : "Valide usque %s",
@@ -137,10 +166,19 @@ OC.L10N.register(
"Administrator documentation" : "Documentation de administrator",
"Online documentation" : "Documentation in linea",
"Forum" : "Foro",
+ "Getting help" : "Obtener adjuta",
"Commercial support" : "Supporto commercial",
+ "Profile picture" : "Pictura de profilo",
"Upload new" : "Incargar nove",
+ "Select from Files" : "Selectionar de Files",
"Remove image" : "Remover imagine",
"Cancel" : "Cancellar",
+ "Choose as profile picture" : "Selectiona como pictura de profilo",
+ "Full name" : "Nomine complete",
+ "Email" : "E-posta",
+ "Your email address" : "Tu adresse de e-posta",
+ "Phone number" : "Numero de telephono",
+ "Your phone number" : "Tu numero de telephono",
"Address" : "Adresse",
"Your postal address" : "Tu adresse postal",
"Website" : "Sito web",
@@ -153,7 +191,12 @@ OC.L10N.register(
"Change password" : "Cambiar contrasigno",
"Language" : "Lingua",
"Help translate" : "Adjuta a traducer",
+ "Desktop client" : "Cliente de Scriptorio",
+ "Android app" : "Application Android",
+ "iOS app" : "Application iOS",
+ "Show First Run Wizard again" : "Monstrar le Assistente del Prime Execution de novo",
"Device" : "Dispositivo",
+ "Last activity" : "Ultime activitate",
"Passcodes that give an app or device permissions to access your account." : "Contrasignos que dona a tu application o dispositivo le permissiones pro acceder a tu conto.",
"Name" : "Nomine",
"App name" : "Nomine del application",
@@ -162,6 +205,11 @@ OC.L10N.register(
"Username" : "Nomine de usator",
"Done" : "Preste",
"Follow us on Google Plus!" : "Seque nos in Google Plus!",
+ "Subscribe to our twitter channel!" : "Subscribe a nostre canal Twitter!",
+ "Subscribe to our news feed!" : "Subscribe a nostre syndication de novas!",
+ "Show storage location" : "Monstrar loco de immagazinage",
+ "Send email to new user" : "Inviar message de e-posta a nove usator",
+ "Show email address" : "Monstrar adresse de e-posta",
"E-Mail" : "E-posta",
"Create" : "Crear",
"Group name" : "Nomine del gruppo",
@@ -177,6 +225,8 @@ OC.L10N.register(
"Download logfile" : "Discargar file de registro",
"More" : "Plus",
"Less" : "Minus",
+ "Uninstall App" : "De-installar Application",
+ "Enable experimental apps" : "Activar applicationes experimental",
"Add Group" : "Adder Gruppo",
"Group" : "Gruppo"
},
diff --git a/settings/l10n/ia.json b/settings/l10n/ia.json
index 9fae63fdaa2..0ab2919017c 100644
--- a/settings/l10n/ia.json
+++ b/settings/l10n/ia.json
@@ -55,7 +55,7 @@
"Disable" : "Disactivar",
"Enable" : "Activar",
"Error while enabling app" : "Error durante activation del application...",
- "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo torna le servitor instabile",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Error: iste application non pote esser activate proque illo face le servitor esser instabile",
"Updating...." : "Actualisante...",
"Error while updating app" : "Error durante actualisation del application",
"Updated" : "Actualisate",
@@ -86,6 +86,7 @@
"Not supported!" : "Non supportate!",
"Press ⌘-C to copy." : "Pulsa ⌘-C pro copiar.",
"Press Ctrl-C to copy." : "Pulsa Ctrl-C pro copiar.",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Un error occurreva. Per favor, incarga un certificato PEM codificate in ASCII",
"Valid until {date}" : "Valide usque {date}",
"Delete" : "Deler",
"Local" : "Local",
@@ -95,7 +96,7 @@
"Contacts" : "Contactos",
"Visible to local users and to trusted servers" : "Visibile a usatores local e a servitores fiduciari",
"Public" : "Public",
- "Select a profile picture" : "Selige un pictura de profilo",
+ "Select a profile picture" : "Selectiona un pictura de profilo",
"Very weak password" : "Contrasigno multo debile",
"Weak password" : "Contrasigno debile",
"So-so password" : "Contrasigno plus o minus acceptabile",
@@ -112,15 +113,39 @@
"Unable to add user to group {group}" : "Impossibile adder usator a gruppo {group}",
"Unable to remove user from group {group}" : "Impossibile remover usator de gruppo {group}",
"Add group" : "Adder gruppo",
+ "A valid password must be provided" : "Un contrasigno valide debe esser providite",
+ "A valid email must be provided" : "Un adresse de e-posta valide debe esser providite",
+ "__language_name__" : "Interlingua de IALA",
+ "Unlimited" : "Ilimitate",
"Personal info" : "Information personal",
"Sessions" : "Sessiones",
"App passwords" : "Contrasignos de applicationes",
+ "None" : "Nulle",
+ "SSL/TLS" : "SSL/TLS",
+ "STARTTLS" : "STARTTLS",
"Email server" : "Servitor de e-posta",
+ "Open documentation" : "Aperir documentation",
+ "This is used for sending out notifications." : "Isto es usate pro inviar notificationes.",
+ "Send mode" : "Modo de invio",
"Encryption" : "Cryptographia",
+ "Authentication required" : "Authentication requirite",
+ "Server address" : "Adresse del servitor",
+ "Port" : "Porto",
+ "Credentials" : "Datos de authentication",
+ "SMTP Username" : "Nomine de usator SMTP",
+ "SMTP Password" : "Contrasigno SMTP",
+ "Test email settings" : "Testar configurationes de e-posta",
+ "Send email" : "Inviar message de e-posta",
+ "Enable encryption" : "Activar cryptographia",
+ "Select default encryption module:" : "Selectionar modulo de cryptographia standard",
+ "Start migration" : "Initiar migration",
"Version" : "Version",
"days" : "dies",
"Tips & tricks" : "Consilios e maneos",
"Theming" : "Themas",
+ "Developer documentation" : "Documentation de disveloppator",
+ "by %s" : "per %s",
+ "%s-licensed" : "Licentiate como %s",
"Documentation:" : "Documentation:",
"User documentation" : "Documentation de usator",
"Admin documentation" : "Documentation de administrator",
@@ -128,6 +153,10 @@
"Report a bug" : "Reportar un defecto",
"Show description …" : "Monstrar description...",
"Hide description …" : "Celar description...",
+ "This app has an update available." : "Iste application ha un actualisation disponibile",
+ "Enable only for specific groups" : "Activar solmente a gruppos specific",
+ "Uninstall app" : "De-installar application",
+ "SSL Root Certificates" : "Certificatos Root SSL",
"Common Name" : "Nomine Commun",
"Valid until" : "Valide usque",
"Valid until %s" : "Valide usque %s",
@@ -135,10 +164,19 @@
"Administrator documentation" : "Documentation de administrator",
"Online documentation" : "Documentation in linea",
"Forum" : "Foro",
+ "Getting help" : "Obtener adjuta",
"Commercial support" : "Supporto commercial",
+ "Profile picture" : "Pictura de profilo",
"Upload new" : "Incargar nove",
+ "Select from Files" : "Selectionar de Files",
"Remove image" : "Remover imagine",
"Cancel" : "Cancellar",
+ "Choose as profile picture" : "Selectiona como pictura de profilo",
+ "Full name" : "Nomine complete",
+ "Email" : "E-posta",
+ "Your email address" : "Tu adresse de e-posta",
+ "Phone number" : "Numero de telephono",
+ "Your phone number" : "Tu numero de telephono",
"Address" : "Adresse",
"Your postal address" : "Tu adresse postal",
"Website" : "Sito web",
@@ -151,7 +189,12 @@
"Change password" : "Cambiar contrasigno",
"Language" : "Lingua",
"Help translate" : "Adjuta a traducer",
+ "Desktop client" : "Cliente de Scriptorio",
+ "Android app" : "Application Android",
+ "iOS app" : "Application iOS",
+ "Show First Run Wizard again" : "Monstrar le Assistente del Prime Execution de novo",
"Device" : "Dispositivo",
+ "Last activity" : "Ultime activitate",
"Passcodes that give an app or device permissions to access your account." : "Contrasignos que dona a tu application o dispositivo le permissiones pro acceder a tu conto.",
"Name" : "Nomine",
"App name" : "Nomine del application",
@@ -160,6 +203,11 @@
"Username" : "Nomine de usator",
"Done" : "Preste",
"Follow us on Google Plus!" : "Seque nos in Google Plus!",
+ "Subscribe to our twitter channel!" : "Subscribe a nostre canal Twitter!",
+ "Subscribe to our news feed!" : "Subscribe a nostre syndication de novas!",
+ "Show storage location" : "Monstrar loco de immagazinage",
+ "Send email to new user" : "Inviar message de e-posta a nove usator",
+ "Show email address" : "Monstrar adresse de e-posta",
"E-Mail" : "E-posta",
"Create" : "Crear",
"Group name" : "Nomine del gruppo",
@@ -175,6 +223,8 @@
"Download logfile" : "Discargar file de registro",
"More" : "Plus",
"Less" : "Minus",
+ "Uninstall App" : "De-installar Application",
+ "Enable experimental apps" : "Activar applicationes experimental",
"Add Group" : "Adder Gruppo",
"Group" : "Gruppo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/settings/l10n/lv.js b/settings/l10n/lv.js
index 120e640a25f..4efe1a37094 100644
--- a/settings/l10n/lv.js
+++ b/settings/l10n/lv.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Nepareiza e-pasta adrese",
"No valid group selected" : "Atlasītā grupa nav derīga",
"A user with that name already exists." : "Jau pastāv lietotājs ar šo vārdu.",
+ "To send a password link to the user an email address is required." : "Lai nosūtītu paroles saites lietotājam, e-pasta adrese jānorāda obligāti.",
"Unable to create user." : "Nevar izveidot lietotāju.",
"Your %s account was created" : "Konts %s ir izveidots",
"Unable to delete user." : "Nevar izdzēst lietotāju.",
@@ -124,7 +125,7 @@ OC.L10N.register(
"App passwords" : "Programmu paroles",
"Sync clients" : "Sinhronizācijas lietotnes",
"None" : "Nav",
- "Login" : "Ierakstīties",
+ "Login" : "Autorizēties",
"Plain" : "vienkāršs teksts",
"NT LAN Manager" : "NT LAN Pārvaldnieks",
"SSL/TLS" : "SSL/TLS",
@@ -174,6 +175,7 @@ OC.L10N.register(
"Allow sharing with groups" : "Atļaut koplietošanu ar grupu",
"Restrict users to only share with users in their groups" : "Ierobežot lietotājiem koplietot tikai ar lietotājiem savās grupās",
"Exclude groups from sharing" : "Izslēgt grupu no koplietošanas",
+ "Tips & tricks" : "Padomi un ieteikumi",
"This is particularly recommended when using the desktop client for file synchronisation." : "Tas ir īpaši ieteicams, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju.",
"How to do backups" : "Kā veikt dublēšanu",
"Advanced monitoring" : "Papildu uzraudzība",
@@ -194,6 +196,7 @@ OC.L10N.register(
"Enable only for specific groups" : "Iespējot tikai konkrētām grupām",
"Uninstall app" : "Atinstalēt programmu",
"SSL Root Certificates" : "SSL Root Sertifikāti",
+ "Common Name" : "Kopīgais nosaukums",
"Valid until" : "Derīgs līdz",
"Issued By" : "Izsniedza",
"Valid until %s" : "Derīgs līdz %s",
@@ -246,6 +249,7 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Drošības apsvērumu dēļ šī parole, tiks parādīta tikai vienreiz.",
"Username" : "Lietotājvārds",
"Done" : "Pabeigts",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Izstrādātās {communityopen}Nextcloud kopiena {linkclose}, {githubopen} avota kods {linkclose} licencēts saskaņā ar {licenseopen}AGPL{linkclose}.",
"Follow us on Google Plus!" : "Seko mums Google Plus!",
"Subscribe to our newsletter!" : "Abonēt mūsu jaunumus!",
"Show storage location" : "Rādīt krātuves atrašanās vietu",
diff --git a/settings/l10n/lv.json b/settings/l10n/lv.json
index b184963401d..09980c18d98 100644
--- a/settings/l10n/lv.json
+++ b/settings/l10n/lv.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Nepareiza e-pasta adrese",
"No valid group selected" : "Atlasītā grupa nav derīga",
"A user with that name already exists." : "Jau pastāv lietotājs ar šo vārdu.",
+ "To send a password link to the user an email address is required." : "Lai nosūtītu paroles saites lietotājam, e-pasta adrese jānorāda obligāti.",
"Unable to create user." : "Nevar izveidot lietotāju.",
"Your %s account was created" : "Konts %s ir izveidots",
"Unable to delete user." : "Nevar izdzēst lietotāju.",
@@ -122,7 +123,7 @@
"App passwords" : "Programmu paroles",
"Sync clients" : "Sinhronizācijas lietotnes",
"None" : "Nav",
- "Login" : "Ierakstīties",
+ "Login" : "Autorizēties",
"Plain" : "vienkāršs teksts",
"NT LAN Manager" : "NT LAN Pārvaldnieks",
"SSL/TLS" : "SSL/TLS",
@@ -172,6 +173,7 @@
"Allow sharing with groups" : "Atļaut koplietošanu ar grupu",
"Restrict users to only share with users in their groups" : "Ierobežot lietotājiem koplietot tikai ar lietotājiem savās grupās",
"Exclude groups from sharing" : "Izslēgt grupu no koplietošanas",
+ "Tips & tricks" : "Padomi un ieteikumi",
"This is particularly recommended when using the desktop client for file synchronisation." : "Tas ir īpaši ieteicams, ja, izmantojot darbvirsmas klientu, lai veiktu failu sinhronizāciju.",
"How to do backups" : "Kā veikt dublēšanu",
"Advanced monitoring" : "Papildu uzraudzība",
@@ -192,6 +194,7 @@
"Enable only for specific groups" : "Iespējot tikai konkrētām grupām",
"Uninstall app" : "Atinstalēt programmu",
"SSL Root Certificates" : "SSL Root Sertifikāti",
+ "Common Name" : "Kopīgais nosaukums",
"Valid until" : "Derīgs līdz",
"Issued By" : "Izsniedza",
"Valid until %s" : "Derīgs līdz %s",
@@ -244,6 +247,7 @@
"For security reasons this password will only be shown once." : "Drošības apsvērumu dēļ šī parole, tiks parādīta tikai vienreiz.",
"Username" : "Lietotājvārds",
"Done" : "Pabeigts",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Izstrādātās {communityopen}Nextcloud kopiena {linkclose}, {githubopen} avota kods {linkclose} licencēts saskaņā ar {licenseopen}AGPL{linkclose}.",
"Follow us on Google Plus!" : "Seko mums Google Plus!",
"Subscribe to our newsletter!" : "Abonēt mūsu jaunumus!",
"Show storage location" : "Rādīt krātuves atrašanās vietu",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index 69cd6ca9b00..a5cc8197fbd 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Ongeldig e-mailadres",
"No valid group selected" : "Geen geldige groep geselecteerd",
"A user with that name already exists." : "Er bestaat al een gebruiker met die naam.",
+ "To send a password link to the user an email address is required." : "Om een wachtwoord naar de gebruiker te versturen, is een e-mailadres verplicht.",
"Unable to create user." : "Kan gebruiker niet aanmaken.",
"Your %s account was created" : "Je %s account is aangemaakt",
"Unable to delete user." : "Kan de gebruiker niet verwijderen.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Toon laatste inlog",
"Show user backend" : "Toon backend gebruiker",
"Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Als het wachtwoord van de nieuwe gebruiker blanco blijft, wordt een activeringsmailtje naar de gebruiker gestuurd met een link om het wachtwoord in te stellen",
"Show email address" : "Toon e-mailadres",
"E-Mail" : "E-mail",
"Create" : "Aanmaken",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index eed5f670d51..60f9b3b99ea 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Ongeldig e-mailadres",
"No valid group selected" : "Geen geldige groep geselecteerd",
"A user with that name already exists." : "Er bestaat al een gebruiker met die naam.",
+ "To send a password link to the user an email address is required." : "Om een wachtwoord naar de gebruiker te versturen, is een e-mailadres verplicht.",
"Unable to create user." : "Kan gebruiker niet aanmaken.",
"Your %s account was created" : "Je %s account is aangemaakt",
"Unable to delete user." : "Kan de gebruiker niet verwijderen.",
@@ -317,6 +318,7 @@
"Show last log in" : "Toon laatste inlog",
"Show user backend" : "Toon backend gebruiker",
"Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Als het wachtwoord van de nieuwe gebruiker blanco blijft, wordt een activeringsmailtje naar de gebruiker gestuurd met een link om het wachtwoord in te stellen",
"Show email address" : "Toon e-mailadres",
"E-Mail" : "E-mail",
"Create" : "Aanmaken",
diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js
index 88629f8805d..f7ae2294ddd 100644
--- a/settings/l10n/pl.js
+++ b/settings/l10n/pl.js
@@ -13,6 +13,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was successfully updated." : "Zaplecze nie obsługuje zmiany hasła, ale klucz szyfrowania użytkownika został pomyślnie zaktualizowany.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.",
"A problem occurred, please check your log files (Error: %s)" : "Wystąpił problem, sprawdź logi (Error: %s) ",
"Migration Completed" : "Migracja Zakończona",
"Group already exists." : "Grupa już istnieje.",
@@ -24,7 +25,9 @@ OC.L10N.register(
"You need to set your user email before being able to send test emails." : "Musisz najpierw ustawić użytkownika e-mail, aby móc wysyłać wiadomości testowe.",
"Invalid request" : "Nieprawidłowe żądanie",
"Invalid mail address" : "Nieprawidłowy adres email",
+ "No valid group selected" : "Nie wybrano poprawnej grupy",
"A user with that name already exists." : "Użytkownik o tej nazwie już istnieje.",
+ "To send a password link to the user an email address is required." : "Aby wysłać link z hasłem innemu użytkownikowi wymagany jest adres e-mail.",
"Unable to create user." : "Nie można utworzyć użytkownika.",
"Your %s account was created" : "Twoje konto %s zostało stworzone",
"Unable to delete user." : "Nie można usunąć użytkownika.",
@@ -51,6 +54,10 @@ OC.L10N.register(
"_You have %n app update pending_::_You have %n app updates pending_" : ["Masz %n oczekującą aktualizację aplikacji","Masz %n oczekujące aktualizacje aplikacji","Masz %n oczekujących aktualizacji aplikacji","Masz %n oczekujących aktualizacji aplikacji"],
"No apps found for your version" : "Nie znaleziono aplikacji dla twojej wersji",
"The app will be downloaded from the app store" : "Aplikacja zostanie pobrana z App Store",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficjalne aplikacje są tworzone przez i wewnątrz społeczności. Oferują one centralną funkcjonalność i są gotowe do użycia produkcyjnego.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Zaakceptowane aplikacje są wytwarzane przez zaufanych programistów i przeszły pobieżne kontrole bezpieczeństwa. Są one aktywnie utrzymywane w repozytorium otwartego kodu i ich opiekunowie uznają je za stabilne do używania sporadycznego i normalnego.",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ta aplikacja nie została sprawdzona pod kątem bezpieczeństwa i jest nowa lub znana jako niestabilna. Instalujesz ją na własne ryzyko.",
+ "Enabling app …" : "Włączam aplikację...",
"Error while disabling app" : "Błąd podczas wyłączania aplikacji",
"Disable" : "Wyłącz",
"Enable" : "Włącz",
@@ -117,6 +124,8 @@ OC.L10N.register(
"undo" : "cofnij",
"never" : "nigdy",
"deleted {userName}" : "usunięto {userName}",
+ "Unable to add user to group {group}" : "Nie mogę dodać użytkownika do grupy {group}",
+ "Unable to remove user from group {group}" : "Nie mogę usunąć użytkownika z grupy {group}",
"Add group" : "Dodaj grupę",
"Invalid quota value \"{val}\"" : "Nieprawidłowa wartość quota \"{val}\"",
"no group" : "brak grupy",
@@ -159,20 +168,33 @@ OC.L10N.register(
"Server-side encryption" : "Szyfrowanie po stronie serwera",
"Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera",
"Please read carefully before activating server-side encryption: " : "Proszę przeczytać uważnie przed aktywowaniem szyfrowania po stronie serwera:",
+ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Jak tylko szyfrowanie zostanie włączone, wszystkie pliki wysłane na serwer będą od tej chwili szyfrowane na serwerze. Wyłączenie szyfrowania będzie możliwe jedynie później jeśli aktyny moduł szyfrowania wspiera taką funkcjonalność i wszystkie przedinstalacyjne warunki zostały spełnione (np. klucz odzyskiwania).",
+ "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Szyfrowanie samo w sobie nie gwarantuje bezpieczeństwa systemu. Proszę zajrzeć do dokumentacji po więcej informacji jak działa aplikacja szyfrująca i jakie są wspierane przypadki użycia.",
"Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze jest dobrze wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, że backupujesz też swoje klucze szyfrujące razem z innymi danymi.",
"This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?",
"Enable encryption" : "Włącz szyfrowanie",
"No encryption module loaded, please enable an encryption module in the app menu." : "Moduł szyfrowania nie jest załadowany, należy włączyć moduł szyfrowania w menu aplikacji.",
"Select default encryption module:" : "Wybierz domyślny moduł szyfrujący:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego. Proszę włączyć \"Domyślny moduł szyfrujący\" i uruchomić \"occ encryption:migrate\"",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.",
"Start migration" : "Rozpocznij migrację",
"Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Wydaje się, że PHP nie jest prawidłowo ustawione, aby odpytać system o zmienne środowiskowe. Test getenv(\"PATH\") zwraca tylko puste odpowiedzi.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Prosze sprawdzić w <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacji instalacji ↗</a> wpisy dotyczące konfiguracji PHP i konfiguracji PHP, kiedy używane jest php-fpm.",
+ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Wygląda na to, że ustawienia PHP ucinają bloki wklejonych dokumentów. To sprawi, że niektóre wbudowane aplikacje będą niedostępne.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.",
+ "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s jest zainstalowany poniżej wersji %2$s. Zalecamy podniesienie %1$s do wersji nowszej ze względu na stabilność i wydajność.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Brak modułu PHP „fileinfo”. Zalecamy włączenie tego modułu, aby uzyskać najlepsze wyniki podczas wykrywania typów MIME.",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakcyjne blokowanie plików jest wyłączone. Może to powodować problemy w działaniu. Włącz 'filelocking.enabled' w config.php, aby rozwiązać te problemy. Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>, aby uzyskać więcej informacji.",
"System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.",
"This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.",
"We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Zalecamy instalację na Twoim systemie komponentów wymaganych do obsługi języków: %s",
+ "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jeśli twoja instalacja nie jest zainstalowana w katalogu root domeny i używa systemowego crona, mogą wystąpić problemy z tworzeniem adresów URL. Aby rozwiązać ten problem, proszę ustawić w swoim pliku config.php opcję \"overwrite.cli.url\" wskazując ścieżkę instalacji (sugerujemy: \"%s\")",
"It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Nie było możliwe do wykonania przez cron CLI. Pojawiły się następujące błędy techniczne:",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Proszę sprawdzić dokładnie <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">przewodniki instalacji ↗</a>, oraz sprawdź błędy i ostrzeżenia w <a href=\"%s\">logu</a>.",
"All checks passed." : "Wszystkie testy przeszły poprawnie.",
"Cron" : "Cron",
"Last cron job execution: %s." : "Ostatnie wykonanie zadania przez cron: %s.",
@@ -182,6 +204,7 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php jest zarejestrowany w serwisie webcron do uruchamiania cron.php raz na 15 minut przez http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Użyj systemowej usługi cron do wywoływania cron.php co 15 minut.",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi być wykonywany przez użytkownika systemu \"%s\".",
+ "To run this you need the PHP posix extension. See {linkstart}PHP documentation{linkend} for more details." : "Aby to uruchomić potrzebujesz rozszerzenia posix do PHP. Po więcej informacji sprawdź {linkstart}dokumentację PHP{linkend}.",
"Version" : "Wersja",
"Sharing" : "Udostępnianie",
"Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania",
@@ -198,8 +221,12 @@ OC.L10N.register(
"Exclude groups from sharing" : "Wyklucz grupy z udostępniania",
"These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogli otrzymywać udostępnione udziały, ale nie do ich inicjowania.",
"Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Pozwól użytkownikowi na autouzupełnianie w oknie użytkownika. Jeśli ta opcja jest wyłączona, to pełna nazwa musi być wprowadzona.",
+ "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaż tekst wyłączeń odpowiedzialności (disclaimer) na stronie wysyłania z publicznego linku. (Będzie dostępny tylko kiedy lista plików będzie ukryta).",
+ "This text will be shown on the public link upload page when the file list is hidden." : "Ten tekst będzie widoczny na stronie wysyłania z publicznego linka kiedy lista plików będzie ukryta.",
"Tips & tricks" : "Porady i wskazówki",
+ "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Jest to szczególnie zalecane w przypadku korzystania z desktopowego klienta do synchronizacji plików.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Aby zmigrować do innej bazy danych użyj narzędzia z terminala: \"occ db:convert-type\" albo sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>.",
"How to do backups" : "Jak zrobić kopie zapasowe",
"Advanced monitoring" : "Zaawansowane monitorowanie",
"Performance tuning" : "Podnoszenie wydajności",
@@ -208,6 +235,7 @@ OC.L10N.register(
"Hardening and security guidance" : "Kierowanie i wzmacnianie bezpieczeństwa",
"Developer documentation" : "Dokumentacja dewelopera",
"by %s" : "przez %s",
+ "%s-licensed" : "%s-licencjonowany",
"Documentation:" : "Dokumentacja:",
"User documentation" : "Dokumentacja użytkownika",
"Admin documentation" : "Dokumentacja Administratora",
@@ -220,12 +248,16 @@ OC.L10N.register(
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej maksymalnej wersji Nextcloud. W przyszłości będzie to błąd.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Ta aplikacja nie może być zainstalowana, ponieważ nie są spełnione następujące zależności:",
"Enable only for specific groups" : "Włącz tylko dla określonych grup",
+ "Uninstall app" : "Odinstaluj aplikację",
+ "SSL Root Certificates" : "Korzeń certyfikatu SSL",
"Common Name" : "Nazwa CN",
"Valid until" : "Ważny do",
"Issued By" : "Wydany przez",
"Valid until %s" : "Ważny do %s",
"Import root certificate" : "Importuj główny certyfikat",
+ "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Hej,<br><br>informujemy cię, że posiadasz od teraz konto %s.<br><br>Twoja nazwa użytkownika: <strong>%s</strong><br>Zaloguj się: <strong><a href=\"%s\">%s</a></strong><br><br>",
"Cheers!" : "Pozdrawiam!",
+ "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hej,\n\ninformujemy cię, że posiadasz od teraz konto %s.\n\nTwoja nazwa użytkownika: %s\nZaloguj się: %s\n\n",
"Administrator documentation" : "Dokumentacja Administratora",
"Online documentation" : "Dokumentacja Online",
"Forum" : "Forum",
@@ -253,6 +285,7 @@ OC.L10N.register(
"Website" : "Strona WWW",
"Your website" : "Twoja strona WWW",
"Twitter" : "Twitter",
+ "Your Twitter handle" : "Twój Twitter:",
"You are member of the following groups:" : "Jesteś członkiem następujących grup:",
"Password" : "Hasło",
"Current password" : "Bieżące hasło",
@@ -264,6 +297,7 @@ OC.L10N.register(
"Desktop client" : "Klient na komputer",
"Android app" : "Aplikacja Android",
"iOS app" : "Aplikacja iOS",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Jeśli chcesz wesprzeć projekt {contributeopen} dołącz do programowania {linkclose} lub {contributeopen}głoś słowo{linkclose}!",
"Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia",
"Web, desktop and mobile clients currently logged in to your account." : "Aktualnie zalogowany na swoim koncie z Web, komputerów i mobilnych urządzeń.",
"Device" : "Urządzenie",
@@ -276,6 +310,7 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.",
"Username" : "Nazwa użytkownika",
"Done" : "Ukończono",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Wytworzone przez {communityopen}społeczność Nextclouda{linkclose}. {githubopen}Kod źródłowy{linkclose} jest udostępniony pod licencją {licenceopen}AGPL{linkclose}.",
"Follow us on Google Plus!" : "Śledź nas na Google Plus!",
"Like our facebook page!" : "Polub naszą stronę na Facebook!",
"Subscribe to our twitter channel!" : "Zapisz się do naszego kanału na Twitterze!",
@@ -285,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Pokaż ostatni login",
"Show user backend" : "Pokaż moduł użytkownika",
"Send email to new user" : "Wyślij email do nowego użytkownika",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kiedy hasło nowego użytkownika jest puste użytkownikowi jest wysyłany e-mieil aktywacyjny z linkiem do ustawienia hasła",
"Show email address" : "Pokaż adres email",
"E-Mail" : "E-mail",
"Create" : "Utwórz",
@@ -326,17 +362,22 @@ OC.L10N.register(
"The logfile is bigger than 100 MB. Downloading it may take some time!" : "Plik log jest większy niż 100MB. Ściąganie może trochę potrwać!",
"Allow users to send mail notification for shared files" : "Zezwól użytkownikom na wysyłanie powiadomień email dla udostępnionych plików",
"Allow users to send mail notification for shared files to other users" : "Zezwalaj użytkownikom na wysyłanie powiadomień pocztą dla współdzielonych plików do innych użytkowników",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite jest użyty jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Zwłaszcza podczas używania klienta desktopowego do synchronizacji plików używanie SQLite jest niezalecane.",
+ "Experimental applications ahead" : "Poniżej aplikacje eksperymentalne",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikacje eksperymentalne nie zostały sprawdzone pod kątem bezpieczeństwa. Mogą być niestabilne i są bardzo mocno rozwijane. Instalowanie ich może spowodować utratę danych lub naruszenie bezpieczeństwa.",
"Uninstall App" : "Odinstaluj aplikację",
"Enable experimental apps" : "Włącz eksperymentalne aplikacje",
"Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Witaj,<br><br>informujemy, że teraz masz konto na %s .<br><br>Twoja nazwa użytkownika: %s<br>Dostęp pod adresem: <a href=\"%s\">%s</a><br><br>",
"Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Witaj,\n\ninformujemy, że teraz masz konto na %s .\n\nTwoja nazwa użytkownika:: %s\nDostęp pod adresem: %s\n\n",
+ "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\t<or></or>\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jeśli chcesz wesprzeć projekt\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">dołącz do programowania</a>\n\t\t<or></or>\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">głoś słowo</a>!",
"Add Group" : "Dodaj grupę",
"Group" : "Grupa",
- "Default Quota" : "Domyślny udział",
+ "Default Quota" : "Domyślny limit",
"Full Name" : "Pełna nazwa",
"Group Admin for" : "Grupa Admin dla",
"Storage Location" : "Lokalizacja magazynu",
- "User Backend" : "Moduł użytkownika",
+ "User Backend" : "Backend użytkownika",
"Last Login" : "Ostatnio zalogowany"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json
index 42cb0ba2132..c97c4ff8278 100644
--- a/settings/l10n/pl.json
+++ b/settings/l10n/pl.json
@@ -11,6 +11,7 @@
"Backend doesn't support password change, but the user's encryption key was successfully updated." : "Zaplecze nie obsługuje zmiany hasła, ale klucz szyfrowania użytkownika został pomyślnie zaktualizowany.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.",
"A problem occurred, please check your log files (Error: %s)" : "Wystąpił problem, sprawdź logi (Error: %s) ",
"Migration Completed" : "Migracja Zakończona",
"Group already exists." : "Grupa już istnieje.",
@@ -22,7 +23,9 @@
"You need to set your user email before being able to send test emails." : "Musisz najpierw ustawić użytkownika e-mail, aby móc wysyłać wiadomości testowe.",
"Invalid request" : "Nieprawidłowe żądanie",
"Invalid mail address" : "Nieprawidłowy adres email",
+ "No valid group selected" : "Nie wybrano poprawnej grupy",
"A user with that name already exists." : "Użytkownik o tej nazwie już istnieje.",
+ "To send a password link to the user an email address is required." : "Aby wysłać link z hasłem innemu użytkownikowi wymagany jest adres e-mail.",
"Unable to create user." : "Nie można utworzyć użytkownika.",
"Your %s account was created" : "Twoje konto %s zostało stworzone",
"Unable to delete user." : "Nie można usunąć użytkownika.",
@@ -49,6 +52,10 @@
"_You have %n app update pending_::_You have %n app updates pending_" : ["Masz %n oczekującą aktualizację aplikacji","Masz %n oczekujące aktualizacje aplikacji","Masz %n oczekujących aktualizacji aplikacji","Masz %n oczekujących aktualizacji aplikacji"],
"No apps found for your version" : "Nie znaleziono aplikacji dla twojej wersji",
"The app will be downloaded from the app store" : "Aplikacja zostanie pobrana z App Store",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficjalne aplikacje są tworzone przez i wewnątrz społeczności. Oferują one centralną funkcjonalność i są gotowe do użycia produkcyjnego.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Zaakceptowane aplikacje są wytwarzane przez zaufanych programistów i przeszły pobieżne kontrole bezpieczeństwa. Są one aktywnie utrzymywane w repozytorium otwartego kodu i ich opiekunowie uznają je za stabilne do używania sporadycznego i normalnego.",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ta aplikacja nie została sprawdzona pod kątem bezpieczeństwa i jest nowa lub znana jako niestabilna. Instalujesz ją na własne ryzyko.",
+ "Enabling app …" : "Włączam aplikację...",
"Error while disabling app" : "Błąd podczas wyłączania aplikacji",
"Disable" : "Wyłącz",
"Enable" : "Włącz",
@@ -115,6 +122,8 @@
"undo" : "cofnij",
"never" : "nigdy",
"deleted {userName}" : "usunięto {userName}",
+ "Unable to add user to group {group}" : "Nie mogę dodać użytkownika do grupy {group}",
+ "Unable to remove user from group {group}" : "Nie mogę usunąć użytkownika z grupy {group}",
"Add group" : "Dodaj grupę",
"Invalid quota value \"{val}\"" : "Nieprawidłowa wartość quota \"{val}\"",
"no group" : "brak grupy",
@@ -157,20 +166,33 @@
"Server-side encryption" : "Szyfrowanie po stronie serwera",
"Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera",
"Please read carefully before activating server-side encryption: " : "Proszę przeczytać uważnie przed aktywowaniem szyfrowania po stronie serwera:",
+ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Jak tylko szyfrowanie zostanie włączone, wszystkie pliki wysłane na serwer będą od tej chwili szyfrowane na serwerze. Wyłączenie szyfrowania będzie możliwe jedynie później jeśli aktyny moduł szyfrowania wspiera taką funkcjonalność i wszystkie przedinstalacyjne warunki zostały spełnione (np. klucz odzyskiwania).",
+ "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Szyfrowanie samo w sobie nie gwarantuje bezpieczeństwa systemu. Proszę zajrzeć do dokumentacji po więcej informacji jak działa aplikacja szyfrująca i jakie są wspierane przypadki użycia.",
"Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze jest dobrze wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, że backupujesz też swoje klucze szyfrujące razem z innymi danymi.",
"This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?",
"Enable encryption" : "Włącz szyfrowanie",
"No encryption module loaded, please enable an encryption module in the app menu." : "Moduł szyfrowania nie jest załadowany, należy włączyć moduł szyfrowania w menu aplikacji.",
"Select default encryption module:" : "Wybierz domyślny moduł szyfrujący:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego. Proszę włączyć \"Domyślny moduł szyfrujący\" i uruchomić \"occ encryption:migrate\"",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.",
"Start migration" : "Rozpocznij migrację",
"Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Wydaje się, że PHP nie jest prawidłowo ustawione, aby odpytać system o zmienne środowiskowe. Test getenv(\"PATH\") zwraca tylko puste odpowiedzi.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Prosze sprawdzić w <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacji instalacji ↗</a> wpisy dotyczące konfiguracji PHP i konfiguracji PHP, kiedy używane jest php-fpm.",
+ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Została włączona konfiguracja Read-Only. Zapobiegnie to ustawieniu niektórych konfiguracji poprzez interfejs web. Ponadto plikowi muszą zostać nadane prawa zapisu ręcznie dla każdej aktualizacji.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Wygląda na to, że ustawienia PHP ucinają bloki wklejonych dokumentów. To sprawi, że niektóre wbudowane aplikacje będą niedostępne.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.",
+ "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s jest zainstalowany poniżej wersji %2$s. Zalecamy podniesienie %1$s do wersji nowszej ze względu na stabilność i wydajność.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Brak modułu PHP „fileinfo”. Zalecamy włączenie tego modułu, aby uzyskać najlepsze wyniki podczas wykrywania typów MIME.",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakcyjne blokowanie plików jest wyłączone. Może to powodować problemy w działaniu. Włącz 'filelocking.enabled' w config.php, aby rozwiązać te problemy. Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>, aby uzyskać więcej informacji.",
"System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.",
"This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.",
"We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Zalecamy instalację na Twoim systemie komponentów wymaganych do obsługi języków: %s",
+ "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jeśli twoja instalacja nie jest zainstalowana w katalogu root domeny i używa systemowego crona, mogą wystąpić problemy z tworzeniem adresów URL. Aby rozwiązać ten problem, proszę ustawić w swoim pliku config.php opcję \"overwrite.cli.url\" wskazując ścieżkę instalacji (sugerujemy: \"%s\")",
"It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Nie było możliwe do wykonania przez cron CLI. Pojawiły się następujące błędy techniczne:",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Proszę sprawdzić dokładnie <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">przewodniki instalacji ↗</a>, oraz sprawdź błędy i ostrzeżenia w <a href=\"%s\">logu</a>.",
"All checks passed." : "Wszystkie testy przeszły poprawnie.",
"Cron" : "Cron",
"Last cron job execution: %s." : "Ostatnie wykonanie zadania przez cron: %s.",
@@ -180,6 +202,7 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php jest zarejestrowany w serwisie webcron do uruchamiania cron.php raz na 15 minut przez http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Użyj systemowej usługi cron do wywoływania cron.php co 15 minut.",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi być wykonywany przez użytkownika systemu \"%s\".",
+ "To run this you need the PHP posix extension. See {linkstart}PHP documentation{linkend} for more details." : "Aby to uruchomić potrzebujesz rozszerzenia posix do PHP. Po więcej informacji sprawdź {linkstart}dokumentację PHP{linkend}.",
"Version" : "Wersja",
"Sharing" : "Udostępnianie",
"Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania",
@@ -196,8 +219,12 @@
"Exclude groups from sharing" : "Wyklucz grupy z udostępniania",
"These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogli otrzymywać udostępnione udziały, ale nie do ich inicjowania.",
"Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Pozwól użytkownikowi na autouzupełnianie w oknie użytkownika. Jeśli ta opcja jest wyłączona, to pełna nazwa musi być wprowadzona.",
+ "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaż tekst wyłączeń odpowiedzialności (disclaimer) na stronie wysyłania z publicznego linku. (Będzie dostępny tylko kiedy lista plików będzie ukryta).",
+ "This text will be shown on the public link upload page when the file list is hidden." : "Ten tekst będzie widoczny na stronie wysyłania z publicznego linka kiedy lista plików będzie ukryta.",
"Tips & tricks" : "Porady i wskazówki",
+ "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Jest to szczególnie zalecane w przypadku korzystania z desktopowego klienta do synchronizacji plików.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Aby zmigrować do innej bazy danych użyj narzędzia z terminala: \"occ db:convert-type\" albo sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>.",
"How to do backups" : "Jak zrobić kopie zapasowe",
"Advanced monitoring" : "Zaawansowane monitorowanie",
"Performance tuning" : "Podnoszenie wydajności",
@@ -206,6 +233,7 @@
"Hardening and security guidance" : "Kierowanie i wzmacnianie bezpieczeństwa",
"Developer documentation" : "Dokumentacja dewelopera",
"by %s" : "przez %s",
+ "%s-licensed" : "%s-licencjonowany",
"Documentation:" : "Dokumentacja:",
"User documentation" : "Dokumentacja użytkownika",
"Admin documentation" : "Dokumentacja Administratora",
@@ -218,12 +246,16 @@
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej maksymalnej wersji Nextcloud. W przyszłości będzie to błąd.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Ta aplikacja nie może być zainstalowana, ponieważ nie są spełnione następujące zależności:",
"Enable only for specific groups" : "Włącz tylko dla określonych grup",
+ "Uninstall app" : "Odinstaluj aplikację",
+ "SSL Root Certificates" : "Korzeń certyfikatu SSL",
"Common Name" : "Nazwa CN",
"Valid until" : "Ważny do",
"Issued By" : "Wydany przez",
"Valid until %s" : "Ważny do %s",
"Import root certificate" : "Importuj główny certyfikat",
+ "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Hej,<br><br>informujemy cię, że posiadasz od teraz konto %s.<br><br>Twoja nazwa użytkownika: <strong>%s</strong><br>Zaloguj się: <strong><a href=\"%s\">%s</a></strong><br><br>",
"Cheers!" : "Pozdrawiam!",
+ "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hej,\n\ninformujemy cię, że posiadasz od teraz konto %s.\n\nTwoja nazwa użytkownika: %s\nZaloguj się: %s\n\n",
"Administrator documentation" : "Dokumentacja Administratora",
"Online documentation" : "Dokumentacja Online",
"Forum" : "Forum",
@@ -251,6 +283,7 @@
"Website" : "Strona WWW",
"Your website" : "Twoja strona WWW",
"Twitter" : "Twitter",
+ "Your Twitter handle" : "Twój Twitter:",
"You are member of the following groups:" : "Jesteś członkiem następujących grup:",
"Password" : "Hasło",
"Current password" : "Bieżące hasło",
@@ -262,6 +295,7 @@
"Desktop client" : "Klient na komputer",
"Android app" : "Aplikacja Android",
"iOS app" : "Aplikacja iOS",
+ "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Jeśli chcesz wesprzeć projekt {contributeopen} dołącz do programowania {linkclose} lub {contributeopen}głoś słowo{linkclose}!",
"Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia",
"Web, desktop and mobile clients currently logged in to your account." : "Aktualnie zalogowany na swoim koncie z Web, komputerów i mobilnych urządzeń.",
"Device" : "Urządzenie",
@@ -274,6 +308,7 @@
"For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.",
"Username" : "Nazwa użytkownika",
"Done" : "Ukończono",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Wytworzone przez {communityopen}społeczność Nextclouda{linkclose}. {githubopen}Kod źródłowy{linkclose} jest udostępniony pod licencją {licenceopen}AGPL{linkclose}.",
"Follow us on Google Plus!" : "Śledź nas na Google Plus!",
"Like our facebook page!" : "Polub naszą stronę na Facebook!",
"Subscribe to our twitter channel!" : "Zapisz się do naszego kanału na Twitterze!",
@@ -283,6 +318,7 @@
"Show last log in" : "Pokaż ostatni login",
"Show user backend" : "Pokaż moduł użytkownika",
"Send email to new user" : "Wyślij email do nowego użytkownika",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kiedy hasło nowego użytkownika jest puste użytkownikowi jest wysyłany e-mieil aktywacyjny z linkiem do ustawienia hasła",
"Show email address" : "Pokaż adres email",
"E-Mail" : "E-mail",
"Create" : "Utwórz",
@@ -324,17 +360,22 @@
"The logfile is bigger than 100 MB. Downloading it may take some time!" : "Plik log jest większy niż 100MB. Ściąganie może trochę potrwać!",
"Allow users to send mail notification for shared files" : "Zezwól użytkownikom na wysyłanie powiadomień email dla udostępnionych plików",
"Allow users to send mail notification for shared files to other users" : "Zezwalaj użytkownikom na wysyłanie powiadomień pocztą dla współdzielonych plików do innych użytkowników",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite jest użyty jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Zwłaszcza podczas używania klienta desktopowego do synchronizacji plików używanie SQLite jest niezalecane.",
+ "Experimental applications ahead" : "Poniżej aplikacje eksperymentalne",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikacje eksperymentalne nie zostały sprawdzone pod kątem bezpieczeństwa. Mogą być niestabilne i są bardzo mocno rozwijane. Instalowanie ich może spowodować utratę danych lub naruszenie bezpieczeństwa.",
"Uninstall App" : "Odinstaluj aplikację",
"Enable experimental apps" : "Włącz eksperymentalne aplikacje",
"Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Witaj,<br><br>informujemy, że teraz masz konto na %s .<br><br>Twoja nazwa użytkownika: %s<br>Dostęp pod adresem: <a href=\"%s\">%s</a><br><br>",
"Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Witaj,\n\ninformujemy, że teraz masz konto na %s .\n\nTwoja nazwa użytkownika:: %s\nDostęp pod adresem: %s\n\n",
+ "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\t<or></or>\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jeśli chcesz wesprzeć projekt\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">dołącz do programowania</a>\n\t\t<or></or>\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">głoś słowo</a>!",
"Add Group" : "Dodaj grupę",
"Group" : "Grupa",
- "Default Quota" : "Domyślny udział",
+ "Default Quota" : "Domyślny limit",
"Full Name" : "Pełna nazwa",
"Group Admin for" : "Grupa Admin dla",
"Storage Location" : "Lokalizacja magazynu",
- "User Backend" : "Moduł użytkownika",
+ "User Backend" : "Backend użytkownika",
"Last Login" : "Ostatnio zalogowany"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index e53bf31fedc..291b153b3fa 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Endereço de e-mail inválido",
"No valid group selected" : "Nenhum grupo válido foi selecionado",
"A user with that name already exists." : "Um usuário com esse nome já existe.",
+ "To send a password link to the user an email address is required." : "Para envio da senha ao usuário um endereço de email é necessário.",
"Unable to create user." : "Não é possível criar usuário.",
"Your %s account was created" : "Sua conta %s foi criada",
"Unable to delete user." : "Não é possível excluir o usuário.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Mostrar o último acesso",
"Show user backend" : "Mostrar administrador do usuário",
"Send email to new user" : "Enviar um email para o novo usuário",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando a senha do novo usuário é deixada em branco, um e-mail de ativação com um link para definir a senha é enviado para o usuário",
"Show email address" : "Mostrar o endereço de email",
"E-Mail" : "E-Mail",
"Create" : "Criar",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index ce939d03a0f..f854279805c 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Endereço de e-mail inválido",
"No valid group selected" : "Nenhum grupo válido foi selecionado",
"A user with that name already exists." : "Um usuário com esse nome já existe.",
+ "To send a password link to the user an email address is required." : "Para envio da senha ao usuário um endereço de email é necessário.",
"Unable to create user." : "Não é possível criar usuário.",
"Your %s account was created" : "Sua conta %s foi criada",
"Unable to delete user." : "Não é possível excluir o usuário.",
@@ -317,6 +318,7 @@
"Show last log in" : "Mostrar o último acesso",
"Show user backend" : "Mostrar administrador do usuário",
"Send email to new user" : "Enviar um email para o novo usuário",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando a senha do novo usuário é deixada em branco, um e-mail de ativação com um link para definir a senha é enviado para o usuário",
"Show email address" : "Mostrar o endereço de email",
"E-Mail" : "E-Mail",
"Create" : "Criar",
diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js
index a44f2b1b9a1..1ac7339052b 100644
--- a/settings/l10n/ru.js
+++ b/settings/l10n/ru.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Invalid mail address" : "Некорректный адрес электронной почты",
"No valid group selected" : "Не выбрана верная группа",
"A user with that name already exists." : "Пользователь с таким именем уже существует.",
+ "To send a password link to the user an email address is required." : "Для отправки пользователю запароленный ссылки требуется указать адрес эл.почты.",
"Unable to create user." : "Невозможно создать пользователя.",
"Your %s account was created" : "Учетная запись %s создана",
"Unable to delete user." : "Невозможно удалить пользователя.",
@@ -319,6 +320,7 @@ OC.L10N.register(
"Show last log in" : "Показать последний вход в систему",
"Show user backend" : "Показать механизм учёта пользователей",
"Send email to new user" : "Отправлять письмо новому пользователю",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Если поле пароля нового пользователя оставить пустым, то пользователю будет отправлено эл.письмо, содержащее ссылку на страницу установки пароля.",
"Show email address" : "Показывать адрес электронной почты",
"E-Mail" : "Почта",
"Create" : "Создать",
diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json
index 2b4830cecab..6c87b573c18 100644
--- a/settings/l10n/ru.json
+++ b/settings/l10n/ru.json
@@ -25,6 +25,7 @@
"Invalid mail address" : "Некорректный адрес электронной почты",
"No valid group selected" : "Не выбрана верная группа",
"A user with that name already exists." : "Пользователь с таким именем уже существует.",
+ "To send a password link to the user an email address is required." : "Для отправки пользователю запароленный ссылки требуется указать адрес эл.почты.",
"Unable to create user." : "Невозможно создать пользователя.",
"Your %s account was created" : "Учетная запись %s создана",
"Unable to delete user." : "Невозможно удалить пользователя.",
@@ -317,6 +318,7 @@
"Show last log in" : "Показать последний вход в систему",
"Show user backend" : "Показать механизм учёта пользователей",
"Send email to new user" : "Отправлять письмо новому пользователю",
+ "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Если поле пароля нового пользователя оставить пустым, то пользователю будет отправлено эл.письмо, содержащее ссылку на страницу установки пароля.",
"Show email address" : "Показывать адрес электронной почты",
"E-Mail" : "Почта",
"Create" : "Создать",
diff --git a/settings/templates/users/main.php b/settings/templates/users/main.php
index b363a4c4da8..59ddf6a1dd7 100644
--- a/settings/templates/users/main.php
+++ b/settings/templates/users/main.php
@@ -72,6 +72,9 @@ translation('settings');
<?php p($l->t('Send email to new user')) ?>
</label>
</p>
+ <p class="info-text">
+ <?php p($l->t('When the password of the new user is left empty an activation email with a link to set the password is send to the user')) ?>
+ </p>
<p>
<input type="checkbox" name="EmailAddress" value="EmailAddress" id="CheckboxEmailAddress"
class="checkbox" <?php if ($_['show_email'] === 'true') print_unescaped('checked="checked"'); ?> />
diff --git a/tests/Settings/Controller/UsersControllerTest.php b/tests/Settings/Controller/UsersControllerTest.php
index 4f10fed1a2f..3cdde1b2d27 100644
--- a/tests/Settings/Controller/UsersControllerTest.php
+++ b/tests/Settings/Controller/UsersControllerTest.php
@@ -16,6 +16,7 @@ use OC\Settings\Controller\UsersController;
use OCP\App\IAppManager;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IAvatar;
use OCP\IAvatarManager;
use OCP\IConfig;
@@ -29,6 +30,8 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Mail\IMailer;
+use OCP\Security\ICrypto;
+use OCP\Security\ISecureRandom;
/**
* @group DB
@@ -59,8 +62,14 @@ class UsersControllerTest extends \Test\TestCase {
private $avatarManager;
/** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l;
- /** @var AccountManager | \PHPUnit_Framework_MockObject_MockObject */
+ /** @var AccountManager | \PHPUnit_Framework_MockObject_MockObject */
private $accountManager;
+ /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject */
+ private $secureRandom;
+ /** @var ITimeFactory | \PHPUnit_Framework_MockObject_MockObject */
+ private $timeFactory;
+ /** @var ICrypto | \PHPUnit_Framework_MockObject_MockObject */
+ private $crypto;
protected function setUp() {
parent::setUp();
@@ -76,6 +85,9 @@ class UsersControllerTest extends \Test\TestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->avatarManager = $this->createMock(IAvatarManager::class);
$this->accountManager = $this->createMock(AccountManager::class);
+ $this->secureRandom = $this->createMock(ISecureRandom::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
+ $this->crypto = $this->createMock(ICrypto::class);
$this->l = $this->createMock(IL10N::class);
$this->l->method('t')
->will($this->returnCallback(function ($text, $parameters = []) {
@@ -120,7 +132,10 @@ class UsersControllerTest extends \Test\TestCase {
$this->urlGenerator,
$this->appManager,
$this->avatarManager,
- $this->accountManager
+ $this->accountManager,
+ $this->secureRandom,
+ $this->timeFactory,
+ $this->crypto
);
} else {
return $this->getMockBuilder(UsersController::class)
@@ -141,7 +156,10 @@ class UsersControllerTest extends \Test\TestCase {
$this->urlGenerator,
$this->appManager,
$this->avatarManager,
- $this->accountManager
+ $this->accountManager,
+ $this->secureRandom,
+ $this->timeFactory,
+ $this->crypto
]
)->setMethods($mockedMethods)->getMock();
}
@@ -2227,4 +2245,148 @@ class UsersControllerTest extends \Test\TestCase {
$response = $controller->setEMailAddress($user->getUID(), $mailAddress);
$this->assertSame($responseCode, $response->getStatus());
}
+
+ public function testCreateUnsuccessfulWithoutPasswordAndEmail() {
+ $controller = $this->getController(true);
+
+ $expectedResponse = new DataResponse(
+ array(
+ 'message' => 'To send a password link to the user an email address is required.'
+ ),
+ Http::STATUS_UNPROCESSABLE_ENTITY
+ );
+ $response = $controller->create('foo', '', array(), '');
+ $this->assertEquals($expectedResponse, $response);
+ }
+
+
+
+ public function testCreateSuccessfulWithoutPasswordAndWithEmail() {
+ $controller = $this->getController(true);
+
+ $user = $this->getMockBuilder('\OC\User\User')
+ ->disableOriginalConstructor()->getMock();
+ $user
+ ->method('getHome')
+ ->will($this->returnValue('/home/user'));
+ $user
+ ->method('getUID')
+ ->will($this->returnValue('foo'));
+ $user
+ ->expects($this->once())
+ ->method('getBackendClassName')
+ ->will($this->returnValue('bar'));
+
+ $this->userManager
+ ->expects($this->once())
+ ->method('createUser')
+ ->will($this->onConsecutiveCalls($user));
+
+ $subadmin = $this->getMockBuilder('\OC\SubAdmin')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $subadmin
+ ->expects($this->any())
+ ->method('getSubAdminsGroups')
+ ->with($user)
+ ->will($this->returnValue([]));
+ $this->groupManager
+ ->expects($this->any())
+ ->method('getSubAdmin')
+ ->will($this->returnValue($subadmin));
+
+ $this->secureRandom
+ ->expects($this->at(0))
+ ->method('generate')
+ ->with(32)
+ ->will($this->returnValue('abc123'));
+ $this->secureRandom
+ ->expects($this->at(1))
+ ->method('generate')
+ ->with(21,
+ ISecureRandom::CHAR_DIGITS .
+ ISecureRandom::CHAR_LOWER .
+ ISecureRandom::CHAR_UPPER)
+ ->will($this->returnValue('mytoken'));
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('linkToRouteAbsolute')
+ ->with('core.lost.resetform', ['userId' => 'foo', 'token' => 'mytoken'])
+ ->will($this->returnValue('link-with-my-token'));
+
+ $controller = $this->getController(true);
+ $message = $this->getMockBuilder('\OC\Mail\Message')
+ ->disableOriginalConstructor()->getMock();
+ $message
+ ->expects($this->at(0))
+ ->method('setTo')
+ ->with(['abc@example.org' => 'foo']);
+ $message
+ ->expects($this->at(1))
+ ->method('setSubject')
+ ->with('Your account was created');
+ $htmlBody = new Http\TemplateResponse(
+ 'settings',
+ 'email.new_user',
+ [
+ 'username' => 'foo',
+ 'url' => 'link-with-my-token',
+ ],
+ 'blank'
+ );
+ $message
+ ->expects($this->at(2))
+ ->method('setHtmlBody')
+ ->with($htmlBody->render());
+ $plainBody = new Http\TemplateResponse(
+ 'settings',
+ 'email.new_user_plain_text',
+ [
+ 'username' => 'foo',
+ 'url' => 'link-with-my-token',
+ ],
+ 'blank'
+ );
+ $message
+ ->expects($this->at(3))
+ ->method('setPlainBody')
+ ->with($plainBody->render());
+ $message
+ ->expects($this->at(4))
+ ->method('setFrom')
+ ->with(['no-reply@owncloud.com' => null]);
+
+ $this->mailer
+ ->expects($this->at(0))
+ ->method('validateMailAddress')
+ ->with('abc@example.org')
+ ->will($this->returnValue(true));
+ $this->mailer
+ ->expects($this->at(1))
+ ->method('createMessage')
+ ->will($this->returnValue($message));
+ $this->mailer
+ ->expects($this->at(2))
+ ->method('send')
+ ->with($message);
+
+ $expectedResponse = new DataResponse(
+ array(
+ 'name' => 'foo',
+ 'groups' => null,
+ 'storageLocation' => '/home/user',
+ 'backend' => 'bar',
+ 'lastLogin' => null,
+ 'displayname' => null,
+ 'quota' => null,
+ 'subadmin' => array(),
+ 'email' => null,
+ 'isRestoreDisabled' => false,
+ 'isAvatarAvailable' => true,
+ ),
+ Http::STATUS_CREATED
+ );
+ $response = $controller->create('foo', '', array(), 'abc@example.org');
+ $this->assertEquals($expectedResponse, $response);
+ }
}